depth_completion

Supervised Depth Completion of RGB-D Measurements from Reconstruction Loss

https://github.com/ctu-vras/depth_completion

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.4%) to scientific vocabulary

Keywords

depth-completion mapping slam
Last synced: 6 months ago · JSON representation ·

Repository

Supervised Depth Completion of RGB-D Measurements from Reconstruction Loss

Basic Info
  • Host: GitHub
  • Owner: ctu-vras
  • License: bsd-3-clause
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 5.25 MB
Statistics
  • Stars: 6
  • Watchers: 1
  • Forks: 1
  • Open Issues: 0
  • Releases: 0
Topics
depth-completion mapping slam
Created over 4 years ago · Last pushed almost 3 years ago
Metadata Files
Readme License Citation

README.md

Supervised Depth Completion of RGB-D Measurements from Reconstruction Loss

The core of the depth completion pipeline is the differentiable SLAM module, which takes as input RGB-D data and outputs camera trajectory and point cloud map estimate. However, the input sensory data could have noise and missing depth values. Therefore a Depth Completion module is introduced. It is applied to raw RGB-D frames before the propagation of the depth measurements through the SLAM module. For more information, please, refer to the thesis.

mapping_gradslam

Installation

The installation instructions are available at docs/install.md.

Depth Completion

The KITTI Depth Completion data set is utilized to train models. We train the model introduced in J. Uhrig et al, Sparsity Invariant CNNs.

During the training process the two supervisory signals are used (tested separatelly):

  • Mean Squared Error (MSE) loss computed for predicted and truth depth images,
  • Chamfer loss computed for predicted and truth depth clouds.

The pretrained model weights are available via the following link

Running the training pipeline: bash cd ./scripts python main.py

Differentiable SLAM and Subt simulator

mapping_gradslam

Download RGB-D images

And place it to the folder: ./data/

The data is organized in the same format as the ICL-NUIM dataset.

Explore the depth images data from the simulator (requires Open3D installation): ./notebooks/explore_data.ipynb

Mapping with GradSLAM

Prerequisite: install ROS

Construct a map from RGBD images input: roslaunch depth_completion gradslam_bag.launch odom:=gt

You may also want to visualize a ground truth mesh of the world by passing the additional argument: pub_gt_mesh:=true. Note, that this option requires Pytorch3d installed.

Mapping evaluation

Prerequisite: install Pytorch3d

Ground truth map from the simulator could be represented as a mesh file.

Download meshes of some cave worlds. And place them to ./data/meshes/ folder.

Compare map to mesh ./notebooks/comparegtmapmeshtopointcloud.ipynb

It will compare a point cloud to a mesh using the following functions: - the closest distance from point to mesh edge (averaged across all points in point cloud), - the closes distance from point to mesh face (averaged across all points in point cloud).

Record the data

*Note, that this section requires installation of the DARPA Subt simulator and the exploration pipeline.

However, you may use already prerecorded ROS *.bag files and convert them to ICL-NUIM dataset format.

In order to record a bag-file, launch the simulator and simply run: bash ./scripts/record_bag.sh

You can download prerecorded data from here. Ones you have a recorded bag-file, convert it to the ICL-NUIM format: bash roslaunch depth_completion bag2icl.launch bag:=<full/path/to/bag/file.bag>

GradSLAM and KITTI Depth

Instructions on how to run differentiable SLAM on sequences from the KITTI Depth Completion dataset. We utilize camera poses from the KITTI Raw dataset (GPS + IMU) and depth measurements from the KITTI Depth.

mapping_gradslam

Ones you have the data downloaded, please, move it (or create symbolic links) to the following locations:

bash depth_completion/data/ ├── KITTI │   ├── depth -> ~/data/datasets/KITTI/depth/ │   └── raw -> ~/data/datasets/KITTI/raw/ └── meshes -> ~/data/meshes/

Running GradSLAM on a KITTI Depth sequence with the following configurations:

  • odometry provider used in GradSLAM is set to ground truth poses from data set,
  • depth completion model is used to construct from sparse clouds local maps and provide them for the SLAM,
  • sparse clouds from KITTI Depths are used as input to depth completion model,
  • the pipeline is running on GPU.

bash roslaunch depth_completion gradslam_kitti.launch odom:=gt depth_completion:=1 depth_type:=sparse device:='cuda:0'

More details about the argument usage are provided in the corresponding launch file.

Citation

Feel free to cite the package, if you find it useful for your research.

