towardsdatascience.com/depth-anything-a-foundation-model-for-monocular-depth-estimation-8a7920b5c9cc
Depth Anything:释放大规模无标签数据在单目深度估计中的潜力
作者:Sascha Kirch
来源:学术出版物图像生成
单目深度估计,即从二维图像中推断三维空间的距离信息,长期以来被视为计算机视觉与机器人领域的一项核心挑战。尽管该问题常被描述为“病态且本质上模糊”——因缺乏足够的几何约束而导致多解性——但其应用价值极为广泛。随着基础模型在自然语言处理和视觉任务中取得突破,研究者开始思考:能否将这些成功经验迁移至深度估计任务?
本文聚焦于一篇发表于 CVPR 2024 的论文《Depth Anything:释放大规模无标签数据的力量》(Yang Lihai 等,2024 年 1 月 19 日),深入解析其提出的通用单目深度估计基础模型。我们将探讨其整体架构设计、训练策略的关键技巧,以及如何实现从相对深度到度量深度的扩展能力。
相关资源:
GitHub 仓库 – 项目主页 – 在线演示 – 模型检查点
论文类别:
基础模型 | 单目深度估计
延伸阅读参考:
[BYOL] – [CLIP] – [GLIP] – [Segment Anything] – [DINO] – [DDPM]
背景:为何深度感知至关重要?
[此处为图片2]
图1:原始图像与其对应的深度图。图像由 Sascha Kirch 提供,深度图通过 Depth Anything Hugging Face 演示生成。
要在三维环境中进行有效导航或交互,系统必须理解物体的空间位置及彼此之间的距离关系。典型应用场景包括自动驾驶中的碰撞规避、可行驶区域识别、增强现实中的虚拟对象放置、3D 建模重建,以及机器人抓取任务中的空间定位等。
传统的深度获取方式依赖专用传感器,如激光雷达(LiDAR)、结构光相机或多目立体视觉系统。这些设备基于主动或被动测距原理,虽能提供较精确的结果,但普遍存在成本高、体积大、部署复杂等问题。相比之下,普通摄像头具备显著优势:价格低廉、轻便易集成、无需额外硬件支持,并已在智能手机、无人机、机器人等设备中广泛普及。
然而,使用单一摄像头带来了一个根本性难题:如何从二维投影中恢复三维结构?例如,一个小物体可能是因为本身尺寸小,也可能只是距离遥远;一个表面是凹陷还是凸起也难以仅凭外观判断。这类歧义正是传统方法难以克服的瓶颈。而深度学习作为强大的非线性函数逼近工具,恰好为此类模糊映射提供了可行路径。
已有方法回顾
近年来,众多基于深度学习的方法被提出用于单图像深度估计。早期工作尝试直接回归像素级深度值,或将连续深度空间离散化为多个区间,转为分类任务进行预测。
随着生成式模型的发展,GANs、VAEs 及扩散模型也被引入该领域。例如,作者曾参与的研究项目 RGB-D-Fusion(Sascha Kirch 等,2023)探索了面向类人形主体的图像条件深度扩散生成机制。
尽管部分模型展现出良好性能,但多数仍局限于特定场景——如仅适用于室内或室外环境,只能预测相对深度而非真实尺度,或输出稀疏而非密集的深度图。这种专用性限制了模型的泛化能力。
与此同时,预训练基础模型(如 CLIP、DINOv2)已在图像和文本模态上展示了卓越的零样本迁移能力和低样本微调潜力。但由于高质量标注深度数据稀缺且采集成本高昂,此类基础模型一直未能有效拓展至深度估计任务。
直到 Depth Anything 的出现,这一局面才得以改变。
方法详解:构建深度估计的基础模型
Depth Anything 的核心目标是打造一个具备强泛化能力的单目深度估计通用模型。其实现路径融合了有监督与自监督学习思想,充分利用海量未标注图像资源。
该模型采用自动编码器结构,接收输入图像并输出对应的密集深度图。整个训练流程可分为三个阶段:
- 教师模型训练:首先在有限的标注数据集上训练一个高性能教师网络,用于生成可靠的深度预测结果。
- 伪标签预训练:利用教师模型对大规模无标签图像生成伪深度图,作为监督信号来训练学生模型(即最终的 Depth Anything 模型)。
- 可选微调阶段:根据具体下游任务需求,可在特定数据集上对模型进行微调以进一步提升性能。
[此处为图片3]
图2:Depth Anything 整体训练与推理流程示意图。来源:Sascha Kirch + 注释
这种方法巧妙地绕过了对大规模真实深度标注的依赖,转而通过知识蒸馏的方式,将教师模型的能力迁移到更通用的学生模型中,从而实现了对多样化场景下深度结构的有效建模。
实验与定性分析
论文展示了 Depth Anything 在多种复杂场景下的深度预测效果,涵盖远近景交替、遮挡处理、纹理缺失区域以及不同光照条件等挑战。定性结果显示,模型不仅能捕捉宏观布局,还能还原细粒度结构,如栏杆间距、楼梯台阶高度、植被层次等。
此外,作者还验证了模型在跨域任务中的零样本表现,证明其无需微调即可适应室内、室外、城市街景、自然景观等多种环境,体现出真正的通用性。
进一步阅读建议
- 《Vision Transformers Are Robust Learners for Depth Estimation》
- 《MiDaS: Towards Robust Monocular Depth Estimation via Mixed Dataset Integration》
- 《DPT: DINO-based Pre-trained Transformers for Monocular Depth Estimation》
- 《ZoeDepth: Zero-shot Transfer by Combining Relative and Metric Depth》
获取深度标签的传统方法依赖于大量带标签的数据,而这类数据的收集过程通常既昂贵又耗时。相比之下,未标记图像则数量庞大且易于获取。因此,研究者们自然倾向于利用这些丰富的无标签资源来提升深度学习模型的性能。尽管已有部分先前工作尝试结合经典计算机视觉技术(如立体标定或运动结构恢复)从无标签数据中推导深度信息,但这些方法往往流程复杂、效率低下。
Depth Anything 的研究团队提出了一种更高效的策略:他们首先使用一个包含 150 万个样本的高质量标注数据集,配合强大的预训练 DINOv2 编码器——一种以生成语义丰富特征著称的基础模型——训练出一个高性能的教师模型。该教师模型随后被用于为 6200 万张未标记图像生成伪深度标签,这些伪标签进一步用于训练学生模型。
towardsdatascience.com/depth-anything-a-foundation-model-for-monocular-depth-estimation-8a7920b5c9cc
通过这种方式,学生模型可以在监督学习框架下进行训练,从而快速、高效地输出密集的深度图。虽然伪标签不可避免地存在误差,但作者引入了一系列关键技术来缓解这一问题。值得注意的是,学生模型在架构上与教师保持一致,但并未继承其权重;其编码器由 DINOv2 初始化,而解码器则是随机初始化的。
在探索多任务学习的过程中,作者曾尝试在未标记数据上联合训练深度估计和语义分割任务,采用共享编码器与独立解码器的设计,并借助基础模型对图像进行自动标注。然而,这种方案未能取得理想效果。最终,他们转而采用特征对齐机制作为替代方案。
具体而言,在学生模型训练过程中,其编码器的输出被约束为尽可能接近冻结的 DINOv2 编码器所产生的特征表示。这种对齐关系通过计算两者特征图之间的平均余弦相似度实现,并将损失定义为 1 减去该相似度值——以此惩罚特征差异。余弦相似度的选择强调方向一致性而非绝对距离,有助于保留语义结构。
[此处为图片2]由于 DINOv2 对同一物体不同部位(例如汽车前后端)可能产生高度相似的特征,而这些区域在实际深度图中可能存在显著差异,因此完全强制特征对齐可能导致冲突。为此,作者引入了一个边缘(margin)机制,允许一定程度上的偏差存在,从而在保持语义一致性的同时避免过度约束。根据论文中的消融实验推测,该边缘值可能设为 0.15,即忽略小于该阈值的损失项。
此外,仅引入未标记数据本身并不足以超越基于纯标注数据的基线性能。为了增强模型鲁棒性,作者对学生模型输入的未标记图像施加了强数据扰动。这些扰动仅作用于学生端,不影响教师模型或 DINOv2 编码器的输入。
所采用的扰动手段包括颜色抖动、添加图像噪声以及空间扭曲等典型增强技术。这类方法已在 DINO、BYOL 等自监督学习框架中得到验证。其核心思想在于:无论图像外观如何变化(如模糊、镜像或色彩偏移),模型都应学会提取相同事物的一致特征表达。
整体训练数据由两部分构成:150 万张带有密集深度图标签的标注图像,以及 6200 万张来自室内外场景的未标注图像。其中,深度标签为像素级,每个像素均对应一个深度值(若原始深度图分辨率较低,则需插值处理以匹配图像尺寸)。
[此处为图片3]表 1:数据集组成
学生模型的总体损失函数由三项加权平均构成:
- 标注图像损失:衡量学生模型预测结果与真实深度标签之间的差异,采用平均绝对误差(MAE)作为度量标准。
- 特征对齐损失:通过比较学生编码器与 DINOv2 编码器输出特征的余弦相似度计算得出,目标是使学生学到更具语义意义的表示。
- 无标签图像损失:评估学生模型在未标注数据上的预测结果与其对应的教师生成伪标签之间的差距。
第一项损失函数如下所示:
[此处为图片4]方程式 1:标注图像的损失项
第二项特征对齐损失定义为:
[此处为图片5]方程式 2:特征对齐损失项
综上所述,该方法通过融合大规模无标签数据、伪标签生成、特征对齐约束以及强数据增强策略,实现了对深度估计模型的有效训练,同时充分利用了现有基础模型的强大表征能力。
在探讨未标记数据的处理方式时,研究者对部分样本采用了 CutMix 增强技术,覆盖了约 50% 的数据。该方法通过掩码将两张图像进行融合,即使单张图像经历了较强的扰动,依然能有效提升模型鲁棒性。
组合后的图像被送入学生模型,而教师模型则接收原始的单张图像以生成伪标签。随后计算平均绝对误差作为损失指标。值得注意的是,损失函数会分别针对由掩码 M 划分出的两个图像区域独立计算两次。
towardsdatascience.com/depth-anything-a-foundation-model-for-monocular-depth-estimation-8a7920b5c9cc
公式 3:CutMix 图像构建过程。
来源 + Sascha Kirch 的注释
公式 4:未标记图像损失项中的各子项分解。
来源 + Sascha Kirch 的注释
最终,所有局部损失项被加总,并对全部像素取均值。可以推测,无需再次乘以掩码,因为在前述公式中已完成了相关操作。
[此处为图片3]公式 5:未标记图像的整体损失表达式。
来源 + Sascha Kirch 的注释
定性分析
在进入实验细节和消融研究之前,先查看一些定性结果有助于更直观地理解模型表现。为此,研究人员调整了论文叙述顺序,优先展示视觉输出效果。
首次测试中,模型在多个未曾见过的数据集上进行了推理,涵盖室内外场景以及多变的光照条件,展现出良好的泛化能力。
[此处为图片4]图 3:在六个未知数据集上的定性预测结果。
来源 + Sascha Kirch 的注释
此外,Depth Anything 模型还与 MiDaS v3.1 进行了对比。结果显示,前者在细节捕捉和整体场景理解方面更具优势,能够更有效地解决深度估计中的歧义问题。
[此处为图片5]图 4:Depth Anything 与 MiDaS v3.1 的视觉对比结果。
来源 + Sascha Kirch 的注释
最后一次定性评估利用 ControlNet——一种基于扩散机制的生成模型,结合预测的深度图和文本提示来合成新图像,验证了预测深度图的实际可用性。
[此处为图片6]图 5:基于预测深度与文本引导的 ControlNet 图像生成示例。
来源 + Sascha Kirch 的注释
实验设计与消融分析
接下来深入分析所开展的实验及消融研究,旨在系统评估该方法的有效性。
主要实验发现
- Depth Anything 编码器即使采用较小的骨干网络,在零样本相对深度估计和域内微调下的度量深度估计任务中仍超越此前的最先进方法(SOTA)。
- 引入的特征对齐约束被证明是有效的,且 Depth Anything 学习到的特征具有丰富的语义信息,可成功迁移到分割等下游任务中。
零样本相对深度估计
在此设定下,Depth Anything 模型首先在其自建数据集上完成预训练,随后直接在其他未接触过的数据集上进行评估(即零样本设置),不参与任何微调过程。其性能与 MiDaS v3.1 的最优检查点进行了比较。
[此处为图片7]表 2:零样本相对深度估计性能对比。
来源 + Sascha Kirch 的注释
域内微调用于度量深度估计
该实验中,已在相对深度任务上预训练好的 Depth Anything 模型被进一步用于度量深度估计的微调。具体而言,构建一个编码器-解码器结构,其中编码器使用预训练权重初始化,解码器则随机初始化。整个模型通过 ZoeDepth 框架,在特定数据集的训练集上进行微调,并在同一数据集的测试集上评估,最终与其他先进模型进行性能对比。
表 3:微调(领域内)度量深度估计。
在该实验中,预训练的 Depth Anything 模型经过微调后应用于特定数据集上的度量深度估计任务。模型在与训练数据同分布的目标数据集上进行评估,验证其在已知领域内的性能表现。
采用 ZoeDepth 框架对两个不同的度量深度估计模型进行了微调处理。其中一个模型以 MiDaS v3.1 作为编码器(在表格中标记为 ZoeDepth),另一个则使用 Depth Anything 编码器,以比较不同主干网络的影响。
towardsdatascience.com/depth-anything-a-foundation-model-for-monocular-depth-estimation-8a7920b5c9cc
表 4:微调(零样本)度量深度估计。
在此设置下,相同的 Depth Anything 预训练模型被用于零样本迁移场景下的度量深度估计。尽管未在目标数据集上进行任何训练,模型仍展现出较强的泛化能力,并在跨数据集条件下进行评估。
[此处为图片2]表 5:微调语义分割。
为了探究 Depth Anything 编码器的语义表达能力,研究人员将其应用于语义分割任务的微调实验中。值得注意的是,在原始训练过程中,该编码器通过特征对齐损失被约束,使其学习到与 DINOv2 编码器相似的特征空间。而 DINOv2 作为一种已知具备强大语义嵌入能力的基础模型,为这一设计提供了理论支持。
[此处为图片3]表 6:一般消融研究。
本部分开展了一项综合性的消融分析,旨在评估各组件对整体性能的贡献。具体包括不同损失函数项、附加约束条件以及在未标注数据上引入强数据增强策略的有效性。实验结果揭示了各个模块对模型表现的具体影响。
[此处为图片4]表 7:不同下游任务上不同编码器的比较。
作为最后一项消融实验,作者对比了多种编码器在深度估计和语义分割任务中的微调效果。结果显示,Depth Anything 编码器在多个下游任务中均优于 DINOv2 和 MiDaS 的编码器,表明其特征空间不仅保留了结构信息,还融合了更丰富的语义内容。
[此处为图片5]结论
Depth Anything 标志着向构建非图像和文本模态之外的基础模型迈出了重要一步。研究成功开发出一个既强大又富含语义信息的编码器,既能以零样本方式直接部署,也可灵活地针对特定数据集进行微调,展现出广泛的应用潜力。


雷达卡


京公网安备 11010802022788号







