vipe

nv-tlabsApache-2.0活跃维护

从视频中估计相机位姿、深度和相机内参的 3D 感知引擎,为几何三维重建与空间理解提供基础数据。

ViPE: Video Pose Engine for Geometric 3D Perception

v1.2.0发布于 2026-06-09 22:22 UTC2,198star +10 / 7 天181fork同步于 2026-11-10 17:47 UTC

怎么上手

由 README 提炼,执行前请确认
pip install nvidia-vipe
uv run vipe infer YOUR_VIDEO.mp4
硬件要求按 README 说明

README 未说明具体显存要求;长序列 pipeline 通过滑动关键帧窗口使 GPU/CPU 内存占用大致恒定;MetricTrail 需编译 CUDA 扩展,依赖 nvcc 12.8。

需要 CUDA
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

从原始视频估计相机内参、运动与稠密近度量深度图的 NVIDIA 开源空间 AI 工具

从视频中估计相机位姿、深度和相机内参的 3D 感知引擎,为几何三维重建与空间理解提供基础数据。

核心能力

  • 从无约束原始视频估计相机内参与相机运动
  • 输出稠密近度量深度图,支持针孔、广角与 360 全景
  • 提供 pose_only_long 长序列 SLAM,显存占用不随视频长度增长
  • MetricTrail 流式度量几何系统,支持长视频重建与点云导出
  • 1.2.0 版本通过 CUDA 融合算子等优化提速 2.7 倍

容易踩的坑

MetricTrail 需在安装 ViPE 后单独编译 DPVO CUDA 内核,并额外安装 yacs、numba 与 xformers==0.0.33.post1;MetricTrail 权重需另行获取,通过 pipeline.slam.weights 或 VIPE_METRICTRAIL_DPVO_CHECKPOINT 指定;SALAD 与 PyPose 等可选依赖需在独立或 ViPE 环境中单独安装。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

