Depth Anything V1,V2论文解读 devops论文

Depth Anything V1,V2论文解读 Depth Anything 引言Depth Anything V1标注方法学习标注图像发挥未标注图像的潜力语义辅助感知 Depth Anything V2总体框架流程 引言
在深度估计领

Depth Anything

简介Depth Anything V1 注释方法学习注释图像,释放语义无辅助图像的潜力。

Depth Anything V2整体框架流程

引言

在深度估计领域,单目深度估计(MDE)是指通过计算机视觉技术,利用单个摄像头拍摄的图像来推断场景中每个像素的深度信息。与多目深度估计方法相比,单目深度估计仅使用单个相机或传感器,并且通常依赖于图像的视觉信息来进行深度推断。该方法广泛适用于现实应用,特别是需要轻量化和低成本的场景,例如移动设备中的实时深度感知和自动驾驶。

单目深度估计方法主要涉及使用卷积神经网络(CNN)从单个输入图像直接回归深度场景。这些网络结构经过多年的开发和优化,可以从RGB 图像中学习和推断每个像素的绝对深度值。训练这些模型通常需要大量的现实世界深度信息作为监控信号。这些信息可以通过RGB-D 相机和激光雷达等传感器获得。

近年来,随着深度学习技术的快速发展,单目深度估计方法在精度和泛化能力上都取得了显着的进步。新的网络结构和损失函数设计使这些方法能够处理不同类型的场景和视点,提高深度估计的准确性和鲁棒性。例如,通过数据集混合和构建尺度不变损失,研究人员可以在训练过程中有效利用不同的数据源,提高模型的泛化能力。

除了单目深度估计之外,多视点深度估计利用多个摄像头或传感器来获取更丰富的场景信息。这些方法可以通过多视图数据融合有效解决单目方法中存在的深度不确定性和模糊性问题,特别是在复杂的动态场景中。多眼深度估计不仅提高了深度估计的精度,还增强了系统的鲁棒性和对动态环境的适应性。

最近海外发布了Depth Anything V2版本,所以我想和V1一起介绍一下。

深度任意V1:https://arxiv.org/pdf/2401.10891v2

在深度估计领域,数据集构建传统上主要依靠传感器、立体匹配或结构光技术来捕获深度信息。然而,这些方法往往成本高昂、耗时,并且在某些场景下难以实施。近年来,随着深度学习技术的兴起,研究人员开始寻找更具成本效益的方法。本文的作者使用未标记的单目图像来生成深度注释,从而增加数据集的大小和多样性。

利用未标记的单目图像生成深度注释的方法为深度估计领域提供了新的发展机会。这种方法允许研究人员利用大型公共数据集(例如SA-1B、Open Images 和BDD100K)来训练初始单目深度估计模型。这些数据集包含丰富的场景和视角变化,可以有效提高模型的泛化能力和适应不同应用场景的能力。

Depth Anything V1

标注方法

利用标记和未标记图像来改进单目深度估计(MDE)

正式地,标记和未标记集表示为:

D

=

