UniK3D: Universal Camera Monocular 3D Estimation¶
会议: CVPR 2025
arXiv: 2503.16591
代码: GitHub
领域: 3D视觉
关键词: 通用相机深度估计, 球谐表示, 全景深度, 鱼眼相机, 零样本3D重建
一句话总结¶
提出 UniK3D,首个支持任意相机模型(针孔到全景)的通用单目3D估计方法,通过球面3D输出空间(径向距离替代垂直深度)和基于球谐函数的无模型相机光线表示,在13个数据集上零样本SOTA,特别在大视场和全景设置下大幅领先现有方法。
研究背景与动机¶
- 现有单目深度/3D估计方法依赖过于简化的假设:针孔相机模型或已校正图像
- 这些限制导致在真实场景中(鱼眼、全景镜头)性能严重下降,且损失大量上下文信息
- 现有方法(DepthAnything, UniDepth等)的输出空间(视差或对数深度)在视场角超过180°时数学上不适定
- 即使模型训练时接触了多种相机类型,受限于不灵活的相机假设仍无法有效学习通用相机估计
- 需要校正参数或已知内参的方法在零样本场景下难以适用
- 网络预测存在"分布收缩"问题:倾向于回归到训练数据中最常见的小视场角模式
- 缺乏能处理任意反投影问题的统一框架
- 相机参数与场景几何的解耦不够彻底
方法详解¶
整体框架¶
UniK3D 由三个模块组成:编码器(ViT-based)提取密集特征和class tokens;Angular Module 从class tokens预测19个参数(4个域参数+15个球谐系数),通过逆球谐变换重建相机光线pencil \(\mathbf{C} = \theta || \phi\);Radial Module 使用Transformer Decoder将编码器特征条件化在角度表示上,预测对数径向距离 \(\mathbf{R}_{\log}\)。最终3D输出 \(\mathbf{O} = \mathbf{C} || \mathbf{R}\) 通过球面→笛卡尔坐标变换得到点云。
关键设计¶
设计一:球面输出空间与球谐相机表示 - 功能:统一处理任意相机几何的反投影问题 - 核心思路:输出3D空间采用全球面表示,用径向距离(而非垂直深度)表示场景范围。相机光线表示为球谐函数的线性叠加 \(\mathbf{C} = \sum_{l=0}^{L}\sum_{m=-l}^{l}\mathbf{H}_{lm}\mathcal{B}_{lm}(\theta,\phi)\),仅需3阶球谐(15个系数)+4个域参数即可精确表示大多数相机类型 - 设计动机:传统视差/对数深度在大视场角下数学不适定;球面表示使物体投影大小仅与径向距离单值相关(而非深度),更易学习;球谐基提供连续性、可微性等归纳偏置
设计二:非对称角度损失防止分布收缩 - 功能:解决网络预测偏向小视场角(训练数据中最频繁模式)的问题 - 核心思路:基于分位数回归的非对称L1损失 \(\mathcal{L}_{\text{AA}}^{\alpha}(\hat{\theta}, \theta^*) = \alpha\sum_{\hat{\theta}>\theta^*}|\hat{\theta}-\theta^*| + (1-\alpha)\sum_{\hat{\theta}\leq\theta^*}|\hat{\theta}-\theta^*|\),对极角 \(\theta\) 使用 \(\alpha=0.7\)(惩罚欠估计),对方位角 \(\phi\) 使用 \(\alpha=0.5\)(对称) - 设计动机:简单的数据重平衡会改变3D场景多样性;分位数回归仅需搜索 \([0,1]\) 区间中的 \(\alpha\),简洁高效
设计三:增强相机条件化策略 - 功能:确保模型有效利用相机信息而非忽略或被误导 - 核心思路:(1) 使用非可学习的正弦编码(static encoding)编码相机光线;(2) 课程学习:训练初期以概率 \(1 - \tanh(s/10^5)\) 喂入GT相机参数,逐步过渡到预测值;(3) 对Angular Module输出到Radial Module的梯度进行stop-gradient,模拟外部信息流;(4) 禁用交叉注意力中的LayerScale防止绕过条件化 - 设计动机:弱条件化导致模型将局部畸变路由回编码器特征空间而非整合视场角信息,在大视场配置下尤其严重
损失函数¶
总损失包含三部分:角度损失 \(\mathcal{L}_A = \beta\mathcal{L}_{AA}^{0.7}(\theta) + (1-\beta)\mathcal{L}_{AA}^{0.5}(\phi)\)(\(\beta=0.75\)),径向损失 \(\mathcal{L}_{rad} = \|\hat{\mathbf{R}}_{\log} - \mathbf{R}_{\log}^*\|_1\),以及置信度损失。
实验关键数据¶
主实验:跨相机域零样本评估(ViT-L骨干)¶
| 方法 | S.FoV \(\delta_1^{SSI}\)↑ | L.FoV \(\delta_1^{SSI}\)↑ | Pano \(\delta_1^{SSI}\)↑ | S.FoV \(F_A\)↑ | L.FoV \(F_A\)↑ | Pano \(F_A\)↑ |
|---|---|---|---|---|---|---|
| DepthAnything | 92.2 | 47.5 | 10.4 | - | - | - |
| UniDepth | 94.9 | 68.6 | 33.0 | 59.0 | 16.9 | 2.0 |
| DepthPro | 87.4 | 64.5 | 31.8 | 56.0 | 26.1 | 1.9 |
| UniK3D-Large | 96.1 | 91.2 | 81.4 | 68.1 | 71.6 | 80.2 |
与全景专用方法对比(Stanford-2D3D, 零样本)¶
| 方法 | 训练数据 | \(\delta_1\)↑ | A.Rel↓ |
|---|---|---|---|
| BiFuse++ | Matterport3D | 91.4 | 10.7 |
| UniFuse | Matterport3D | 91.3 | 9.42 |
| UniK3D | Ours | 96.8 | 8.01 |
关键发现¶
- UniK3D在大视场(L.FoV)上 \(\delta_1^{SSI}\) 从UniDepth的68.6%提升至91.2%(+22.6%)
- 全景设置下从33.0%提升至81.4%(+48.4%),碾压所有现有方法
- 即使在标准针孔小视场下仍保持SOTA(96.1%),说明无性能trade-off
- 零样本超越专门在全景数据上训练的方法(BiFuse++等)
- 仅需19个参数(15球谐系数+4域参数)即可表示几乎任何相机几何
亮点与洞察¶
- 球面全方位统一表示:首次解决了视场角>180°时传统方法的数学不适定问题
- 球谐相机表示的优雅性:用15个系数+4个域参数替代显式相机模型参数,实现真正的模型无关
- 非对称角度损失:简洁高效地解决分布偏移问题,无需复杂的数据重平衡
- 相机-场景完全解耦:球面框架确保投影大小仅与径向距离相关,大幅简化学习问题
局限与展望¶
- 训练需要多种相机类型的大规模数据集,数据收集仍是瓶颈
- 球谐系数精度受基函数阶数限制(当前3阶),极端畸变可能需要更高阶
- 推理速度未详细讨论,球谐逆变换增加一定计算开销
- 未来可探索与视频序列的结合实现时序一致的3D重建
相关工作与启发¶
- 与UniDepth将相机和深度解耦但仍假设针孔模型不同,UniK3D完全移除相机假设
- 球谐函数在图形学(环境光照)中广泛使用,本文创新性地应用于相机几何表示
- 非对称损失的思路可推广到其他存在数据分布偏移的学习任务
评分¶
⭐⭐⭐⭐⭐ — 真正解决了通用相机深度估计的核心问题,球面+球谐设计优雅而有效,大视场下的巨大提升具有重要实用价值。
相关论文¶
- [CVPR 2025] Depth Any Camera: Zero-Shot Metric Depth Estimation from Any Camera
- [CVPR 2025] Scalable Autoregressive Monocular Depth Estimation
- [CVPR 2025] Vision-Language Embodiment for Monocular Depth Estimation
- [CVPR 2025] Efficient Depth Estimation for Unstable Stereo Camera Systems on AR Glasses
- [CVPR 2025] Zero-Shot Monocular Scene Flow Estimation in the Wild