论文链接:ACCV 2024 Open Access Repository
核心内容总结
研究背景与问题:
-
单目深度估计是计算机视觉中的一个长期挑战,传统方法依赖于大量标注数据或较粗糙的特征提取方式。
-
近期基于Stable Diffusion等生成模型的方法被引入到深度估计领域,展示了利用这些模型的潜力,可以在较少训练数据下产生更详细的深度图。
-
现有的扩散模型如Marigold尽管效果出色,但由于多步去噪过程,在测试时效率极低,限制了其实用性。
研究动机:
-
当前的扩散模型在推理时存在效率问题,尤其是需要多个去噪步骤,导致推理时间过长。
-
为了解决这一问题,文章提出了一种新的策略,利用Stable Diffusion模型的单步去噪输出,以减少推理时间,同时保持高质量的深度预测。
核心贡献:
-
PrimeDepth方法:文章提出了一种新的单步扩散模型,名为PrimeDepth,通过从Stable Diffusion模型的单次去噪步骤中提取特征(称为preimage),再利用特定的网络结构进行深度估计。
-
效率提升:该方法相较于Marigold提高了100倍的推理速度,同时保持了类似的深度估计精度,并在某些极端场景下(如夜间或低光场景)表现更为鲁棒。
-
数据高效性:PrimeDepth只需使用7.4万张合成图像进行训练,而不像其他数据驱动方法(如Depth Anything)需要数百万张标注数据。
-
泛化能力:尽管数据使用量少,PrimeDepth在多个数据集上的表现接近甚至超过了更大规模数据驱动的模型。
实验验证:
-
通过大量实验验证,PrimeDepth在多个数据集(如KITTI、ETH3D等)上的表现优于其他扩散模型,且在推理速度上显著提升。
-
文章还展示了该模型在挑战场景(如夜间场景和雨天场景)下的表现,证明其在复杂场景中的鲁棒性。
未来工作:
-
文章提出未来可以通过将扩散模型与数据驱动方法结合,进一步提升深度估计的效果。
-
此外,研究还讨论了如何将PrimeDepth的思想推广到其他视觉任务中,如结合DPT结构。
贡献
-
预图像(Preimage)表示:提出了一种新颖的图像表示方法,称为预图像(preimage),这是从Stable Diffusion模型的最后一步去噪过程中提取的特征图和注意力图。这种预图像在与一个具有归纳偏差的精化网络结合时,可以有效地用于下游任务,例如深度估计。
-
PrimeDepth方法:开发了一种基于单步扩散的深度估计方法,称为PrimeDepth。与多步扩散方法相比,它具有两个主要优势:
-
推理速度快:PrimeDepth的推理速度相比现有方法(如Marigold)快100倍以上。
-
像素域损失函数:该方法在像素域(而非潜在空间)中定义损失函数,避免了潜在空间中的损失带来的性能下降。
-
竞争性能:在量化评估中,PrimeDepth表现仅次于Depth Anything,但Depth Anything是数据驱动方法,需使用超过20倍的标注训练数据,并且训练时间大约是PrimeDepth的25倍。此外,PrimeDepth生成的深度图更为详细,且在如夜间等复杂场景中比Marigold更具鲁棒性。
预图像(Preimage)的定义和处理方式
预图像是从Stable Diffusion模型的最后一次去噪步骤中提取的中间多尺度特征图和自注意力(self-attention)与交叉注意力(cross-attention)图的集合。主要内容如下:
-
预图像的构成:
-
预图像包含了多尺度特征图、自注意力图和交叉注意力图。
-
自注意力图通过模型的不同神经块生成,表示图像中每个像素之间的相互关系,而交叉注意力图则关注图像和文本标记(如77个文本标记)之间的关系。
-
-
特征图的直接使用:
-
特征图可以直接用于下游任务,表示每个像素的激活信息。
-
-
注意力图的处理:
-
注意力图需要进一步处理,以减少通道数量和去除冗余信息。由于原始注意力图的维度可能非常大(如自注意力图的最大维度为H×64×64×4096,其中H是注意力头的数量),这种规模不便于计算,因此需要进行降维。
-
文章通过将注意力图划分为8×8区域,并对每个区域的注意力值进行平均来简化计算。这种方法保留了每个注意力头的不同信息,而不是对所有头的信息进行平均,从而保留更多的多样性和丰富的特征。
-
-
最终处理:
-
在将预图像传递给精化网络之前,所有的特征图和注意力图会被聚合在一起。这种聚合是通过一系列的连接操作和卷积操作来实现的,确保了多尺度特征和注意力信息能够有效结合,用于下游任务(如深度估计)。
-
PrimeDepth方法的架构设计