@software{Stanek_Supervised_Depth_Completion_2022, author = {Staněk, Jáchym and Agishev, Ruslan and Petříček, Tomáš and Zimmermann, Karel}, month = {5}, title = {{Supervised Depth Completion of RGB-D Measurements from Reconstruction Loss}}, url = {https://github.com/RuslanAgishev/depth_completion}, version = {0.0.1}, year = {2022} }

Owner

  • Name: Vision for Robotics and Autonomous Systems
  • Login: ctu-vras
  • Kind: organization
  • Location: Prague

Research group at Czech Technical University in Prague (CTU), Faculty of Electrical Engineering, Department of Cybernetics

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Staněk"
  given-names: "Jáchym"
  orcid: "https://orcid.org/0000-0002-2089-5927"
- family-names: "Agishev"
  given-names: "Ruslan"
  orcid: "https://orcid.org/0000-0002-9169-2684"
- family-names: "Petříček"
  given-names: "Tomáš"
  orcid: "https://orcid.org/0000-0002-3136-5673"
- family-names: "Zimmermann"
  given-names: "Karel"
  orcid: "https://orcid.org/0000-0002-8898-4512"
title: "Supervised Depth Completion of RGB-D Measurements from Reconstruction Loss"
version: 0.0.1
date-released: 2022-05-20
url: "https://github.com/RuslanAgishev/supervised_depth_correction"

GitHub Events

Total
Last Year

Dependencies

environment.yml conda
  • _libgcc_mutex 0.1
  • _openmp_mutex 4.5
  • argon2-cffi 20.1.0
  • async_generator 1.10
  • attrs 21.2.0
  • backcall 0.2.0
  • blas 1.0
  • bleach 4.0.0
  • bzip2 1.0.8
  • ca-certificates 2021.10.26
  • certifi 2021.10.8
  • cffi 1.14.5
  • colorama 0.4.4
  • cudatoolkit 11.3.1
  • daal4py 2021.3.0
  • dal 2021.3.0
  • dbus 1.13.18
  • debugpy 1.4.1
  • decorator 5.1.0
  • defusedxml 0.7.1
  • entrypoints 0.3
  • expat 2.4.1
  • ffmpeg 4.3
  • fontconfig 2.13.1
  • freetype 2.11.0
  • fvcore 0.1.5.post20210915
  • giflib 5.2.1
  • glib 2.69.1
  • gmp 6.2.1
  • gnutls 3.6.15
  • gst-plugins-base 1.14.0
  • gstreamer 1.14.0
  • icu 58.2
  • importlib-metadata 4.8.1
  • importlib_metadata 4.8.1
  • intel-openmp 2021.4.0
  • iopath 0.1.9
  • ipykernel 6.4.1
  • ipython 7.29.0
  • ipython_genutils 0.2.0
  • ipywidgets 7.6.5
  • jedi 0.18.0
  • jinja2 3.0.2
  • joblib 1.1.0
  • jpeg 9d
  • jsonschema 3.2.0
  • jupyter 1.0.0
  • jupyter_client 7.0.1
  • jupyter_console 6.4.0
  • jupyter_core 4.9.1
  • jupyterlab_pygments 0.1.2
  • jupyterlab_widgets 1.0.0
  • lame 3.100
  • lcms2 2.12
  • ld_impl_linux-64 2.35.1
  • libffi 3.3
  • libgcc-ng 9.3.0
  • libgfortran-ng 7.5.0
  • libgfortran4 7.5.0
  • libgomp 9.3.0
  • libiconv 1.15
  • libidn2 2.3.2
  • libpng 1.6.37
  • libsodium 1.0.18
  • libstdcxx-ng 9.3.0
  • libtasn1 4.16.0
  • libtiff 4.2.0
  • libunistring 0.9.10
  • libuuid 1.0.3
  • libuv 1.40.0
  • libwebp 1.2.0
  • libwebp-base 1.2.0
  • libxcb 1.14
  • libxml2 2.9.12
  • lz4-c 1.9.3
  • markupsafe 2.0.1
  • matplotlib-inline 0.1.2
  • mistune 0.8.4
  • mkl 2021.4.0
  • mkl-service 2.4.0
  • mkl_fft 1.3.1
  • mkl_random 1.2.2
  • mpi 1.0
  • mpich 3.3.2
  • nbclient 0.5.3
  • nbconvert 6.1.0
  • nbformat 5.1.3
  • ncurses 6.3
  • nest-asyncio 1.5.1
  • nettle 3.7.3
  • notebook 6.4.5
  • numpy 1.21.2
  • numpy-base 1.21.2
  • nvidiacub 1.10.0
  • olefile 0.46
  • openh264 2.1.0
  • openssl 1.1.1l
  • packaging 21.0
  • pandocfilters 1.4.3
  • parso 0.8.2
  • pcre 8.45
  • pexpect 4.8.0
  • pickleshare 0.7.5
  • pillow 8.4.0
  • pip 21.2.4
  • portalocker 2.3.2
  • prometheus_client 0.11.0
  • prompt-toolkit 3.0.20
  • prompt_toolkit 3.0.20
  • ptyprocess 0.7.0
  • pycparser 2.21
  • pygments 2.10.0
  • pyparsing 3.0.4
  • pyqt 5.9.2
  • pyrsistent 0.18.0
  • python 3.8.12
  • python-dateutil 2.8.2
  • python_abi 3.8
  • pytorch 1.10.0
  • pytorch-mutex 1.0
  • pytorch3d 0.6.0
  • pyyaml 5.4.1
  • pyzmq 22.2.1
  • qt 5.9.7
  • qtconsole 5.1.1
  • qtpy 1.10.0
  • readline 8.1
  • scikit-learn 1.0.1
  • scikit-learn-intelex 2021.3.0
  • send2trash 1.8.0
  • setuptools 58.0.4
  • sip 4.19.13
  • six 1.16.0
  • sqlite 3.36.0
  • tabulate 0.8.9
  • tbb 2021.4.0
  • termcolor 1.1.0
  • terminado 0.9.4
  • testpath 0.5.0
  • threadpoolctl 2.2.0
  • tk 8.6.11
  • torchaudio 0.10.0
  • torchvision 0.11.1
  • tornado 6.1
  • tqdm 4.62.3
  • traitlets 5.1.0
  • typing_extensions 3.10.0.2
  • wcwidth 0.2.5
  • webencodings 0.5.1
  • wheel 0.37.0
  • widgetsnbextension 3.5.1
  • xz 5.2.5
  • yacs 0.1.6
  • yaml 0.2.5
  • zeromq 4.3.4
  • zipp 3.6.0
  • zlib 1.2.11
  • zstd 1.4.9
setup.py pypi