人类有两只眼睛来估计视觉环境的深度信息,但机器人和 VR 头社等设备却往往没有这样的「配置」,往往只能靠单个摄像头或单张图像来估计深度。这个任务也被称为单目深度估计(MDE)。
近日,一种可有效利用大规模无标注图像的新 MDE 模型 Depth Anything 凭借强大的性能在社交网络上引起了广泛讨论,试用者无不称奇。
甚至有试用者发现它还能正确处理埃舍尔(M.C.Escher)那充满错觉的绘画艺术(启发了《纪念碑谷》等游戏和艺术):
从水上到水下,丝滑切换:
更好的深度模型也得到了效果更好的以深度为条件的 ControlNet,可用于图像生成和视频编辑。如下图所示,生成的内容质量得到了显著增强:
理论上说,基础模型可用于解决单目深度估计(MDE)问题,即基于单张图像估计深度信息。这类技术在机器人、自动驾驶、虚拟现实等领域都有广阔的应用前景。但由于难以构建带有数千万深度标签的数据集,这一问题还少有研究者探索。
此前的 MiDaS 算得上是这个方向上的一项开创性研究,其基于一个混合标注的数据集训练了一个 MDE 模型。尽管 MiDaS 展现出了一定程度的零样本能力,但受限于其数据覆盖范围,其在某些场景中的表现非常差。
来自香港大学、TikTok 等机构的研究者提出的 Depth Anything ,则是一个更为实用的解决方案。
该研究的目标是构建一种能在任何情况下处理任何图像的简单却又强大的基础模型。为了做到这一点,该团队采用了一种方法扩大数据集的规模:设计了一种数据引擎来收集和自动标注大规模无标注数据(约 6200 万)。这能显著扩大数据覆盖范围,并由此可以降低泛化错误。
为了保证数据扩展的质量,研究者探索了两种简单却有效的策略。
第一,利用数据增强工具创建一个难度更高的优化目标。这会迫使模型主动寻找额外的视觉知识并获取鲁棒的表征。
第二,开发一种辅助监督机制,可强制模型从预训练编码器继承丰富的语义先验知识。
团队使用 6 个公共数据集和随机拍摄的照片评估了新方法的零样本能力,其泛化能力非常出色。更进一步,使用来自 NYUv2 和 KITTI 的度量深度信息对模型进行微调后,新模型获得了新的 SOTA 结果。
这篇论文的主要贡献包括:
TikTok 的这项研究使用了有标注和无标注图像来实现更好的单目深度估计(MDE)。用数学形式表示,可以将有标注和无标注集分别表示成:
这里的目标是根据 D^l 学习得到一个教师模型 T。然后,使用 T 给 D^u 分配伪深度标签。最后,使用有标注集和伪标注集的组合数据集训练一个学生模型 S。图 2 是一个简单图示。
学习有标注图像
这个过程与 MiDaS 的训练过程类似。具体来说,深度值首先会通过 d = 1/t 被转换到视差空间(disparity space)中,然后再把每张深度映射图归一化到 0~1 范围内。为了实现多数据集联合训练,该团队采用了仿射不变损失。
这样一来就可以忽略每个样本的未知尺度和偏移。
为了得到稳健的单目深度估计模型,他们从 6 个公共数据集收集了 150 万张有标注图像。表 1 列出了这些数据集的详情。
不仅如此,为了增强从这些有标注图像学习到的教师模型 T,他们还采用了 DINOv2 预训练权重对编码器进行初始化。在实践操作中,该团队的做法是使用一个经过预训练的语义分割模型来检测天空区域并将其视差值设置为 0(即最远)。
解放无标注图像的力量
这正是这项研究的主要目标。至于无标注图像源,该团队选择了 8 个大规模公共数据集,保证了多样性。这些数据集总共包含 6200 多万张图像。详情见表 1 下半部分。
技术上讲,给定之前获得的 MDE 教师模型 T,可在无标注集 D^u 上得到预测结果,从而得到一个伪标注集:
该团队引入了两种形式的扰动:一种是强颜色扭变,包括颜色抖动和高斯模糊;另一种是强空间扭曲,也就是 CutMix。
尽管方法很简单,但这两种修改方法可让大规模无标注图像显著提升使用有标注图像训练的基准模型。
至于 CutMix,它最早是为图像分类提出的技术,目前还很少用于单目深度估计。该团队的做法是先在空间上插值一对随机的无标注图像 u_a 和 u_b:
在处理无标注图像时,该团队设定使用 CutMix 的概率为 50%。输入给 CutMix 的无标注图像已经在颜色上经历过强扭变,但给教师模型 T 进行伪标注的无标注图像却是干净的,没有任何扭变。
语义辅助型感知
这项研究首次尝试了组合使用 RAM + GroundingDINO + HQ-SAM 来为无标注图像分配语义分割标签。经过后处理之后,这得到了一个包含 4000 个类别的类别空间。
在联合训练阶段,该模型的任务使用一个共享的编码器和两个单独的解码器得到深度预测结果和分割预测结果。不幸的是,一番试错之后,该团队没能提升原始 MDE 模型的性能。
因此,他们的目标就变成了训练更多能提供信息的语义信号,以作为辅助监督信号助力深度估计任务。
该团队表示:「DINOv2 模型在语义相关任务的强大表现让我们大受震撼。」
因此,他们提出通过一个辅助特征对齐损失将其强大的语义能力迁移到新的深度模型。其特征空间是高维且连续的,因此包含的语义信息比离散掩码更丰富。该特征对齐损失的数学形式为:
研究者使用了 DINOv2 编码器进行特征提取。所有标注的数据集都简单地合并在一起,无需重新采样。无标注的图像由使用 ViT-L 编码器的最佳教师模型标注,每批标注和无标注图像的比例设定为 1:2。
零样本相对深度估计
研究者在六个具有代表性的不可见数据集 KITTI、NYUv2、Sintel、DDAD、ETH3D 和 DIODE 上全面验证了 Depth Anything 模型的零样本深度估计能力 ,并将其与最新 MiDaS v3.1 中的最佳 DPT-BEiT_L-512 模型进行了比较,后者使用的标注图像比前者多。
如表 2 所示,在均使用 ViT-L 编码器的前提下,在广泛的场景中,Depth Anything 在 AbsRel 和 δ_1 度量上都大大超过了 MiDaS 的最强模型。
面向度量深度估计的微调
研究者进一步研究了 Depth Anything 模型,将其作为下游度量深度估计的一种有潜力的权重初始化方法。
两种有代表性的情况如下:
1) 域内度量深度估计,即在同一域内对模型进行训练和评估。如 NYUv2 表 3 所示,Depth Anything 模型明显优于之前的最佳方法 VPD,δ_1 (↑) 从 0.964 → 0.984,AbsRel (↓) 从 0.069 提高到 0.056。表 4 中的 KITTI 数据集也有类似的改进。
2) 零样本度量深度估计,即模型在一个域(如 NYUv2)上进行训练,但在不同域(如 SUN RGB-D)上进行评估。如表 5 所示,在大量未见过的室内和室外场景数据集中,Depth Anything 比基于 MiDaS 的原始 ZoeDepth 得出了更好的度量深度估计模型。
面向语义分割进行微调
在本文方法中,研究者设计了 MDE 模型,通过简单的特征对齐约束,从预训练编码器中继承丰富的语义先验。随后,研究者检验了 MDE 编码器的语义能力。
如 Cityscapes 数据集的表 7 所示,研究者从大规模 MDE 训练中获得的编码器(86.2 mIoU)优于从大规模 ImageNet-21K 预训练中获得的现有编码器,例如 Swin-L (84.3) 和 ConvNeXt-XL (84.6)。表 8 中的 ADE20K 数据集也有类似的观察结果。
消融实验
在消融实验中,研究者使用了 ViT-L 编码器。表 6 展示了每个训练集的零样本迁移性能。
如表 9 所示,简单地添加带有伪标签的无标注图像不一定为模型带来增益,大规模的无标注图像能够显著增强模型的泛化能力。
另外,附一则研究团队的招聘信息:
联系方式:bingyikang@bytedance.com
联系方式:bingyikang@bytedance.com
文章来自于微信公众号 “机器之心”