UniDepth V2 评测 — 一张照片就能重建三维深度,开源界的深度估算新王者
一句话简介: UniDepth V2 是 ETH Zurich 团队开发的通用单目度量深度估计模型,仅需一张 RGB 图像即可输出精确的度量深度图、3D 点云和相机内参,3600万+ 下载,多项基准达 SOTA。
工具概览
UniDepth(GitHub)由 ETH Zurich 的 Luigi Piccinelli 等人开发,V1 版本于 2024 年 3 月发布并入选 CVPR 2024(Highlight),V2 版本于 2025 年 2 月 28 日发布。该项目已在 HuggingFace 获得 3600万+ 下载,是深度估计领域最受欢迎的开源模型之一。
它的核心突破在于统一性——一个模型就能在不同数据集、不同相机类型、不同场景下实现高质量的深度估计,真正做到”一个模型走天下”。
核心功能
1. 单目度量深度估计
只需输入一张 RGB 图像,UniDepth V2 就能输出具有真实物理尺度的深度图(而非相对深度)。这在机器人导航、自动驾驶、AR/VR 等领域至关重要。
2. 3D 点云重建
模型直接输出相机坐标系下的 3D 点云(predictions["points"]),无需额外的后处理步骤,可直接用于三维重建、场景理解等任务。
3. 相机内参预测
除了深度,UniDepth V2 还能自动预测相机内参矩阵,即使输入图像没有附带的相机信息也能工作,大大降低了使用门槛。
4. 置信度输出
V2 新增置信度估算功能,输出每个像素的估计可靠性 ranking,帮助用户判断深度估计的可信区域。
5. ONNX 导出支持
UniDepth V2 支持导出为 ONNX 格式,可轻松部署到 Web、移动端或嵌入式设备,跨平台兼容性极强。
性能表现
在多个主流深度估计基准上,UniDepth V2 均达到或接近 SOTA:
| 模型 | NYUv2 | SUN-RGBD | ETH3D | KITTI | Nuscenes | DDAD |
|---|---|---|---|---|---|---|
| ZoeDepth | 95.2 | 86.7 | 35.0 | 96.5 | 28.3 | 27.2 |
| Metric3Dv2 | 98.9 | 81.2 | 90.0 | 98.5 | 84.1 | - |
| DepthPro | - | 83.1 | 39.7 | - | 56.6 | 29.9 |
| UniDepth V1 | 98.4 | 94.3 | 18.5 | 98.6 | 84.6 | 85.8 |
| UniDepth V2 | 98.8 | 96.4 | 85.2 | 98.9 | 87.0 | 88.2 |
V2 相比 V1 在几乎所有基准上都有显著提升,尤其是 ETH3D(18.5 → 85.2)和 SUN-RGBD(94.3 → 96.4),差距非常惊人。
适用人群
- 机器人研究者:需要精确深度信息用于导航和避障
- 自动驾驶开发者:从单目相机获取场景深度
- AR/VR 开发者:重建真实世界的三维结构
- 3D 重建爱好者:用普通照片生成点云和三维模型
- 计算机视觉学生:作为深度估计任务的 baseline 模型
与同类工具对比
| 特性 | UniDepth V2 | ZoeDepth | Metric3D | Depth Pro |
|---|---|---|---|---|
| 开源 | ✅ | ✅ | ✅ | ❌ (商业) |
| 内参预测 | ✅ | ❌ | ❌ | ❌ |
| ONNX 导出 | ✅ | ❌ | ❌ | ❌ |
| 置信度输出 | ✅ | ❌ | ❌ | ❌ |
| 多相机类型 | ✅ | ❌ | ❌ | ❌ |
| 推理速度 | 快(比V1快30%) | 中等 | 快 | 快 |
| 安装复杂度 | 中等 | 低 | 中等 | 低 |
UniDepth V2 的最大优势在于功能全面——深度估计、点云重建、内参预测一站式解决,而且完全开源,社区活跃。
如何使用
安装
pip install unidepth --extra-index-url https://download.pytorch.org/whl/cu118
基本使用
from unidepth.models import UniDepthV2
import torch
from PIL import Image
import numpy as np
# 加载模型
model = UniDepthV2.from_pretrained("lpiccinelli/unidepth-v2-vitl14")
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
# 加载图像
rgb = torch.from_numpy(np.array(Image.open("image.jpg"))).permute(2, 0, 1)
# 推理
predictions = model.infer(rgb)
# 获取结果
depth = predictions["depth"] # 度量深度图
points = predictions["points"] # 3D 点云
intrinsics = predictions["intrinsics"] # 相机内参
confidence = predictions["confidence"] # 置信度
调整分辨率与速度
# resolution_level 范围 [0, 10),越高越精确但越慢
model.resolution_level = 5
ONNX 导出
python ./unidepth/models/unidepthv2/export.py \
--version v2 --backbone vitl \
--shape 462 616 --output-path unidepthv2.onnx
模型选择
UniDepth V2 提供三种不同规模的模型,可根据算力选择:
| 模型 | 参数量级 | 适用场景 |
|---|---|---|
| unidepth-v2-vits14 | 小 | 移动端、实时应用 |
| unidepth-v2-vitb14 | 中 | 平衡精度与速度 |
| unidepth-v2-vitl14 | 大 | 最高精度要求 |
总结
UniDepth V2 是目前开源社区中最强大的单目深度估计工具之一。它由 ETH Zurich 顶尖团队开发,学术背景扎实,性能数据过硬。V2 版本相比 V1 在精度、速度和功能上都有全面提升,尤其 ONNX 支持和多相机类型适配让它在工业界的应用前景更加广阔。
推荐指数:★★★★☆(4.5/5)
扣分点在于安装配置相对复杂(需要编译 CUDA 算子),以及对初学者来说调试难度略高。但对于有一定 PyTorch 基础的开发者来说,这完全不是问题。
如果你正在寻找一个开源、免费、高性能的深度估计方案,UniDepth V2 是不二之选。
论文:UniDepthV2: Universal Monocular Metric Depth Estimation Made Simpler
项目地址:GitHub
模型权重:HuggingFace