Depth Anything

Yang 2024 · 论文

一句话总结 — Depth Anything(CVPR 2024)是一个用于单目深度估计的基础模型,通过将训练规模扩展到约6200万张自动标注的无标签图像来构建,并在任意场景上实现了强大的零样本泛化能力。

问题

有监督单目深度模型陷入停滞,因为带标签的深度数据稀缺——公开数据集中总共大约只有一百多万张图像,而无标签的互联网图像池则几乎是无限的。Depth Anything明确宣示的目标刻意保持朴素:“不追求新颖的技术模块”,而是通过让大规模无标签数据真正发挥作用来构建”一个简单但强大的基础模型,能够处理任何情况下的任何图像”。

方法与架构

基础模型。 一个由DINOv2初始化的ViT编码器搭配DPT解码器,按照MiDaS的传统进行训练:深度被转换为视差 d=1/td = 1/t,并按每张图归一化到 010 \sim 1,多数据集训练使用仿射不变损失

Ll=1HWi=1HWρ(di,di),ρ(di,di)=d^id^i\mathcal{L}_l = \frac{1}{HW}\sum_{i=1}^{HW} \rho(d_i^*, d_i), \qquad \rho(d_i^*, d_i) = |\hat{d}_i^* - \hat{d}_i|

其中逐图对齐为 d^i=dit(d)s(d)\hat{d}_i = \frac{d_i - t(d)}{s(d)},t(d)=median(d)t(d) = \mathrm{median}(d),s(d)=1HWidit(d)s(d) = \frac{1}{HW}\sum_i |d_i - t(d)|。教师模型 TT 以此方式在来自6个数据集的150万张带标签图像上训练(BlendedMVS、DIML、HRWSI、IRS、MegaDepth、TartanAir);天空区域被分割出来并设为零视差。

数据引擎。 教师模型为来自8个公开来源的6200万张无标签图像打伪标签(SA-1B、ImageNet-21K、LSUN、BDD100K、Google Landmarks、Objects365、Open Images V7、Places365):D^u={(ui,T(ui))uiDu}\hat{\mathcal{D}}^u = \{(u_i, T(u_i)) \mid u_i \in \mathcal{D}^u\}。学生模型 SS 被重新初始化(而不是从 TT 微调而来),并在带标签数据与伪标签数据按1:2的批内比例混合训练。

挑战学生模型。 朴素的自训练没有带来任何提升——因为教师和学生共享架构,会犯类似的错误。两个策略解锁了无标签数据的价值。(1)仅对学生的无标签输入施加强扰动:强烈的颜色抖动和高斯模糊,加上空间CutMix,uab=uaM+ub(1M)u_{ab} = u_a \odot M + u_b \odot (1-M),其中 MM 为矩形掩码(50%概率使用);无标签损失 Lu\mathcal{L}_u 是在 MM1M1-M 区域内分别针对 T(ua)T(u_a)T(ub)T(u_b) 的面积加权仿射不变损失之和,而教师模型始终看到的是干净图像。这迫使模型”主动寻求额外的视觉知识,并获得鲁棒的表征”。(2)通过特征对齐引入语义先验,而非辅助分割任务(该方案失败了——离散掩码丢失太多信息):

Lfeat=11HWi=1HWcos(fi,fi)\mathcal{L}_{feat} = 1 - \frac{1}{HW}\sum_{i=1}^{HW} \cos(f_i, f_i')

将学生特征 ff 与冻结的DINOv2编码器特征 ff' 对齐,但跳过那些相似度已经超过容差余量 α=0.85\alpha = 0.85 的像素——物体共享语义但不共享深度,因此精确的特征复制反而有害。总损失是 Ll\mathcal{L}_lLu\mathcal{L}_uLfeat\mathcal{L}_{feat} 的平均值。

模型系列。 ViT-S(2480万)、ViT-B(9750万)、ViT-L(3.353亿)编码器在精度与速度之间取舍;度量深度变体在ZoeDepth框架中于NYUv2或KITTI上微调编码器。

实验结果

在六个未见过的数据集上进行零样本相对深度评测,对比最好的MiDaS v3.1模型(ViT-L级别):Depth Anything ViT-L全面胜出——KITTI AbsRel 0.076对比0.127(δ1\delta_1 0.947对比0.850),NYUv2 0.043对比0.048,Sintel 0.458对比0.587,DDAD 0.230对比0.251,ETH3D 0.127对比0.139,DIODE 0.066对比0.075——而且MiDaS在KITTI/NYUv2上甚至不是完全零样本的(它在这些图像上训练过;Depth Anything没有)。ViT-B模型已经超过了MiDaS更大的ViT-L模型,甚至ViT-S(体积不到十分之一)在Sintel、DDAD和ETH3D上也能胜出。经过微调用于域内度量深度(ZoeDepth框架)后,它将NYUv2的 δ1\delta_1 从0.964提升到0.984,AbsRel从0.069降到0.056,超过了此前最好的方法(VPD),并将KITTI的 δ1\delta_1 从0.978提升到0.982;论文还报告了更强的零样本度量迁移能力、来自同一编码器的强语义分割能力,以及一个更好的深度条件ControlNet。

对SLAM的意义

单目SLAM长期以来一直希望有一个能在任何地方都适用的深度先验——用于尺度、地图密度、初始化,以及在低视差运动下的鲁棒性。Depth Anything使”直接调用一个深度基础模型”成为一个现实的设计选择:单一网络就能在任意室内/室外图像上产生可信的稠密深度,且有足够快的变体可用于实时前端。它巩固了几何感知领域的数据扩展范式——多样化的无标签数据胜过更多的有监督标签——并(配合V2)成为插入稠密和神经SLAM流程中的默认深度骨干网络。

相关条目