文章目录
- 1.摘要
- 2.引言
- 2.相关工作
- 3.Depth Anything
- 3.1 Learning Labeled Images
- 3.2. Unleashing the Power of Unlabeled Images
- 3.3. Semantic-Assisted Perception
- 4. Experiment
- 4.1. 实施细节
- 4.2. 零样本相对深度估计
- 4.3. 微调至度量深度估计
- 4.3.1 领域内度量深度估计
- 4.3.2 零样本度量深度估计
- 4.3 微调到度量深度估计
- 4.3.1 领域内度量深度估计
- 4.3.2 零-shot 度量深度估计
- 4.4 微调到语义分割
- 4.5 消融研究
- 4.6 定性结果
- 5 结论
- 致谢
- Depth Anything: 发掘大规模未标记数据的力量
- 6. 更多实现细节
- 7. 更多消融研究
- 8. 局限性和未来工作
- 9. 更多定性结果
图1. 我们的模型在大量未见场景中展现了令人印象深刻的泛化能力。左两列:COCO [36]。中间两列:SA-1B [27](未见的保留数据集)。右两列:我们自己拍摄的照片。我们的模型在低光环境下(第1列和第3列)、复杂场景(第2列和第5列)、雾霾天气(第5列)以及超远距离(第5列和第6列)等条件下都表现得非常稳健。
1.摘要
这项工作介绍了 Depth Anything1,一个高度实用的解决方案,用于稳健的单目深度估计。我们不追求新的技术模块,而是旨在构建一个简单而强大的基础模型,以处理任何环境下的图像。为此,我们通过设计一个数据引擎来收集和自动标注大规模的未标记数据(约6200万),从而显著扩大数据覆盖范围,减少泛化误差。我们探讨了两种简单而有效的策略,使得数据规模的扩大变得有希望。首先,通过利用数据增强工具创建了一个更具挑战性的优化目标,迫使模型积极寻求额外的视觉知识并获取稳健的表征。其次,开发了辅助监督机制,以强制模型从预训练编码器中继承丰富的语义先验。我们广泛评估了其零样本能力,包括六个公共数据集和随机捕捉的照片。结果显示了令人印象深刻的泛化能力(见图1)。此外,通过使用来自 NYUv2 和 KITTI 的度量深度信息进行微调,设立了新的最先进技术(SOTAs)。我们的改进深度模型还带来了更好的深度条件控制网络(ControlNet)。我们的模型已经发布。
2.引言
计算机视觉和自然语言处理领域目前正在经历一场革命,伴随着“基础模型”[6] 的出现,这些模型在各种下游场景中表现出了强大的零样本/少样本能力[45, 59]。这些成功主要依赖于大规模的训练数据,这些数据能够有效地覆盖数据分布。单目深度估计(MDE)是一个基本问题,在机器人技术[66]、自动驾驶[64, 80]、虚拟现实[48]等领域有着广泛的应用,也需要一个基础模型来从单张图像中估计深度信息。然而,由于构建具有数千万深度标签的数据集的难度,这一领域的探索仍然较少。MiDaS [46] 在这一方向上进行了开创性的研究,通过在一系列混合标注数据集上训练MDE模型。尽管MiDaS展示了一定的零样本能力,但由于数据覆盖范围的限制,它在某些场景下的表现仍然不尽如人意。
在这项工作中,我们的目标是构建一个基础模型,用于单目深度估计(MDE),能够在任何环境下为任何图像生成高质量的深度信息。我们从数据集扩展的角度来实现这个目标。传统上,深度数据集主要通过从传感器[18, 55]获取深度数据、立体匹配[15]或结构光重建(SfM)[33]来创建,这些方法在某些情况下成本高、耗时长,甚至难以实施。我们则首次关注大规模未标注数据。与立体图像或来自深度传感器的标注图像相比,我们使用的单目未标注图像具有以下三大优势:(i)(简单且便宜)单目图像几乎无处不在,因此容易收集,无需专门的设备。(ii)(多样化)单目图像可以覆盖更广泛的场景,这对于模型的泛化能力和可扩展性至关重要。(iii)(易于标注)我们可以简单地使用预训练的MDE模型为未标注图像分配深度标签,这只需要一次前向传播步骤。这样不仅高效,还能生成比LiDAR[18]更密集的深度图,并且省略了计算密集型的立体匹配过程。
我们设计了一个数据引擎,以自动生成未标注图像的深度注释,从而使数据扩展到任意规模。该引擎从八个公共的大规模数据集中收集了6200万张多样且信息丰富的图像,例如SA-1B [27]、Open Images [30]和BDD100K [82]。我们使用这些原始未标注图像,没有任何形式的标签。然后,为了为我们的未标注图像提供一个可靠的注释工具,我们从六个公共数据集中收集了150万张标注图像,用于训练初步的MDE模型。接下来,未标注图像被自动注释,并与标注图像一起以自我训练的方式进行联合学习[31]。
尽管单目未标注图像具有上述所有优点,但在充分标注图像和强大的预训练模型的情况下,充分利用如此大规模的未标注图像确实并非易事[73, 90]。在我们的初步尝试中,直接将标注图像和伪标注图像结合在一起,并未能提高仅使用标注图像的基准水平。我们推测,这种简单的自我学习方式获得的额外知识是相当有限的。为了解决这个难题,我们提出了一个挑战性的方案:在学习伪标注时,给学生模型设置一个更难的优化目标。学生模型被迫在各种强扰动下寻求额外的视觉知识,并学习更鲁棒的表示,以更好地处理未见过的图像。
此外,一些研究[9, 21]已经展示了辅助语义分割任务对MDE的好处。我们也沿袭了这一研究方向,旨在为我们的模型提供更好的高级场景理解能力。然而,我们观察到当MDE模型已经足够强大时,这种辅助任务很难带来进一步的提升。我们推测这是由于在将图像解码到离散类别空间时,语义信息严重丢失。因此,考虑到DINOv2在语义相关任务中的优异表现,我们提出通过简单的特征对齐损失来保持其丰富的语义先验。这不仅提升了MDE的性能,还产生了一个用于中级和高级感知任务的多任务编码器。
我们的贡献总结如下:
• 我们强调了大规模、廉价且多样化的未标注图像在单目深度估计(MDE)中的数据扩展价值。
• 我们指出了联合训练大规模标注和未标注图像的关键实践。我们并非直接学习原始未标注图像,而是通过设置更困难的优化目标来挑战模型,从而获得额外的知识。
• 我们提出从预训练编码器中继承丰富的语义先验以提升场景理解能力,而不是使用辅助的语义分割任务。
• 我们的模型展现了比MiDaS-BEiTL-512 [5] 更强的零样本能力。此外,通过与度量深度进行微调,它在性能上显著超过了ZoeDepth [4]。
2.相关工作
单目深度估计(MDE)。 早期的研究[23, 37, 51]主要依赖于手工设计的特征和传统计算机视觉技术。它们受限于对显式深度线索的依赖,难以处理具有遮挡和无纹理区域的复杂场景。
基于深度学习的方法通过有效地从精细标注的数据集中学习深度表示,彻底改变了单目深度估计[18, 55]。Eigen 等人[17]首次提出了一个多尺度融合网络来回归深度。在此基础上,许多研究通过将回归任务精心设计为分类任务[3, 34]、引入更多先验知识[32, 54, 76, 83]、改进目标函数[68, 78]等,持续提高了深度估计的准确性。尽管这些方法表现出色,但它们难以推广到未见过的领域。
零样本深度估计。 我们的工作属于这一研究方向。我们旨在使用多样化的训练集训练一个单目深度估计(MDE)模型,从而可以为任何给定的图像预测深度。一些开创性的工作[10, 67]探索了这个方向,通过收集更多的训练图像来进行研究,但它们的监督非常稀疏,仅在有限的点对上进行强制。
为了实现有效的多数据集联合训练,一个里程碑式的工作是MiDaS [46],它利用仿射不变损失来忽略不同数据集之间可能存在的深度尺度和偏移差异。因此,MiDaS提供了相对深度信息。最近,一些工作[4, 22, 79]进一步迈进,旨在估计度量深度。然而,在我们的实践中,我们观察到这些方法的泛化能力比MiDaS差,尤其是其最新版本[5]。此外,如ZoeDepth [4]所示,一个强大的相对深度估计模型也可以通过与度量深度信息进行微调,在可泛化的度量深度估计中表现良好。因此,我们仍然遵循MiDaS的相对深度估计,但通过突出大规模单目未标注图像的价值进一步增强其性能。
利用未标注数据。 这属于半监督学习的研究领域[31, 56, 90],在各种应用中非常受欢迎[71, 75]。然而,现有的工作通常假设只有有限的图像可用。它们很少考虑到这样一个具有挑战性但现实的场景,即已经有足够的标注图像,但也有更大规模的未标注图像。我们在零样本单目深度估计(MDE)中采用了这一具有挑战性的方向。我们展示了未标注图像可以显著增强数据覆盖范围,从而提高模型的泛化能力和鲁棒性。
3.Depth Anything
我们的工作利用了标记和未标记的图像,以促进更好的单目深度估计(MDE)。形式上,标记和未标记的数据集分别表示为 D l = { ( x i , d i ) } i = 1 M D_l = \{(x_i, d_i)\}_{i=1}^M Dl={(xi,di)}i=1M 和 D u = { u i } i = 1 N D_u = \{u_i\}_{i=1}^N Du={ui}i=1N。我们的目标是从 D l D_l Dl 学习一个教师模型 T T T。然后,我们利用 T T T 为 D u D_u Du 分配伪深度标签。最后,我们在标记数据集和伪标签数据集的组合上训练学生模型 S S S。图2 提供了一个简要的示意图。
3.1 Learning Labeled Images
这个过程类似于MiDaS [5, 46] 的训练。然而,由于MiDaS没有发布其代码,我们首先进行了再现。具体而言,深度值首先通过
d
=
1
t
d = \frac{1}{t}
d=t1 转换到视差空间,然后在每个深度图上归一化到
0
∼
1
0 \sim 1
0∼1。为了实现多数据集联合训练,我们采用了仿射不变损失,以忽略每个样本的未知缩放和偏移:
L
l
=
1
H
W
∑
i
=
1
H
W
ρ
(
d
i
∗
,
d
i
)
,
(1)
\mathcal{L}_l = \frac{1}{HW}\sum_{i=1}^{HW}\rho(d_i^*, d_i), \tag{1}
Ll=HW1i=1∑HWρ(di∗,di),(1)
其中
d
i
∗
d_i^*
di∗ 和
d
i
d_i
di 分别是预测值和真实值。
ρ
\rho
ρ 是仿射不变的平均绝对误差损失:
ρ
(
d
i
∗
,
d
i
)
=
∣
d
^
i
∗
−
d
^
i
∣
,
\rho(d_i^*, d_i) = | \hat{d}_i^* - \hat{d}_i |,
ρ(di∗,di)=∣d^i∗−d^i∣,其中
d
^
i
∗
\hat{d}_i^*
d^i∗ 和
d
^
i
\hat{d}_i
d^i 是预测
d
i
∗
d_i^*
di∗ 和真实值
d
i
d_i
di 的缩放和平移版本:
d
^
i
=
d
i
−
t
(
d
)
s
(
d
)
,
(2)
\hat{d}_i = \frac{d_i - t(d)}{s(d)}, \tag{2}
d^i=s(d)di−t(d),(2)
其中
t
(
d
)
t(d)
t(d) 和
s
(
d
)
s(d)
s(d) 用于对齐预测值和真实值,使其具有零平移和单位缩放:
t
(
d
)
=
median
(
d
)
,
s
(
d
)
=
1
H
W
∑
i
=
1
H
W
∣
d
i
−
t
(
d
)
∣
.
(3)
t(d) = \text{median}(d), \hspace{2mm} s(d) = \frac{1}{HW}\sum_{i=1}^{HW}|d_i - t(d)|. \tag{3}
t(d)=median(d),s(d)=HW1i=1∑HW∣di−t(d)∣.(3)
为了获得一个稳健的单目深度估计模型,我们从6个公共数据集中收集了150万标记图像。这些数据集的详细信息列在表1中。我们使用的标记数据集比MiDaS v3.1 [5] (12个训练数据集) 要少,因为:1) 我们不使用NYUv2 [55] 和 KITTI [18] 数据集,以确保对它们的零-shot评估;2) 一些数据集(如Movies [46] 和 WSVD [61])已经不可用;3) 一些数据集质量较差(例如,RedWeb [67] 也分辨率较低)。尽管使用的标记图像较少,
Dataset | Indoor | Outdoor | Label | # Images |
---|---|---|---|---|
Labeled Datasets | ||||
BlendedMVS [77] | ✓ | ✓ | Stereo | 115K |
DIML [13] | ✓ | ✓ | Stereo | 927K |
HRWSI [68] | ✓ | ✓ | Stereo | 20K |
IRS [62] | ✓ | Stereo | 103K | |
MegaDepth [33] | ✓ | SfM | 128K | |
TartanAir [63] | ✓ | ✓ | Stereo | 306K |
Unlabeled Datasets | ||||
BDD100K [82] | ✓ | None | 8.2M | |
Google Landmarks [65] | ✓ | None | 4.1M | |
ImageNet-21K [50] | ✓ | ✓ | None | 13.1M |
LSUN [81] | ✓ | None | 9.8M | |
Objects365 [53] | ✓ | ✓ | None | 1.7M |
Open Images V7 [30] | ✓ | ✓ | None | 7.8M |
Places365 [88] | ✓ | ✓ | None | 6.5M |
SA-1B [27] | ✓ | ✓ | None | 11.1M |
表1. 总体而言,我们的 Depth Anything 模型在 150 万张标记图像和 6200 万张未标记图像上进行了联合训练。
我们的易于获取且多样化的未标记图像将提高数据覆盖率,并大大增强模型的泛化能力和鲁棒性。此外,为了增强从这些标记图像中学习到的教师模型 ( T ),我们采用了 DINOv2 [43] 预训练权重来初始化我们的编码器。在实际操作中,我们应用了一个预训练的语义分割模型 [70] 来检测天空区域,并将其视差值设置为 0(最远)。
3.2. Unleashing the Power of Unlabeled Images
这是我们工作的重点。与以前那些费力构建多样化标记数据集的工作不同,我们强调了未标记图像在增强数据覆盖率方面的价值。如今,我们可以从互联网或各种任务的公共数据集中实际构建一个多样化的大规模未标记数据集。此外,我们可以通过将这些单目未标记图像直接输入到一个经过预训练且性能良好的单目深度估计(MDE)模型中,轻松获得其稠密深度图。这比对立体图像或视频执行立体匹配或结构光重建要方便高效得多。我们选择了八个大规模公共数据集作为我们的未标记数据源,因为它们涵盖了多样的场景。这些数据集总共包含超过6200万张图像。具体细节见表1的下半部分。
从技术上讲,给定先前获得的MDE教师模型
T
T
T,我们对未标记数据集
D
u
D_u
Du 进行预测,以获得伪标记数据集
D
^
u
\hat{D}^u
D^u:
D
^
u
=
{
(
u
i
,
T
(
u
i
)
)
∣
u
i
∈
D
u
}
i
=
1
N
.
(4)
\hat{\mathcal{D}}^u = \{(u_i, T(u_i)) \mid u_i \in \mathcal{D}^u\}_{i=1}^N. \tag{4}
D^u={(ui,T(ui))∣ui∈Du}i=1N.(4)
使用标记图像和伪标记图像的组合集
D
l
∪
D
^
u
D_l \cup \hat{D}^u
Dl∪D^u,我们在其上训练学生模型
S
S
S。
图2. 我们的管道。实线:标记图像的流动,虚线:未标记图像。我们特别强调大规模未标记图像的价值。
S
S
S 表示添加强扰动(第3.2节)。为了使我们的深度估计模型具备丰富的语义先验,我们在在线学生模型和冻结的编码器之间施加了一个辅助约束,以保留语义能力(第3.3节)。
参考之前的工作 [74],我们没有从 T T T 微调 S S S,而是重新初始化 S S S 以获得更好的性能。不幸的是,在我们的初步研究中,我们未能通过这种自我训练管道获得改进,这确实与只有少量标记图像时的观察结果 [56] 相矛盾。我们推测,在我们的情况下,已经有足够的标记图像,额外从未标记图像中获得的知识相对有限。特别是考虑到教师和学生共享相同的预训练和架构,它们往往对未标记数据集 D u D_u Du 做出类似的正确或错误的预测,即使没有明确的自我训练过程。
为了解决这一困境,我们提出了一个更具挑战性的优化目标,以从未标记图像中获取额外的视觉知识。我们在训练过程中对未标记图像注入强扰动。这迫使我们的学生模型主动寻找额外的视觉知识,并从这些未标记图像中获取不变的表示。这些优势帮助我们的模型更稳健地应对开放世界。我们引入了两种形式的扰动:一种是强颜色失真,包括颜色抖动和高斯模糊,另一种是强空间失真,即 CutMix [84]。尽管这些修改很简单,但它们显著提高了基于标记图像的基线。
我们提供了关于 CutMix 的更多细节。CutMix 最初是为图像分类提出的,且在单目深度估计中很少被探索。我们首先对随机配对的未标记图像
u
a
u_a
ua 和
u
b
u_b
ub 进行空间插值:
u
a
b
=
u
a
⊙
M
+
u
b
⊙
(
1
−
M
)
,
(5)
u_{ab} = u_a \odot M + u_b \odot (1 - M), \tag{5}
uab=ua⊙M+ub⊙(1−M),(5)
其中
M
M
M 是一个矩形区域为 1 的二值掩码。未标记损失
L
u
L_u
Lu 通过首先计算在
M
M
M 和
1
−
M
1 - M
1−M 定义的有效区域中的仿射不变损失得到:
L
u
M
=
ρ
(
S
(
u
a
b
)
⊙
M
,
T
(
u
a
)
⊙
M
)
,
(6)
\mathcal{L}^M_u = \rho \big (S(u_{ab}) \odot M, \,T(u_a) \odot M\big ), \tag{6}
LuM=ρ(S(uab)⊙M,T(ua)⊙M),(6)
L
u
1
−
M
=
ρ
(
S
(
u
a
b
)
⊙
(
1
−
M
)
,
T
(
u
b
)
⊙
(
1
−
M
)
)
,
(7)
\mathcal{L}^{1-M}_u = \rho \big (S(u_{ab}) \odot (1-M), T(u_b) \odot (1-M)\big ), \tag{7}
Lu1−M=ρ(S(uab)⊙(1−M),T(ub)⊙(1−M)),(7)
其中我们为了简化起见省略了
P
P
P 和像素下标
i
i
i。然后我们通过加权平均聚合这两个损失:
L
u
=
∑
M
H
W
L
u
M
+
∑
(
1
−
M
)
H
W
L
u
1
−
M
.
(8)
\mathcal{L}_u = \frac {\sum M}{HW}\mathcal{L}^M_u + \frac {\sum (1-M)}{HW}\mathcal{L}^{1-M}_u. \tag{8}
Lu=HW∑MLuM+HW∑(1−M)Lu1−M.(8)
我们使用 50% 的概率应用 CutMix。用于 CutMix 的未标记图像已经在颜色上被强烈扭曲,而输入到教师模型
T
T
T 中用于伪标签的未标记图像则保持干净,没有任何扭曲。
3.3. Semantic-Assisted Perception
一些研究 [9, 21, 28, 72] 提出了通过辅助语义分割任务来改进深度估计的方法。我们相信,赋予我们的深度估计模型这种高级语义相关信息是有益的。此外,在我们利用未标记图像的具体背景下,这些来自其他任务的辅助监督信号也可以对抗我们伪深度标签中的潜在噪声。因此,我们进行了初步尝试,通过结合 RAM [86] + GroundingDINO [38] + HQ-SAM [26] 模型来仔细分配语义分割标签到我们的未标记图像。经过后处理,这产生了一个包含 4K 类别的类空间。在联合训练阶段,模型被强制使用共享编码器和两个单独的解码器来生成深度和分割预测。不幸的是,经过反复试验,我们仍然无法提升原始 MDE 模型的性能。我们推测,将图像解码到离散的类空间确实丢失了过多的语义信息。语义掩码中的有限信息很难进一步提升我们的深度模型,特别是当我们的深度模型已经建立了非常有竞争力的结果时。
因此,我们旨在寻找更具信息量的语义信号作为深度估计任务的辅助监督。我们对 DINOv2 模型 [43] 在语义相关任务中的强大表现感到非常惊讶,例如图像检索和语义分割,即使是在没有任何微调的情况下,冻结权重的情况下也表现出色。受到这些线索的激励,我们提议将其强大的语义能力转移到我们的模型中。
Table 2. Zero-shot relative depth estimation. 更好:AbsRel ↓ ,δ1 ↑。我们与 MiDaS v3.1 的最佳模型进行比较。请注意,MiDaS 并未严格遵循 KITTI 和 NYUv2 的零-shot 评估,因为它使用了这些数据集的训练图像。我们提供了三种模型规模用于不同的目的,分别基于 ViT-S (24.8M)、ViT-B (97.5M) 和 ViT-L (335.3M)。最佳、第二最佳结果。
我们提出了一种具有辅助特征对齐损失的深度模型。特征空间是高维和连续的,因此包含比离散掩膜更丰富的语义信息。特征对齐损失的公式为:
L f e a t = 1 − 1 H W ∑ i = 1 H W cos ( f i , f i ′ ) , \mathcal{L}_{feat} = 1 - \frac{1}{HW} \sum_{i=1}^{HW} \cos(f_i, f'_i), Lfeat=1−HW1i=1∑HWcos(fi,fi′),
其中 cos ( ⋅ , ⋅ ) \cos(\cdot, \cdot) cos(⋅,⋅) 测量两个特征向量之间的余弦相似度。 f f f 是由深度模型 S S S 提取的特征,而 f ′ f' f′ 是来自冻结的 DINOv2 编码器的特征。
我们没有像某些研究 [19] 那样将在线特征 f f f 投影到新的空间进行对齐,因为随机初始化的投影器会使得大对齐损失在早期阶段主导整体损失。
特征对齐的另一个关键点是,像 DINOv2 这样的语义编码器往往对物体的不同部分(如汽车的前部和后部)产生相似的特征。然而,在深度估计中,同一部分或甚至同一部分内的像素可能具有不同的深度。因此,强制我们的深度模型产生与冻结编码器完全相同的特征并不有益。
为了解决这个问题,我们为特征对齐设置了容差边界 α \alpha α。如果 f i f_i fi 和 f i ′ f_i' fi′ 的余弦相似度超过了 α \alpha α,那么这个像素将不被考虑在我们的 L f e a t \mathcal{L}_{feat} Lfeat 中。这使得我们的方法能够兼具 DINOv2 的语义感知表示和深度监督的部分级别判别表示。作为副作用,我们生成的编码器不仅在下游的 MDE 数据集上表现良好,而且在语义分割任务上也取得了强劲的结果。这也表明了我们的编码器可以作为一个通用的多任务编码器,适用于中级和高级感知任务。
最后,我们的总体损失是三个损失 L l \mathcal{L}_l Ll、 L u \mathcal{L}_u Lu 和 L f e a t \mathcal{L}_{feat} Lfeat 的平均组合。
4. Experiment
4.1. 实施细节
我们采用了 DINOv2 编码器 [43] 进行特征提取。根据 MiDaS [5, 46] 的方法,我们使用 DPT [47] 解码器进行深度回归。所有标记的数据集都简单地结合在一起,没有重新采样。在第一阶段,我们对标记的图像训练一个教师模型 20 个周期。在第二阶段的联合训练中,我们训练一个学生模型,对所有未标记的图像进行一次遍历。未标记的图像由具有 ViT-L 编码器的性能最佳的教师模型进行标注。在每个批次中,标记和未标记图像的比例设定为 1:2。在两个阶段中,预训练编码器的基础学习率设为 5 × 1 0 − 6 5 \times 10^{-6} 5×10−6,而随机初始化的解码器使用 10 倍大的学习率。我们使用 AdamW 优化器,并采用线性学习率衰减策略。对于标记图像,我们仅应用水平翻转作为数据增强。特征对齐损失的容忍度边际 α \alpha α 设置为 0.85。更多细节请参考我们的附录。
4.2. 零样本相对深度估计
如前所述,本工作旨在为任何图像提供准确的深度估计。因此,我们全面验证了我们 Depth Anything 模型在六个具有代表性的未见数据集上的零样本深度估计能力:KITTI [18]、NYUv2 [55]、Sintel [7]、DDAD [20]、ETH3D [52] 和 DIODE [60]。我们与最新的 MiDaS v3.1 [5] 中最好的 DPT-BEiTL-512 模型进行了比较,该模型使用了比我们更多的标记图像。如表 2 所示,我们的 Depth Anything 模型在 ViT-L 编码器下,在 AbsRel(绝对相对误差:
∣
d
∗
−
d
∣
d
\frac{|d^* - d|}{d}
d∣d∗−d∣)和
δ
1
\delta_1
δ1(最大值
max
(
d
∗
d
,
d
d
∗
)
<
1.25
\max(\frac{d^*}{d}, \frac{d}{d^*}) < 1.25
max(dd∗,d∗d)<1.25 的百分比)指标上,显著超越了最强的 MiDaS 模型。例如,当在著名的自动驾驶数据集 DDAD [20] 上测试时,我们将 AbsRel(
↓
\downarrow
↓)从 0
表 3. 使用我们预训练的 MDE 编码器在 NYUv2 [55] 上进行微调和评估。我们突出显示了最佳结果、第二最佳结果以及最具区分度的指标。∗:由我们重新生成。
在 KITTI 和 NYUv2 基准测试中,尽管 MiDaS v3.1 使用了相应的训练图像(不再是零样本评估),我们的 Depth Anything 在没有使用任何 KITTI 或 NYUv2 图像进行训练的情况下,仍然明显优于它。例如,在 KITTI 上,AbsRel 从 0.127 改进到 0.076,δ1 从 0.850 改进到 0.947。
4.3. 微调至度量深度估计
除了在零样本相对深度估计中的出色表现外,我们进一步检验了我们的 Depth Anything 模型作为下游度量深度估计的有前景的权重初始化。我们使用预训练的编码器参数初始化下游 MDE 模型的编码器,并随机初始化解码器。该模型使用相应的度量深度信息进行微调。在这一部分,我们使用 ViT-L 编码器进行微调。
我们检查了两个代表性场景:1) 领域内度量深度估计,即在相同领域上训练和评估模型(第 4.3.1 节),以及 2) 零样本度量深度估计,即在一个领域(例如 NYUv2 [55])上训练模型,但在不同领域(例如 SUN RGB-D [57])上进行评估(第 4.3.2 节)。
4.3.1 领域内度量深度估计
如表 3 所示,在 NYUv2 [55] 上,我们的模型显著超越了之前的最佳方法 VPD [87],将 δ1(↑)从 0.964 提高到 0.984,将 AbsRel(↓)从 0.069 降低到 0.056。在 KITTI 数据集 [18] 的表 4 中也可以观察到类似的改进。我们将 KITTI 上的 δ1(↑)从 0.978 提高到 0.982。值得注意的是,在此场景中我们使用了 ZoeDepth 框架,搭配相对基础的深度模型,我们相信如果配备更先进的架构,我们的结果还可以进一步提升。
4.3.2 零样本度量深度估计
我们按照 ZoeDepth [4] 进行零样本度量深度估计。ZoeDepth 微调了 MiDaS 预训练的编码器。
表 4. 在 KITTI [18] 上微调和评估我们的预训练 MDE 编码器。*:由我们复现
4.3 微调到度量深度估计
除了在零-shot 绝对深度估计中的出色表现,我们进一步检验了我们的 Depth Anything 模型作为下游度量深度估计的潜在权重初始化。我们用预训练编码器参数初始化下游 MDE 模型的编码器,解码器则随机初始化。模型用相应的度量深度信息进行微调。在这一部分,我们使用 ViT-L 编码器进行微调。
我们检验了两个代表性场景:
- 领域内度量深度估计,模型在同一领域上训练和评估(第 4.3.1 节)。
- 零-shot 度量深度估计,模型在一个领域上训练,例如 NYUv2 [55],但在不同领域上评估,例如 SUN RGB-D [57](第 4.3.2 节)。
4.3.1 领域内度量深度估计
如表 3 所示,在 NYUv2 [55] 上,我们的模型显著超越了之前的最佳方法 VPD [87],将 δ1 (↑) 从 0.964 提升至 0.984,将 AbsRel (↓) 从 0.069 降低至 0.056。在 KITTI 数据集 [18] 上的类似改进也可见于表 4。我们在 KITTI 上将 δ1 (↑) 从 0.978 提升至 0.982。值得注意的是,我们在这一场景中采用了 ZoeDepth 框架,使用了相对基础的深度模型,我们相信如果配备更先进的架构,我们的结果可以进一步提升。
4.3.2 零-shot 度量深度估计
我们遵循 ZoeDepth [4] 进行零-shot 度量深度估计。ZoeDepth 微调了 MiDaS 预训练的编码器,使用来自 NYUv2 [55](室内场景)或 KITTI [18](户外场景)的度量深度信息。因此,我们仅用更好的 Depth Anything 编码器替换 MiDaS 编码器,其他组件保持不变。如表 5 所示,在各种室内和户外场景的未见数据集上,我们的 Depth Anything 在度量深度估计模型上优于基于 MiDaS 的原始 ZoeDepth。
4.4 微调到语义分割
在我们的方法中,我们设计了 MDE 模型,以通过简单的特征对齐约束继承预训练编码器中的丰富语义先验。这里,我们检验了 MDE 编码器的语义能力。具体来说,我们将 MDE 编码器微调到下游语义分割数据集。如表 7 所示,在 Cityscapes 数据集 [15] 上,我们的大规模 MDE 训练编码器(86.2 mIoU)优于现有的大规模 ImageNet-21K 预训练编码器,例如 Swin-L [39](84.3)和 ConvNeXt-XL [41](84.6)。在 ADE20K 数据集 [89] 上的表 8 中也有类似的观察。我们将之前的最佳结果从 58.3 提升至 59.4。
我们希望强调的是,鉴于我们预训练编码器在单目深度估计和语义分割任务中的优越性,我们相信它具有作为通用多任务编码器用于中级和高级视觉感知系统的巨大潜力。
4.5 消融研究
除非另有说明,我们在消融研究中使用 ViT-L 编码器。
零-shot 转移每个训练数据集 在表 6 中,我们提供了每个训练数据集的零-shot 转移性能,即我们在一个训练集上训练一个相对 MDE 模型,并在六个未见数据集上进行评估。通过这些结果,我们希望为未来类似旨在构建通用模型的工作提供更多见解。
表 5. 零样本度量深度估计。表头中的前三个测试集是室内场景,而最后两个是室外场景。遵循 ZoeDepth 的做法,我们使用在 NYUv2 上训练的模型进行室内泛化,使用在 KITTI 上训练的模型进行室外评估。为了公平比较,我们报告了在我们环境中复现的 ZoeDepth 结果。
表 6. 检查每个标注训练集(左侧)对六个未见数据集(顶部)的零样本迁移性能。更好的性能:AbsRel ↓ , δ1 ↑。我们分别用粗体、下划线和斜体标出每个测试数据集的最佳、第二佳和第三佳结果。
表 7. 将我们的 MDE 预训练编码器转移到 Cityscapes 用于语义分割。我们不使用 Mapillary [1] 进行预训练。s.s./m.s.: 单尺度/多尺度评估。
单目深度估计系统。在六个训练数据集中,HRWSI [68] 为我们的模型提供了最强的泛化能力,尽管它仅包含 20K 张图像。这表明数据的多样性非常重要,这与我们利用未标注图像的动机高度一致。某些标注数据集可能表现不佳,例如 MegaDepth [33],但它有自己的偏好,这些偏好在这六个测试数据集中没有体现。例如,我们发现用 MegaDepth 数据训练的模型在估计超远建筑物的距离时表现得特别好(见图 1),这对航空器非常有益。
效果:
- 在学习未标注图像时挑战学生模型的有效性。
- 语义约束的有效性。
如表 9 所示,简单地添加带有伪标签的未标注图像并不一定能提升我们的模型性能。
表 8. 将我们的 MDE 编码器转移到 ADE20K 用于语义分割。我们使用 Mask2Former 作为我们的分割模型。
由于标注图像已经足够。然而,在重新训练过程中对未标注图像施加强扰动 (S),学生模型被挑战去寻求额外的视觉知识,并学习更鲁棒的表征。因此,大规模的未标注图像显著增强了模型的泛化能力。此外,使用我们所用的语义约束 Lf eat,可以进一步放大未标注图像在深度估计任务中的效果。更重要的是,如第 4.4 节所强调的,这一辅助约束还使我们训练的编码器能够作为中级和高级感知多任务视觉系统中的关键组件。
与 MiDaS 训练编码器在下游任务中的比较。我们的 Depth Anything 模型展示了比 MiDaS [5, 46] 更强的零样本能力。在这里,我们进一步…
图 3. 在六个未见数据集上的定性结果
表 9. 消融研究:1)在学习未标注图像时,使用强扰动(S)挑战学生模型,2)语义约束(Lfeat)。由于空间限制,我们只报告AbsRel(↓)度量,并以数据集名称的前两个字母缩写。
表 10. 我们训练的编码器与 MiDaS [5] 训练的编码器在下游微调性能方面的比较。
更好性能:AbsRel ↓ ,δ1 ↑ ,mIoU ↑ 。
与 MiDaS v3.1 [5] 训练的编码器在下游微调性能方面的比较
如表 10 所示,在下游深度估计任务和语义分割任务中,我们训练的编码器显著优于 MiDaS 编码器。例如,在 NYUv2 数据集上,δ1 指标为 0.951 对比 MiDaS 的 0.984,在 ADE20K 数据集上,mIoU 指标为 52.4 对比 MiDaS 的 59.4。
与 DINOv2 在下游任务中的比较我们展示了在微调到下游任务时,我们训练的编码器的优越性。由于我们最终产生的编码器(来自大规模 MDE 训练)是从 DINOv2 [43] 微调得到的,我们在表 11 中将我们的编码器与原始 DINOv2 编码器进行了比较。可以观察到,我们的编码器在下游深度估计任务和语义分割任务中均优于原始 DINOv2 编码器。虽然 DINOv2 权重提供了非常强的初始化,但我们的大规模和高质量 MDE 训练可以在下游转移性能上进一步显著提升它。
图 4. 我们将我们的深度预测与 MiDaS 进行比较。同时,我们使用 ControlNet 从深度图合成新图像。
表 11. 原始 DINOv2 与我们产生的编码器在下游微调性能方面的比较。
4.6 定性结果
我们在图 3 中可视化了模型在六个未见数据集上的预测结果。我们的模型对来自不同领域的测试图像具有较强的鲁棒性。此外,我们在图 4 中将我们的模型与 MiDaS 进行了比较。我们还尝试使用 ControlNet [85] 基于预测的深度图合成新图像。与 MiDaS 相比,我们的模型提供了更准确的深度估计,并且合成结果更佳。为了实现更精确的合成,我们重新训练了一个更好的深度条件 ControlNet,基于我们的 Depth Anything,以提供更好的图像合成和视频编辑控制信号。请参阅我们的项目页面 [35] 以获取更多关于视频编辑的定性结果。
5 结论
在这项工作中,我们提出了 Depth Anything,这是一个高度实用的单目深度估计解决方案。与先前的工作不同,我们特别强调了廉价和多样的未标记图像的价值。我们设计了两种简单但高度有效的策略,以充分发挥它们的价值:1) 在学习未标记图像时提出更具挑战性的优化目标;2) 保留来自预训练模型的丰富语义先验。结果是,我们的 Depth Anything 模型展示了出色的零-shot 深度估计能力,并且也作为下游度量深度估计和语义分割任务的有前景的初始化方案。
致谢
这项工作得到了中国国家自然科学基金(编号 62201484)、香港大学启动基金和香港大学基础研究种子基金的支持。
Depth Anything: 发掘大规模未标记数据的力量
补充材料
6. 更多实现细节
我们将所有图像的较短边尺寸调整为 518,并保持原始长宽比。所有图像在训练过程中被裁剪为 518×518。在推理过程中,我们不裁剪图像,仅确保两边都是 14 的倍数,因为 DINOv2 编码器的预定义 patch 尺寸为 14。评估在原始分辨率下进行,通过插值预测结果来完成。与 MiDaS [5, 46] 一致,在零-shot 评估中,我们手动对齐预测结果的尺度和偏移量以匹配真实值。
在将预训练编码器微调到度量深度估计时,我们采用了 ZoeDepth 代码库 [4]。我们仅将原始的 MiDaS 基础编码器替换为更强的 Depth Anything 编码器,并修改了一些超参数。具体而言,训练分辨率设置为 NYUv2 [55] 上的 392×518 和 KITTI [18] 上的 384×768,以匹配编码器的 patch 尺寸。编码器的学习率设置为随机初始化的解码器学习率的 1/50,因我们的初始化非常强,而非 MiDaS 编码器采用的 1/10。批量大小为 16,模型训练 5 轮。
在将预训练编码器微调到语义分割时,我们使用 MMSegmentation 代码库 [14]。训练分辨率在 ADE20K [89] 和 Cityscapes [15] 上均设置为 896×896。编码器的学习率设置为 3e-6,解码器学习率则大 10 倍。我们使用 Mask2Former [12] 作为我们的语义分割模型。模型在 ADE20K 上训练 160K 次迭代,在 Cityscapes 上训练 80K 次迭代,批量大小均为 16,未使用 COCO [36] 或 Mapillary [1] 的预训练。其他训练配置与原始代码库相同。
7. 更多消融研究
所有消融研究均在 ViT-S 模型上进行。
特征对齐的容差边际的必要性。 如表 12 所示,容差边际为 1.00 与 0.85 或 0.70 之间的差距清楚地展示了这一设计的必要性(平均 AbsRel: 0.188 对比 0.175)。
将特征对齐应用于标记数据。 之前,我们在未标记数据上强制执行特征对齐损失 Lf eat。实际上,将此约束应用于标记数据也是技术上可行的。在表 13 中,除了将 Lf eat 应用于未标记数据外,我们还探索了将其应用于标记数据。我们发现将这个辅助优化目标添加到标记数据上对我们不涉及任何特征对齐的基线并没有益处(它们的平均 AbsRel 值几乎相同:0.180 对比 0.179)。我们推测这可能是由于…
表 12. 不同容差边际
α
\alpha
α 值对特征对齐损失
L
f
e
a
t
\mathcal{L}_{feat}
Lfeat 的消融研究。由于空间限制,我们仅在此报告了 AbsRel (↓) 指标。
表 13. 将我们的特征对齐损失
L
f
e
a
t
\mathcal{L}_{feat}
Lfeat 应用到未标记数据 (U) 或标记数据 (L) 的消融研究。由于标记数据具有相对较高质量的深度标注,引入语义损失可能会干扰这些信息丰富的手动标签的学习。相比之下,我们的伪标签更嘈杂,信息量较少。因此,将辅助约束引入未标记数据可以应对伪深度标签中的噪声,并为我们的模型提供语义能力。
由于标记数据具有相对较高质量的深度注释。引入语义损失可能会干扰这些信息丰富的手动标签的学习。相比之下,我们的伪标签更嘈杂,信息量较少。因此,将辅助约束引入未标记数据可以应对伪深度标签中的噪声,并为我们的模型提供语义能力。
8. 局限性和未来工作
目前,最大的模型尺寸仅限于 ViT-Large \text{ViT-Large} ViT-Large [16]。因此,我们计划将模型尺寸从 ViT-Large \text{ViT-Large} ViT-Large 进一步扩大到 ViT-Giant \text{ViT-Giant} ViT-Giant,这也是由 DINOv2 [43] 进行良好预训练的。我们可以使用更大的模型训练一个更强大的教师模型,为较小的模型(例如 ViT-L \text{ViT-L} ViT-L 和 ViT-B \text{ViT-B} ViT-B)生成更准确的伪标签。此外,为了促进实际应用,我们认为广泛采用的 512 × 512 512 \times 512 512×512 训练分辨率还不够。我们计划在更大的 700 + 700+ 700+ 或甚至 1000 + 1000+ 1000+ 分辨率上重新训练我们的模型。
9. 更多定性结果
请参考以下页面以获取对六个未见测试集的全面定性结果(图 5 为 KITTI [18],图 6 为 NYUv2 [55],图 7 为 Sintel [7],图 8 为 DDAD [20],图 9 为 ETH3D [52],图 10 为 DIODE [60])。我们将我们的模型与最强的 MiDaS 模型 [5](即 DPT-BEiTL-512)进行比较。我们的模型展现了更高的深度估计准确性和更强的鲁棒性。请参阅我们的项目页面以获取更多可视化结果。
图5。对KITTI的定性结果。由于极其稀疏的地面真相难以可视化,我们在这里将我们的预测与最先进的MiDaS v3.1 [5]预测进行了比较。颜色越亮,表示距离越近。
图6。NYUv2的定性结果。值得注意的是,MiDaS [5]使用的是NYUv2训练数据(而不是零射击),而我们并没有。
图7.对Sintel的定性结果
图8.关于DDAD的定性结果
图9.ETH3D的定性结果
图10.关于二极管的定性结果