MCPcopy Index your code
hub / github.com/42dot/VFDepth

github.com/42dot/VFDepth @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
179 symbols 548 edges 37 files 101 documented · 56%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Self-supervised surround-view depth estimation with volumetric feature fusion

Jung-Hee Kim*, Junwha Hur*, Tien Nguyen, and Seong-Gyun Jeong - NeurIPS 2022 \ Link to the paper: Link

@inproceedings{kimself,
  title={Self-supervised surround-view depth estimation with volumetric feature fusion},
  author={Kim, Jung Hee and Hur, Junhwa and Nguyen, Tien Phuoc and Jeong, Seong-Gyun},
  booktitle={Advances in Neural Information Processing Systems (NeurIPS)}
  year = {2022},
}

Introduction

We introduce a volumetric feature representation for self-supervised surround-view depth approach, which not only outputs metric-scale depth and canonical camera motion, but also synthesizes a depth map at a novel viewpoint. \

width="600" height="356" src="https://github.com/42dot/VFDepth/raw/main/media/depth_synthesis.gif" />

Installation

  • Install required libraries using the requirements.txt file. \ (Note that we leverage packent-sfm, dgp as submodules and therefore need to install required libraries related to the submodules.)
  • To install both required library and submodules, you need to follow instruction below:
git submodule init
git submodule update
pip install -r requirements.txt

Datasets

DDAD

  • DDAD dataset can be downloaded by running:
curl -s https://tri-ml-public.s3.amazonaws.com/github/DDAD/datasets/DDAD.tar 
  • Place the dataset in input_data/DDAD/
  • We manually created mask image for scene of ddad dataset and are provided in dataset/ddad_mask

NuScenes

  • Download NuScenes official dataset
  • Place the dataset in input_data/nuscenes/
  • Scenes with backward and forward contexts are listed in dataset/nuscenes/
  • Scenes with low visibility are filtered in dataset/nuscenes/val.txt

Data should be as follows:

├── input_data
│   ├── DDAD
│   │   ├── ddad_train_val
│   │   ├── ddad_test
│   ├── nuscenes
│   │   ├── maps
│   │   ├── samples
│   │   ├── sweeps
│   │   ├── v1.0-test
|   |   ├── v1.0-trainval

Main Results

Model Scale Abs.Rel. Sq.Rel. RMSE RMSElog d1.25 d1.252 d1.253
DDAD Metric 0.221 4.001 13.406 0.340 0.688 0.868 0.932
Median 0.221 3.884 13.225 0.328 0.692 0.877 0.939
NuScenes Metric 0.285 6.662 7.472 0.347 0.741 0.883 0.936
Median 0.258 4.282 7.226 0.329 0.735 0.883 0.937

Get Started

Training

Surround-view fusion depth estimation model can be trained from scratch. * By default results are saved under results/<config-name> with trained model and tensorboard file for both training and validation.

Single-GPU

Training the model using single-GPU: \ (Note that, due to usage of packnet-sfm submodule, userwarning repetitively occurs and therefore ignored while training.)

python -W ignore train.py --config_file='./configs/ddad/ddad_surround_fusion.yaml'
python -W ignore train.py --config_file='./configs/nuscenes/nusc_surround_fusion.yaml'

Multi-GPU

Training the model using Multi-GPU: * Enable distributed data parallel(DDP), by setting ddp:ddp_enable to True in the config file * Gpus and the worldsize(number of gpus) must be specified (ex. gpus = [0, 1, 2, 3], worldsize= 4) * DDP address and port setting can be configured in ddp.py

python -W ignore train.py --config_file='./configs/ddad/ddad_surround_fusion_ddp.yaml' 
python -W ignore train.py --config_file='./configs/nuscenes/nusc_surround_fusion_ddp.yaml'

Evaluation

To evaluate the trained model from scratch, run:

python -W ignore eval.py --config_file='./configs/<config-name>'
  • The model weights need to be specified in load: weights of the config file.

Evaluation results using the pretrained model can be obtained by using the following command:

python -W ignore eval.py --config_file='./configs/<config-name>' \
                         --weight_path='<pretrained-weight-path>'

Depth Synthesis

To obtain synthesized depth results, train the model from scratch by running:

python -W ignore train.py --config_file='./configs/ddad/ddad_surround_fusion_augdepth.yaml'

Then evaluate the model by running:

python -W ignore eval.py --config_file='./configs/ddad/ddad_surround_fusion_augdepth.yaml'
  • The synthesized results are stored results/<config-name>/syn_results

License

This repository is released under the Apach 2.0 license.

Core symbols most depended-on inside this repo

update
called by 13
utils/logger.py
get_current
called by 12
dataset/nuscenes_dataset.py
set_tb_title
called by 11
utils/logger.py
conv2d
called by 7
network/blocks.py
plot_tb
called by 6
utils/logger.py
print_perf
called by 4
utils/logger.py
pack_cam_feat
called by 4
network/blocks.py
unpack_cam_feat
called by 4
network/blocks.py

Shape

Method 123
Function 37
Class 19

Languages

Python100%

Modules by API surface

models/vfdepth.py21 symbols
utils/logger.py19 symbols
network/volumetric_fusionnet.py16 symbols
models/base_model.py12 symbols
models/geometry/view_rendering.py9 symbols
dataset/nuscenes_dataset.py8 symbols
trainer/vfdepth_trainer.py7 symbols
network/fusion_depthnet.py7 symbols
models/geometry/pose.py7 symbols
models/losses/multi_cam_loss.py6 symbols
models/losses/base_loss.py6 symbols
models/geometry/geometry_util.py6 symbols

For agents

$ claude mcp add VFDepth \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact