Run 3D reconstruction from uncalibrated unlimited videos
  • Jupyter Notebook 72.8%
  • Python 17%
  • Cuda 5.6%
  • C++ 4.4%
  • C 0.2%
Find a file
2026-03-15 15:27:12 +01:00
calib add colmap export in the droid 2026-01-11 21:40:36 +01:00
colmap_configs make colmap initialization separately 2025-09-01 18:01:52 +02:00
data_config add colmap export in the droid 2026-01-11 21:40:36 +01:00
DPRetrieval Add loop closure optimization 2025-01-16 22:09:13 +01:00
dpvo add colmap export in the droid 2026-01-11 21:40:36 +01:00
dpvo_configs add colmap export in the droid 2026-01-11 21:40:36 +01:00
evaluation fix the evaluation on euroc dataset bug 2025-09-02 12:59:39 +02:00
formatter modify the image loaded path 2024-10-21 22:56:47 +02:00
media Add: add overview figure 2026-03-15 15:27:12 +01:00
nerf_train clean the code + rename calibration files 2025-09-10 20:22:10 +02:00
src move visualizer to the single implementation; run the droid refinement 2024-09-05 22:42:50 +02:00
test_scripts add colmap export in the droid 2026-01-11 21:40:36 +01:00
thirdparty monocular release 2021-09-01 19:17:53 -04:00
.gitignore make loop closure detection efficient 2025-08-21 15:26:12 +02:00
.gitmodules Remove SEA-RAFT model usage 2024-10-09 16:56:28 +02:00
dpvo_demo.py remove the log saving 2026-01-12 10:55:37 +01:00
environment.yaml update the yaml file 2026-01-12 11:26:29 +01:00
README.md Add: add overview figure 2026-03-15 15:27:12 +01:00
setup.py clean 2025-08-18 17:36:44 +02:00

3D reconstruction from in-the-wild videos

arXiv

Overview

Table of Contents

Installation

Prerequisites

  • CUDA-capable GPU (compute capability 6.0+)
  • CUDA Toolkit 11.x or 12.x
  • Conda package manager

Setup Steps

  1. Create and activate the conda environment:

    conda create -n dpvo python=3.10.14
    conda activate dpvo
    
  2. Install PyTorch with CUDA support: (specify the version according to your CUDA installation)

    # For CUDA 11.8
    conda install pytorch torchvision pytorch-cuda=11.8 -c pytorch -c nvidia
    
    # Or for CUDA 12.1
    conda install pytorch torchvision pytorch-cuda=12.1 -c pytorch -c nvidia
    
  3. Install other dependencies:

    • Install COLMAP & GLOMAP: Refer to https://github.com/colmap/glomap
    • Install hloc (for loop closure detection):
      pip install git+https://github.com/cvg/Hierarchical-Localization.git@v1.4
      
  4. Install the lietorch library:

    pip install thirdparty/lietorch
    
  5. Build the SLAM extensions:

    pip install -e .
    
  6. Mask and depth generation tools:

    • We use UniDepth to generate dense depth maps
    • We use MaskRCNN to generate dynamic object masks

Usage

Running the Demo

Run the SLAM system on an image sequence:

conda activate dpvo
python dpvo_demo.py \
  --imagedir=/path/to/images \
  --depthdir=/path/to/depths \
  --calib=calib/calibration.txt \
  --stride=1 \
  --skip=0 \
  --buffer=2048 \
  --export_colmap

Required Arguments:

  • --imagedir: Path to input image directory

Optional Arguments:

  • --depthdir: Path to depth maps (enables depth-aided tracking)
  • --maskdir: Path to dynamic object masks (filters dynamic objects)
  • --calib: Camera calibration file (format: fx fy cx cy [k1 k2 p1 p2 k3])
  • --stride: Frame sampling stride (default: 1)
  • --skip: Number of initial frames to skip (default: 0)
  • --buffer: Maximum buffer size for keyframes (default: 2048)
  • --export_colmap: Export results in COLMAP format for further processing
  • --rerun: Enable Rerun visualization (https://rerun.io/)
  • --loop_enabled: Enable loop closure detection

Data

Videos used in the paper:

Name Link Description
Yanshan Park, China Link
Taicang Park, China Link
Helsingborg, Sweden Link

Extract frames from videos

  1. Install the youtube video download tool: https://github.com/yt-dlp/yt-dlp

  2. Use ffmpeg to extract frames. We extract with resolution with 512*384 and with 5 FPS with 15 minutes each video clip.