1. 深度估计管道的工作流程:
-
图像编码:输入图像首先通过Stable Diffusion(SD)的像素到潜在表示(Pixel-to-Latent, P2L)编码器编码为潜在表示z₀。
-
添加噪声:在z₀的基础上增加一步噪声,生成一个轻微的噪声潜在表示z₁。
-
去噪步骤:使用冻结的U-Net模型进行一次去噪。在去噪过程中,提取的预图像部分(红色箭头表示)通过融合模块传递到精化网络,用于后续处理。
-
精化网络:精化网络负责处理这些多尺度的特征和注意力图,生成一个精化后的潜在表示,随后通过下游解码器输出到像素域,生成最终的深度图。
2. 与多步扩散方法的对比:
-
与像Marigold这样的多步去噪方法不同,PrimeDepth仅使用一次去噪,极大提高了推理速度。
-
损失函数定义在像素域:PrimeDepth直接在像素域定义损失函数,而不是像Marigold那样在潜在域定义。这样做的优点有两个:
-
任务解码器(例如深度预测)可以同时进行训练。
-
像素域的损失函数更直观,不需要依赖潜在空间的代理损失。
-
3. 下游解码器:
-
下游解码器是SD的潜在到像素(Latent-to-Pixel, L2P)解码器的可训练副本。为了更好地处理深度估计任务,作者将解码器的瓶颈层的通道数从原来的4增加到了512。
-
为了提升性能,使用了两个解码器:一个用于深度预测,另一个用于语义分割作为辅助任务。语义分割任务利用了150个语义类别,作为正则化来提高模型的整体性能。
4. 架构设计的三个关键点:
-
(i) 基础模型权重保持不变:冻结SD模型的权重是一个优势,因为它已经在大量数据上训练过。调整这些权重可能会降低模型的泛化能力,特别是在一些复杂场景中,如Marigold方法的鲁棒性下降就是一个例子。
-
(ii) 利用完整的预图像表示:使用Stable Diffusion的所有中间特征图和注意力图(包括自注意力和交叉注意力)可以显著提升深度估计的效果。
-
(iii) 利用归纳偏差的架构:精化解码器的架构与SD的解码器类似,但其通道数仅为原始通道数的50%,这引入了一种自然的归纳偏差,有助于逐步处理预图像中的特征。
5. 归纳偏差的使用:
-
归纳偏差(inductive bias)在架构设计中并不是新概念,已经在SD的图像生成任务中被证明是有效的。作者相信,这种设计思路同样可以应用于其他任务,甚至可以将这种预图像与**DPT(Depth Prediction Transformer)**结合使用来进一步提升性能。
总结:
这段内容展示了PrimeDepth的整体架构设计,并强调了其与传统多步扩散方法的区别。通过冻结SD模型的权重、利用完整的多尺度特征与注意力图,以及引入具有归纳偏差的精化解码器,PrimeDepth达到了快速、高效且具有鲁棒性的深度估计效果。
归纳偏差的定义
归纳偏差通常是机器学习中的一个重要概念,它指的是一种限制或约束,帮助模型在有限数据下更好地泛化到新数据。通过引入这种先验假设或结构性设计,模型能够减少过拟合并提升对新数据的适应能力。
在本文中,归纳偏差通过两种方式体现:
架构设计的约束:PrimeDepth的精化解码器(refining decoder)采用了与Stable Diffusion(SD)解码器相似的结构,但其通道数减少了一半。这种设计可以视为一种归纳偏差,它通过限制网络容量,强制模型在更小的通道数下处理数据,从而在特定任务(如深度估计)中逐步处理图像特征。
多尺度特征处理的归纳:精化解码器被设计为接收从SD模型中提取的多尺度特征图、注意力图等,这些信息是逐步传递和处理的。这种逐步处理的方式与图像从粗到细的层次结构相一致,从而帮助模型更好地理解和利用图像中的空间结构信息。
归纳偏差的算法原理:
任务的特定假设:归纳偏差引入了一种假设,即深度估计任务中的图像特征可以通过多尺度特征图和注意力机制逐步处理,而不需要模型从头开始学习所有的空间结构。这是一种根据任务特性设计的偏差,帮助模型快速学习。
限制模型容量:通过减少精化解码器的通道数(即将其减半),模型被强制以更高效的方式利用输入的预图像(即Stable Diffusion模型生成的中间特征)。这种设计约束减少了模型的自由度,降低了过拟合的可能性,同时使其更专注于特定任务。
逐步处理和融合特征:模型通过多个阶段(multi-stage)逐步处理来自不同尺度的特征图。这种设计体现了一种结构上的归纳偏差:特征在不同的分辨率下逐步融合,这与图像的自然分层结构相符合,有助于模型更好地提取和使用图像的深度信息。
归纳偏差的优势:
提升泛化能力:通过引入对特定任务的结构性假设,归纳偏差可以帮助模型减少对训练数据的过度依赖,从而在未见过的场景中表现更好。本文提到,PrimeDepth在复杂场景(如夜间场景)下表现优于其他方法,部分原因就是得益于归纳偏差的设计。
减少计算复杂度:通过限制模型容量(如减少通道数),模型的计算复杂度得以降低,同时推理速度得以提升。在PrimeDepth中,这帮助模型显著加快了推理速度。
归纳偏差在本文中的应用:
模型架构上的归纳偏差:PrimeDepth的精化解码器是通过引入与SD解码器相似的结构设计的,这种结构利用了先验知识,即图像的多尺度处理和注意力机制对于深度估计任务是有帮助的。
特征处理的归纳偏差:逐步处理从Stable Diffusion提取的预图像,通过分阶段传递和处理特征图,确保了模型在每个阶段都能有效利用这些特征。
总之,归纳偏差帮助PrimeDepth模型在减少计算开销的同时,提升了推理效率和泛化能力,特别是在复杂或极端场景下的表现。
提出primedepth的原因
提出PrimeDepth方法的原因是为了解决现有扩散模型方法在单目深度估计中的效率低下和性能局限性,具体包括以下几个方面:
1. 现有扩散方法的效率问题
-
多步降噪过程效率低下:像Marigold等扩散方法需要多次迭代降噪来生成深度图,每次迭代都要经过复杂的计算,导致推理时间非常长(如Marigold需要62.84秒)。
-
高计算成本:由于多步降噪方法需要重复调用模型,还需额外进行集成平均以提高结果稳定性,因此在测试阶段计算开销极大。
2. 现有扩散方法的性能问题
-
潜在表示域的损失问题:现有方法如Marigold将扩散过程的损失函数定义在潜在域(latent domain)中,而不是像素域,这可能导致性能次优。
-
对极端场景的鲁棒性不足:在一些极端条件(如夜间或低光场景)下,现有方法的表现不够稳定,容易受到外界干扰的影响。
3. 数据驱动方法的局限性
-
数据需求大:目前领先的数据驱动方法(如Depth Anything)依赖于大规模标注数据(1.5M标注图像和62M未标注图像)。然而,标注数据获取成本高且耗时。
-
细节捕获能力不足:Depth Anything生成的深度图在细节上表现不佳,缺乏锐利和准确的结构。
4. 利用Stable Diffusion的潜力
-
丰富的特征表示:Stable Diffusion在生成图像时捕获了3D世界的内在表示,其在生成过程中包含的特征和注意力图具有很高的潜在信息价值。
-
冻结模型的优势:不改变Stable Diffusion的权重可以保留其泛化能力,而不会因调整权重而降低其表征能力。
总结
提出PrimeDepth的核心原因在于:
-
利用Stable Diffusion的最后一次降噪特征(preimage)获取高质量的特征表示;
-
通过单次降噪结合特定设计的细化网络,提高推理速度和性能;
-
减少对大规模标注数据的依赖,同时在细节捕获和极端场景下提供更好的鲁棒性。
文章来源于互联网:超详细!!!一文理解PrimeDepth: Efficient Monocular Depth Estimation with a Stable Diffusion Preimage
5bei.cn大模型教程网