3 个版本v1.2.0
  1. v1.2.0最新正式版2026-06-09 · 2026-06-09 22:22 UTC

    Highlights

    • Released ViPE 1.2.0 with a 2.7x speed-up and no loss of accuracy.
    • Speed improvements are enabled by CUDA fused kernels, model and pipeline caching, prefetching, and other optimizations.

    Package

    • Updates nvidia-vipe to version 1.2.0.
  2. v1.1.02026-05-22 · 2026-05-22 00:35 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/nv-tlabs/vipe/compare/v1.0.0...v1.1.0

  3. v1.0.02026-05-15 · 2026-05-15 21:21 UTC
    查看更新说明

    Release nvidia-vipe 1.0.0

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    ViPE: Video Pose Engine for Geometric 3D Perception

    TL;DR: ViPE is a useful open-source spatial AI tool for annotating camera poses and dense depth maps from raw videos!

    ViPE estimates camera intrinsics, camera motion, and dense near-metric depth maps from unconstrained raw videos, including pinhole, wide-angle, and 360-degree panorama footage.

    News

    • 2026/11: 🚀🚀🚀 Released ViPE-Long: Added long-sequence pipeline (metrictrail) for streaming long videos reconstruction, with metric depth and local optimization as key features. Uses the MoGe v2 (moge2-l) keyframe-depth prior by default.
    • 2026/09: Added long-sequence SLAM (pose_only_long) for arbitrarily long videos, with GPU/CPU memory bounded by a sliding keyframe window instead of growing with video length. Uses the MoGe v2 (moge2-l) keyframe-depth prior by default.
    • 2026/06: 🚀🚀🚀 Released ViPE 1.2.0: 2.7x speed-up with no loss of accuracy, enabled by CUDA fused kernels, model and pipeline caching, prefetching, and other optimizations.
    • 2026/05: Merged Panorama estimation pipeline & bump release version to 1.0.0.
    • 2026/01: Integration with Depth-Anything 3 for depth estimation (use dav3 pipeline).
    • 2025/10: Add support to run on wide-angle videos.
    • 2025/09: Add support to run Lyra pipeline.
    • 2025/08: Initial release of ViPE.

    Installation

    # From PyPI
    pip install nvidia-vipe
    
    # From source (conda for CUDA/native deps, uv for the Python env)
    conda env create -f envs/cu128.yml
    conda activate cu128
    uv sync
    uv run vipe infer YOUR_VIDEO.mp4
    

    See docs/installation.md for details (dev/docs dependency groups, etc).

    Long-Sequence Videos

    For videos too long for the default pipeline's fixed-size keyframe buffer, use the pose_only_long pipeline: it retires old keyframes to a compact trajectory ledger as it streams, so GPU and CPU memory stay bounded (roughly constant, not growing with video length) regardless of how many frames the video has. It uses the MoGe v2 (moge2-l) keyframe-depth prior by default.

    # Single video
    uv run vipe infer YOUR_LONG_VIDEO.mp4 -p pose_only_long -o vipe_results/
    
    # A folder of videos: every .mp4 in the folder is processed in turn, through a single
    # loaded model instance, writing each video's trajectory to vipe_results/pose/<name>.npz
    uv run vipe infer YOUR_VIDEO_FOLDER/ -p pose_only_long -o vipe_results/
    

    MetricTrail

    MetricTrail is a streaming metric geometry system that combines pretrained spatial priors with bounded local geometric optimization to recover accurate camera trajectories and dense 3D reconstruction from long videos. To use metrictrail, build MetricTrail's DPVO kernels after the installation of ViPE.

    Build

    uv pip install yacs numba   # DPVO runtime requirements (not ViPE dependencies)
    uv pip install xformers==0.0.33.post1  # MoGe-2's DINOv2 attention
    python -m vipe.metrictrail.build       # cuda_corr, cuda_ba, lietorch_backends
    python -m vipe.metrictrail.build --stereo   # also the optional stereo DPVO kernels
    python -m vipe.metrictrail.build --dry-run  # print the plan only
    

    Point CUDA_HOME at the conda environment's toolkit (export CUDA_HOME=$CONDA_PREFIX after conda activate cu128) when the shell presets another CUDA, so all extensions use nvcc 12.8.

    The sources travel with ViPE's sdist (MANIFEST.in) and are package data of vipe.metrictrail, so the build also works from an installed (non-editable) ViPE.

    Weights

    MetricTrail weights are obtained separately, with a Hugging Face release planned under the NVIDIA License. Set pipeline.slam.weights or VIPE_METRICTRAIL_DPVO_CHECKPOINT to the DINO-DPVO checkpoint.

    weightsettingdefault
    MoGe-2 ViT-LViPE's ownhttps://github.com/microsoft/moge
    DINO-DPVOpipeline.slam.weightshttps://huggingface.co/nvidia/MetricTrail
    DINOv3 ViT-S/16pipeline.slam.dinov3_weightshttps://github.com/facebookresearch/dinov3
    DINO SALADExternal loop-candidate generationhttps://github.com/serizba/salad/

    For SALAD candidates, follow the separate installation and export instructions. SALAD and its checkpoints stay in that external environment; they are not bundled with ViPE.

    Optional loop-closure dependency

    Install the pose-graph dependency in the ViPE environment, separately from SALAD:

    python -m pip install pypose==0.6.8
    # Alternatively, when installing this checkout:
    python -m pip install '.[metrictrail-lc]'
    

    Loop closure uses PyPose on CPU for SE(3) operations and autograd, and SciPy for sparse linear solves. PyPose is loaded only for loop-closure optimization; local tracking does not require it. See the file-based loop-closure workflow.

    Quick start

    The demo video (assets/examples/metrictrail_demo.mp4): the in-the-wild defaults, i.e. a 280x504 cover-crop at the video's own frame rate, RGB-only SharedK calibration, local tracking.

    python run.py pipeline=metrictrail streams.base_path=assets/examples/metrictrail_demo.mp4 \
        pipeline.output.path=vipe_results/metrictrail_demo
    # -> vipe_results/metrictrail_demo/{pose,intrinsics,depth}/metrictrail_demo.*  and the run record
    # vipe_results/metrictrail_demo/vipe/metrictrail_demo_metrictrail.json 
    
    # point cloud export
    python -m vipe.metrictrail.pointcloud vipe_results/metrictrail_demo --name metrictrail_demo \
        --video assets/examples/metrictrail_demo.mp4 --filter strict
    # -> vipe_results/metrictrail_demo/pointcloud/metrictrail_demo.ply
    

    KITTI odometry, one sequence, uncalibrated, with loop closure (frames prepared at 280x504; data layout and every benchmark in configs/slam/README_metrictrail.md):

    python run.py pipeline=metrictrail [email protected]=metrictrail_local \
        streams=frame_dir_stream streams.base_path=data/KITTI/rgb/02 \
        pipeline.init.input_raster.policy=unchanged \
        pipeline.init.calibration.allow_unstable=true \
        pipeline.output.path=vipe_results/kitti
    
    # After exporting candidate JSON for the saved trajectory:
    python -m vipe.metrictrail.optional.loop_closure vipe_results/kitti --name 02 --preset kitti \
        --candidates /path/to/02-loops.json
    # vipe_results/kitti/pose/02.npz (before loop closure), vipe_results/kitti/pose_lc/02.npz (after)
    

    Scoring is a separate package on the metrictrail_eval branch (its README lists every dataset and how to plot the aligned trajectories, python -m metrictrail_eval.plot):

    git worktree add ../vipe-metrictrail-eval metrictrail_eval
    cd ../vipe-metrictrail-eval/metrictrail_eval
    python -m metrictrail_eval.score --dataset kitti --pred-format vipe --pred <repo>/vipe_results/kitti \
        --gt-root <KITTI GT, e.g. data/KITTI/prepared_280x504> --cases 02 --allow-partial --stage LC  # --stage local: before LC
    

    Refer to MetricTrail for detailed explanations and further usages.

    License

    This project will download and install additional third-party models and softwares. Note that these models or softwares are not distributed by NVIDIA. Review the license terms of these models and projects before use. NVIDIA-authored source is released under the Apache License 2.0. Incorporated third-party code retains its applicable terms, including Unik3D (BY-NC-SA 4.0), DPVO (MIT), and LieTorch (BSD-3-Clause). See THIRD_PARTY_LICENSES.md and NOTICE.