(

X

,

d

=

1

中号

D^l={(x_i, d_i)}^M_{i=1}

Dl=(xi,di)i=1M 且

D

=

{

}

=

1

D^u=\\lbrace u_i \\rbrace^N_{i=1}

Du={ui}i=1N。

使命目标从

D

D^l

使用DL 训练教师模型

时间

时间

T.然后使用

时间

时间

D

达夫

Du 分配伪深度标签。最后,在标记集和伪标记集的组合上训练学生模型。

S

S

S。

下图显示了一个简单的图表。

图中:实线为标记图像流,虚线为未标记图像,

学习标注图像

这个过程与MiDaS训练类似。

MiDaS论文地址:https://arxiv.org/pdf/1907.01341v3

github地址:https://github.com/isl-org/MiDaS

论文摘要:MiDaS 论文提出了一种新的训练方法,通过整合多个数据源来克服单目深度估计模型的数据集大小有限和环境多样性不足的挑战。他们设计了一个强大的训练目标函数来处理深度范围和尺度不匹配,并采用多目标学习方法来整合来自不同数据源的信息。实验证明,该方法显着提高了单目深度估计的泛化能力,超越了现有方法,成为当前领域的前沿研究方向。

不过,MiDaS 并没有公开该代码,因此该文章的作者是第一个转载它的人。

具体来说,首先传递深度值。

d

=

1

/

t

d=1/t

将d=1/t 转换为视差空间,并将每个深度图归一化为0~1。为了实现多个数据集的联合训练,使用仿射不变损失来忽略每个样本的未知尺度和位移。公式为:

这里的深度值通常是指场景中的物体到相机的距离,通常以米(m)表示。在计算机视觉中,深度值用于描述图像中每个像素的距离信息。

设计仿射不变损失函数:设计仿射不变损失函数,使其对训练期间的尺度变化和变换不变性具有鲁棒性。常见的仿射不变损失函数包括平方损失函数和其他损失函数,例如Huber 损失函数,它用于惩罚预测值和真实值之间的差异,以考虑尺度或变换的变化。表格。

L

=

1

H

=

1

H

(

d

*

,

d

L_l=\\frac{1}{HW}\\sum_{i=1}^{HW}\\rho(d^*_i,d_i)

Ll=HW1 i=1HW(di*,di)

d

*

d^*_i

D* 和

d

d_i

di 分别是预测值和真实值。

\\rho

是仿射不变平均绝对误差损失。

(

d

*

,

d

=

d

^

*

d

^

\\rho(d^*_i,d_i)=|\\hat d^*_i – \\hat d_i|

(di*,di)=d^i*d^i

d

^

=

d

t

(

d

s

d

\\hat d_i=\\frac{d_i-t(d)}{s(d)}

d^i=s(d)di t(d)

t

d

时间(d)

t(d)表示预测值或真实值的平移,其作用是将整个预测值或真实值围绕零点进行平移。这样做的目的是消除预测值和真实值之间的总体偏移。

s

d

标清)

s(d)表示预测值或真实值的尺度,其功能是对预测值或真实值进行缩放,使得预测值或真实值的范围映射到单位尺度。这样做的目的是消除预测值和真实值之间的整体尺度差异,使它们能够更准确地相互比较。

t

d

=

仪表

e

d

n

d

,

s

d

=

1

H

=

1

H

d

t

d

t(d)=中位数(d), s(d)=\\frac{1}{HW}\\sum_{i=1}^{HW}|d_i-t(d)|

t(d)=中位数(d), s(d)=HW1 i=1HW di t(d)

为了获得稳健的单目深度估计模型,我们从6 个公共数据集中收集了150 万张带注释的图像。此外,为了增强从这些带注释的图像中学习的教师模型,

时间

时间

T 使用DINOv2 预训练权重初始化编码器。在实践中,应用预先训练的语义分割模型来检测天空区域并将其视差值设置为0(最远)。

发挥未标注图像的潜力

这就是重点。

与之前需要大规模构建不同注释数据集的研究不同,我们强调了未标记图像在提高数据覆盖率方面的价值。

通过将未标记的单目图像传递到预先训练的、性能良好的MDE 模型,可以轻松获得密集的深度图。这比对立体图像或视频进行立体匹配或SfM重建方便得多。选择八个大型公共数据集作为未标记的来源。

超过6200万张图像。下表下半部分提供了详细信息。

如何使用未标注的数据集技术上:给定先前获得的 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

\\hat D^u = \\lbrace (u_i,T(u_i))|u_i \\in D^u \\rbrace^N_{i=1}

D^u={(ui​,T(ui​))∣ui​∈Du}i=1N​

u

i

u_i

ui​ 表示未标注数据集

D

u

D^u

Du 中的每个样本,结合标注图像和伪标注图像的集合

D

l

D

u

D^l \\bigcup D^u

Dl⋃Du,在其上训练学生模型

S

S

S。

T

(

u

i

)

T(u_i)

T(ui​) 则是由先前获得的单目深度估计(MDE)教师模型

T

T

T 对

u

i

u_i

ui​ 进行的深度预测。

作者发现,尽管使用自训练管道注入了大量未标注图像,但并没有带来性能改进,与过去少量标注图像的观察结果相矛盾。作者推测,这可能是因为已有的标注图像已经足够丰富,从额外的未标注图像中获得的额外知识有限。尤其是在教师和学生模型共享相同预训练和架构的情况下,它们在未标注集上倾向于做出类似的预测。

为了解决这一困境,作者提出了一种新方法:通过向未标注图像注入强扰动来挑战学生模型。这些扰动包括强色彩失真(如色彩抖动和高斯模糊)以及强空间失真(如CutMix)。这些修改使得模型能够从大规模未标注图像中积极地获取额外的视觉知识,并显著提高了标注图像的基线表现,从而增强了模型的鲁棒性和处理开放世界数据的能力。

具体关于 CutMix 的细节如下:

它最初是为图像分类提出的,在单目深度估计中很少探索。首先在空间上插值一对随机的未标注图像

u

a

u_a

ua​和

u

b

u_b

ub​:,相当于融合二张图像。

u

a

b

=

u

a

M

+

u

b

(

1

M

)

u_{ab} = u_a \\odot M +u_b \\odot (1 – M)

uab​=ua​⊙M+ub​⊙(1−M)

其中

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

)

L_u^M = \\rho(S(u_{ab}) \\odot M,T(u_a) \\odot M)

LuM​=ρ(S(uab​)⊙M,T(ua​)⊙M)

L

u

1

M

=

(

S

(

u

a

b

)

(

1

M

)

,

T

(

u

b

)

(

1

M

)

)

L_u^{1-M} = (S(u_{ab}) \\odot (1 – M), T(u_b)\\odot(1-M))

Lu1−M​=(S(uab​)⊙(1−M),T(ub​)⊙(1−M))

然后通过加权平均来聚合两个损失:

L

u

=

M

H

W

L

u

M

+

(

1

M

)

H

W

L

u

1

M

L_u = \\frac{\\sum M}{HW}L^M_u + \\frac{\\sum(1-M)}{HW}L^{1-M}_u

Lu​=HW∑M​LuM​+HW∑(1−M)​Lu1−M​

在上述公式中:

S

(

u

a

b

)

S(u_{ab})

S(uab​)表示对图像

u

a

b

u_{ab}

uab​进行深度估计得到的预测深度图。

T

(

u

a

)

T(u_a)

T(ua​)和

T

(

u

b

)

T(u_b)

T(ub​)分别表示对未标注图像

u

a

u_a

ua​和

u

b

u_b

ub​进行深度估计得到的真实深度图。

M

M

M是一个二进制掩码,用于定义一个矩形区域,其中的像素值为1,其他区域为0。这个掩码用于控制在插值过程中哪些区域的信息来自于

u

a

u_a

ua​ ,哪些来自于

u

b

u_b

ub​。

语义辅助感知

在深度估计研究中,有一些工作尝试通过辅助语义分割任务来提升深度估计的性能。在深度估计模型中加入高层次的语义信息是非常有益的。尤其是在处理未标注图像时,这些来自其他任务的辅助监督信号可以有效对抗伪深度标签中的潜在噪声。

为了获得更有信息量的语义信号,参考了DINOv2模型在语义相关任务中的强大表现,例如图像检索和语义分割,即使在冻结权重且没有微调的情况下也能取得良好效果。基于这一观察,提出通过辅助特征对齐损失,将DINOv2的强大语义能力转移到深度模型中。特征空间是高维且连续的,因此比离散掩码包含更丰富的语义信息。特征对齐损失的公式为:

L

feat

=

1

1

H

W

i

=

1

H

W

cos

(

f

i

,

f

i

)

L_{\\text{feat}} = 1 – \\frac{1}{HW} \\sum_{i=1}^{HW} \\cos(f_i, f_i\’)

Lfeat​=1−HW1​i=1∑HW​cos(fi​,fi′​)

其中

c

o

s

(

,

)

cos(·, ·)

cos(⋅,⋅)衡量两个特征向量之间的余弦相似性。

f

f

f 是深度模型

S

S

S 提取的特征,而

f

f\’

f′ 是冻结的 DINOv2 编码器的特征。

特征对齐的关键点:

为了解决这个问题,为特征对齐设置了一个容差边界

α

α

α。如果

f

i

f_i

fi​和

f

i

f\’_i

fi′​的余弦相似度超过 α,这个像素将不被考虑在

L

f

e

a

t

L_{feat}

Lfeat​ 中。这允许的方法既享有来自 DINOv2 的语义感知表示,又享有来自深度监督的部分级别区分表示。作为副作用,生成的编码器不仅在下游 MDE 数据集上表现良好,而且在语义分割任务中也取得了强大的结果。这也表明的编码器有潜力作为一个通用的多任务编码器,适用于中级和高级感知任务。

最终,总体损失是三种损失

L

l

L_l

Ll​,

L

u

L_u

Lu​ 和

L

f

e

a

t

L_{feat}

Lfeat​ 的平均组合。

Depth Anything V2

论文地址:https://arxiv.org/pdf/2406.09414v1
github地址:https://github.com/DepthAnything/Depth-Anything-V2
新版本提供了模型的代码

与第一版相比,V2通过三个关键实践显著提升了深度预测的精细度和鲁棒性:

1)用合成图像替代所有标注的真实图像,2)扩大教师模型的容量,3)通过大规模伪标注的真实图像桥接训练学生模型
从模型架构的角度来看,这些工作可以分为两类。一类基于判别模型,如BEiT和DINOv2,另一类基于生成模型,如Stable Diffusion

深度估计中的标注数据问题与解决方案:

总体框架流程

训练Depth Anything V2的流程如下:

基于高质量合成图像训练可靠的教师模型DINOv2-G。使用教师模型对大规模未标注的真实图像生成伪深度。在伪标注的真实图像上训练学生模型,实现稳健的泛化。
作者将发布四个学生模型,分别基于DINOv2的小、中、大和巨型版本。

使用五个精确的合成数据集(59.5万张图像)和八个大规模伪标注的真实数据集(6200万张图像)进行训练。训练过程中忽略每个伪标注样本损失最大的10%区域,认为这些区域可能含有噪声伪标签。使用的损失函数包括尺度和位移不变的损失Lssi和梯度匹配损失Lgm。

#以上关于Depth Anything V1,V2论文解读的相关内容来源网络仅供参考,相关信息请以官方公告为准!

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92457.html

(0)
CSDN的头像CSDN
上一篇 2024年6月27日
下一篇 2024年6月27日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注