Home

Awesome

<p align="center"> <h2 align="center"> Guided Depth Super-Resolution by Deep Anisotropic Diffusion [CVPR2023] </h2> <p align="center"> <a href="https://nandometzger.github.io/"><strong>Nando Metzger</strong></a>*, <a href="https://rcdaudt.github.io/"><strong>Rodrigo Caye Daudt</strong></a>*, <a href="https://igp.ethz.ch/personen/person-detail.html?persid=143986"><strong>Konrad Schindler</strong></a> </p> <p align="center"> {metzgern, rodrigo.cayedaudt, schindler}@ethz.ch, Photogrammetry and Remote Sensing, ETH ZΓΌrich </p> <p align="center"> *Equal Contribution </p> <p align="center"> [<a href="https://arxiv.org/abs/2211.11592"><strong>Paper</strong></a>] [<a href="https://www.youtube.com/watch?v=7RgXJz_3kcg"><strong>Video</strong></a>] [<a href="https://rcdaudt.github.io/dada/"><strong>Project Page</strong></a>] [<a href="https://openaccess.thecvf.com/content/CVPR2023/html/Metzger_Guided_Depth_Super-Resolution_by_Deep_Anisotropic_Diffusion_CVPR_2023_paper.html"><strong>Proceeding</strong></a>] [<a href="https://drive.google.com/file/d/1xHmnH5F0ckmtB7OLWYtQ6oPF7oo79m8l/view?usp=sharing"><strong>Poster</strong></a>] </p>

Performing super-resolution of a depth image using the guidance from an RGB image is a problem that concerns several fields, such as robotics, medical imaging, and remote sensing. While deep learning methods have achieved good results in this problem, recent work highlighted the value of combining modern methods with more formal frameworks. In this work we propose a novel approach which combines guided anisotropic diffusion with a deep convolutional network and advances the state of the art for guided depth super-resolution. The edge transferring/enhancing properties of the diffusion are boosted by the contextual reasoning capabilities of modern networks, and a strict adjustment step guarantees perfect adherence to the source image. We achieve unprecedented results in three commonly used benchmarks for guided depth super resolution. The performance gain compared to other methods is the largest at larger scales, such as x32 scaling. Code for the proposed method will be made available to promote reproducibility of our results.

Teaser

πŸ› οΈ Setup

πŸπŸ’“ Dependencies

We recommend creating a new conda environment with all required dependencies by running

conda env create -f environment.yml
conda activate DADA-SR

πŸ’ΎπŸ¦Œ Data

To reproduce our results, create a data directory (e.g. ./datafolder) with the three datasets:

Your folder structure should look like this:

datafolder
└───Middlebury
β”‚   └───2005
β”‚   β”‚   └───Art
β”‚   β”‚   |   |   disp1.png
β”‚   β”‚   |   |   disp5.png
β”‚   β”‚   |   |   dmin.text
β”‚   β”‚   |   └───Illum1
β”‚   β”‚   |   └───Illum2
β”‚   β”‚   |   └───Illum3
β”‚   β”‚   β”‚   ...
β”‚   └───...
β”‚   
└───NYUv2
β”‚       nyu_depth_v2_labeled.mat
β”‚
└───DIML
β”‚   └───train
β”‚   β”‚   └───HR
β”‚   β”‚   └───LR
β”‚   └───test
β”‚   β”‚   └───HR
β”‚   β”‚   └───LR
β”‚   └───npy
β”‚       <...will be generated by create_diml_npy.py...>

πŸš©πŸ’Ύ Checkpoints

Our pretrained model checkpoints can be downloaded here.

πŸ‹οΈ Training

Run the training script via

python run_train.py --dataset Middlebury --data-dir ./datafolder/ --save-dir ./save_dir/ --wandb --num-epochs 4500 --scaling 8 --val-every-n-epochs 10 --lr-step 100 --in-memory
python run_train.py --dataset NYUv2 --data-dir ./datafolder/ --save-dir ./save_dir/ --wandb --num-epochs 550 --scaling 8 --val-every-n-epochs 4 --lr-step 10 --in-memory
python run_train.py --dataset DIML --data-dir ./datafolder/ --save-dir ./save_dir/ --wandb --num-epochs 300 --scaling 8 --val-every-n-epochs 2 --lr-step 6 --in-memory

or use the prepared setups in .vscode/launch.json.

Note, that depending on the dataset, you have to adjust the number of epochs (--num-epochs) and the scheduler step size (--lr-step), as listed in the commands above. You can see all available training options by running

python run_train.py -h

πŸ§ͺ Testing

For test set evaluation, run

python run_eval.py --dataset <...> --data-dir ./datafolder/ --checkpoint ./save_dir/experiment_<...>/best_model.pth --scaling <...>

Again, you can query all available options by running

python run_eval.py -h

πŸŽ“ Citation

@article{metzger2022guided,
  title={Guided Depth Super-Resolution by Deep Anisotropic Diffusion},
  author={Metzger, Nando and Daudt, Rodrigo Caye and Schindler, Konrad},
  journal={arXiv preprint arXiv:2211.11592},
  year={2022}
}

πŸ™ Acknowledgement