Usage

ViPE CLI

Once the Python package is installed, use the vipe CLI to process raw MP4 videos:

# Replace YOUR_VIDEO.mp4 with your video path.
# Sample videos are available in assets/examples.
uv run vipe infer YOUR_VIDEO.mp4

Useful options:

Option Description
--output, -o Output directory. Defaults to vipe_results.
--visualize, -v Enable visualization of intermediate and final results.
--pipeline, -p Pipeline configuration to use. Defaults to default.
--image-dir Process a directory of image frames instead of an MP4 file.

ViPE visualization video

Pipeline Presets

ViPE currently supports these pipeline presets:

Preset Use case
default Default pipeline for pinhole cameras.
lyra Configuration for results in the Lyra paper.
dav3 Uses Depth Anything 3 for depth estimation.
no_vda Skips Video Depth Anything alignment when it is too memory-consuming.
wide_angle For videos with wide-angle or fisheye distortion.
panorama For 360-degree videos. Add pipeline.post.depth_align_model=dap or pipeline.post.depth_align_model=unik3d to enable panorama depth estimation.

The full generated configuration reference is available in Configuration.

Visualize Results

ViPE artifact outputs can be visualized with viser:

uv run vipe visualize vipe_results/

Replace vipe_results/ with the output directory you selected.

ViPE viser viewer

run.py

The run.py script is a more flexible way to run ViPE. Compared with the CLI, it supports multiple videos at once and fine-grained Hydra overrides.

# Run the full pipeline.
uv run python run.py pipeline=default streams=raw_mp4_stream streams.base_path=YOUR_VIDEO_OR_DIR_PATH

# Run pose-only output without depth post-processing.
uv run python run.py pipeline=default streams=raw_mp4_stream streams.base_path=YOUR_VIDEO_OR_DIR_PATH pipeline.post.depth_align_model=null

Convert to COLMAP

Use scripts/vipe_to_colmap.py to convert ViPE outputs to COLMAP format:

uv run python scripts/vipe_to_colmap.py vipe_results/ --sequence dog_example

This unprojects dense depth maps to create a 3D point cloud.

For a lighter and more 3D-consistent point cloud, add --use_slam_map:

uv run python scripts/vipe_to_colmap.py vipe_results/ --sequence dog_example --use_slam_map

This requires running the full pipeline with:

pipeline.output.save_slam_map=true