论文阅读:CompletionFormer: Depth Completion with Convolutions and
Vision Transformers
来源 cvpr2023
链接:The KITTI Vision Benchmark Suite
深度补全有code中的第一
在给定稀疏深度和相应的RGB图像的情况下,深度补全的目的是将稀疏测量值在空间上传播到整个图像中,得到密集的深度预测。尽管基于深度学习的深度补全方法取得了巨大的进步,但卷积层或图模型的局部性使得网络很难对像素之间的远程关系进行建模。尽管最近完全基于transformer的架构报告了在全球接收领域令人鼓舞的结果,但由于其局部特征细节的恶化,与发达的CNN模型相比,性能和效率差距仍然存在。本文提出了联合卷积注意力和变压器块(Joint Convolutional Attention and Transformer block, JCAT),它将卷积注意层和视觉变压器深度耦合为一个块,作为构建金字塔结构深度完成模型的基本单元。这种混合架构自然有利于在单个模型中使用卷积的本地连接和Transformer的全局上下文。因此,我们的CompletionFormer方法在室外KITTI深度补全基准测试和室内NYUv2数据集上优于最先进的基于cnn的方法,与纯基于transformer的方法相比,实现了显著更高的效率(近1/3的FLOPs)。代码可以在https://githubcom/youmi-zym/CompletionFormer。
主动深度感知在性能上取得了显著的进步,并在许多应用中展示了其实用性,如自动驾驶和增强现实。尽管现有的商业深度传感器(如微软Kinect[23]、英特尔RealSense[11])捕获的深度图或激光雷达传感器同一扫描线内的深度点密集,但有效/正确深度点之间的距离可能仍然很远,这是由于传感器的噪声、挑战性条件,如透明、闪烁、和黑暗的表面,或者激光雷达传感器扫描线的数量有限。为了解决这些问题,深度补全[2,16,26,31]是近年来备受关注的一种方法,它的目标是通过稀疏的深度测量和相应的RGB图像完成并重建整个深度图。
对于深度补全,一个关键点是获取相邻像素之间的深度亲和度,从而将可靠的深度标签传播到周围[2,3,8,16,26]。基于给定的稀疏深度可能由于噪声甚至没有从深度传感器返回测量结果而具有高度稀疏性的事实,它要求深度补全方法能够1)通过测量局部和全局视角下像素之间的空间关系来检测深度异常值;2)融合有效的深度值,从近或甚至极远的距离点。所有这些特性都要求网络具有捕捉像素之间局部和全局相关性的潜力。目前的深度补全网络使用广泛使用的卷积神经网络(cnn)[2,3,8,16,26,29,37,51]或图神经网络[42,49]来收集上下文信息。然而,卷积层和图模型都只能在一个局部区域内进行聚合,例如3×3中的平方核用于卷积,图模型基于knn的邻域[42,49],这使得对全局长期关系的建模仍然很困难,特别是在体系结构的最浅层内。最近,GuideFormer[31]度假村完全基于变形金刚架构,以实现全局推理。不幸的是,由于Vision transformer通过单步将图像小块投影到向量中,导致局部细节丢失,导致在密集的预测任务中忽略局部特征细节[28,43]。对于深度补全,影响纯cnn或基于Transformer的网络的局限性也很明显,如图1所示。尽管可靠的深度点可以分布在任何距离,但探索这两种截然不同的模式(即cnn和Transformer)的优雅集成,尚未对深度补全进行研究。(cnn+Transformer做深度估计)
在本工作中,我们提出了CompletionFormer,这是一种金字塔结构,将基于cnn的局部特征与基于变压器的全局表示相结合,以增强深度补全。一般来说,我们面临着两个差距:1)RGB和深度输入之间的内容差距;2) convolution和Transformer之间的语义差距。对于多模态输入,我们提出在网络早期嵌入RGB和深度信息。因此,我们的CompletionFormer可以在如图2所示的高效的单分支架构中实现,并且可以在整个网络中聚合多模态信息。考虑到卷积和Transformer的集成,之前的工作从几个不同的角度对图像分类和目标检测进行了探索[6,12,25,28,43]。虽然在这些任务上已经取得了最先进的性能,但当这些网络直接适应深度补全任务时,观察到较高的计算成本[12]或较差的性能[6,12]。为了保证自注意和卷积的结合仍然是高效的,同时也是有效的,我们将卷积注意和Transformer合并为一个块,并将其作为基本单元,以多尺度的方式构建我们的网络。具体来说,Transformer层的灵感来自于Pyramid Vision Transformer[39],它采用了减少空间的方法,使Transformer层更加轻量级。对于与卷积相关的部分,常用的方法是使用普通卷积,如反向残差块[32]。然而,卷积和Transformer之间的巨大语义差距以及Transformer丢失的局部细节要求卷积层增加其自身的能力来弥补这一差距。在此基础上,我们进一步引入空间和通道注意力[40]来增强卷积。因此,在不需要任何额外模块来弥补内容和语义缺口的情况下[12,28,31],该块中的每个卷积层和Transformer层都可以访问局部和全局特征。因此,信息交换和融合有效地发生在我们网络的每个区块。
综上所述,我们的主要贡献如下:
深度补全
随着主动深度传感器的出现,场景深度补全已成为计算机视觉中的一项基本任务。最近,随着深度学习的发展,全卷积网络已经成为目前最先进的深度补全技术的原型架构。Ma等人[21,22]利用基于ResNet[7]的编码器-解码器架构,即U-Net,在一个监督或自我监督框架内预测密集的输出。为了在给定的稀疏深度下保持精确的测量值,同时对最终的深度图进行细化,CSPN[3]在U-Net末端附加了一个卷积空间传播网络(convolutional spatial propagation network, SPN[18])来细化其粗预测。在CSPN的基础上,提出了可学习卷积核大小和多次迭代的方法来提高效率[2],通过使用不固定的局部邻居[26,44]和每次迭代[16]的独立亲和矩阵可以进一步提高性能。对于所有这些基于spn的方法,虽然在循环处理中观察到更大的上下文,但性能受到卷积U-Net主干容量的限制。因此,我们利用局部和全局连贯的上下文信息加强了U-Net主干的表达能力,证明了提高性能的有效性。
采用多分支网络[8,17,24,29,35,37,46]而不是单一分支进行多模态融合。融合多模态信息的常用方法是简单的连接或元素求和操作。更复杂的策略如图像引导的空间变异卷积[35,45]、通道典型相关分析[50]、邻居注意机制[47]和基于注意的图传播[42,49]也被提出,以增强局部信息的交互和融合。最近,GuideFormer[31]提出了一种双分支完全基于变压器的网络,将RGB和深度输入分开嵌入,并进一步设计了一个额外的模块来捕获跨模态依赖关系,而不是像素化操作或局部融合。每个输入源的独立设计导致了巨大的计算成本(352 × 1216输入接近2T FLOPs)。相比之下,我们的CompletionFormer在一个分支中带来了显著的效率(559.5G FLOPs),包含的卷积注意层弥补了Transformer在局部细节方面的缺点。
Vision Transformer
变形器[12,19]首先在自然语言处理[38]中被引入,然后在图像分类[4]、目标检测[12,19,43]和语义分割[41]中也表现出了巨大的潜力。与3D视觉相关的任务也受益于Transformer丰富的建模能力,如立体匹配[13,15],监督[14,30]和无监督的单目深度估计[48],光流[10,34]和深度完成[31]。本文不单纯依赖于Vision Transformer[31],而是探索将Transformer与卷积结合成一个块进行深度补全。与一般骨干网(如完全基于cnn设计的ResNet[7]、基于纯Transformer的Swin Transformer[19]和PVT[39]、同时使用卷积和Vision Transformer的MPViT[12]和CMT[6])相比,我们提出的联合卷积注意力和Transformer模块在公共基准上实现了更高的效率和性能[33,36]
在实际应用中,传感器捕获的深度图呈现出不同程度的稀疏性和噪声。我们的目标是在深度完成任务中引入局部特征和全局上下文信息,使其能够从任何距离收集可靠的深度提示。我们的CompletionFormer的整体图表如图2所示。在获得深度和RGB图像嵌入后,利用我们的JCAT块构造的主干进行多尺度特征提取,解码器为初始深度预测提供全分辨率特征。最后,为了从稀疏输入中保持精确的深度,我们利用空间传播网络对初始估计进行了改进。
对于深度补全,早期多模态信息融合具有以下优点:1)使每个像素点的特征向量同时具有RGB和深度信息,使深度无效的像素点仍有机会根据外观相似度进行可靠的深度测量进行校正;2)后续网络只需要一个分支,实现效率高。因此,我们首先使用两个单独的卷积对输入的稀疏深度图S和RGB图像i进行编码,然后将输出进行串联,再经过另一个卷积层处理,得到两个源包含内容的原始特征。
如何建立像素之间的连接,以实现可靠像素的深度传播,同时避免错误像素的传播,已经被广泛研究。最近,卷积层[2,3,8,16,26,29,37,51]或基于注意的图传播[42,49]已成为这一目的的主导操作。虽然也采用了完全基于transformer的网络[31],但与纯基于cnn的方法相比,它的结果更差,计算成本更高。考虑到这两种操作的互补性,深度完井任务对这两种模式的优雅集成有很高的要求。另一方面,对于分类和目标检测任务,MPViT[12]和CMT[6]是两种最具代表性的结合自注意和卷积的最先进网络,分别如图3 (a)和(b)所示。通常,集成可以以并行或级联的方式实现。因此,受其设计的启发,在CompletionFormer中,我们提出了如图3 (c)和(d)所示的联合设计。为了减少计算开销,同时获得高度精确的深度完井结果,我们的CompletionFormer只包含单个而不是像MPViT[12]中那样包含多个耗时的基于变压器的路径。此外,随着对空间和信道的关注,基于卷积的路径的表示能力得到了增强。 (主要就是两种 串联和并联)
具体来说,我们的编码器有五个阶段,允许不同尺度的特征表示有效地相互通信。在第一阶段,为了降低Transformer层引入的计算成本和内存开销,我们使用ResNet34[7]中的一系列BasicBlocks进行处理,最终得到了半分辨率下采样的feature map 。在接下来的四个阶段中,我们将介绍我们提出的JCAT块作为框架设计的基本单元。
基本上,对于每个阶段i∈{2,3,4,5},它由一个patch嵌入模块和重复的JCAT块组成。patch嵌入模块首先将前一阶段i−1的feature map 分割成大小为2 × 2的patches。我们使用一个3 × 3的卷积层来实现它,stride设置为2为[39],因此它实际上将特征的分辨率减半,从而允许获得特征金字塔{F2, F3, F4, F5},其分辨率为{1/4,1/8,1/16,1/32}相对于输入图像。此外,嵌入的patch中还包含位置嵌入,并通过JCAT块进行传递。
Joint Convolutional Attention and Transformer Block
总的来说,我们的JCAT块可以按图3 (c)和(d)所示的并行或级联方式组织。Transformer层的实现方式与Pyramid Vision Transformer[39]中一样高效,其中包含一个具有多头机制的空间减少注意(SRA)层和一个前馈层(FNN)。给定来自patch嵌入模块或最后一个关节块的输入特征(具有第i阶段特征的Hi和Wi的高度和宽度,以及C个通道数),我们首先用层归一化[1](LN)对其进行归一化,然后将其摊平为向量令牌,其中N为令牌个数,等于,即f中所有像素的个数。使用学到的线性转换,令牌X被投影到相应的查询Q、键K和值向量V∈RN×C。在这里,进一步减小K和V的空间尺度,以减少内存消耗,然后进行自我注意:
用head表示SRA中各注意头的通道维度。根据式(1),整个输入空间F中的每个令牌都与包括自身在内的任何令牌进行匹配。我们的深度补全网络从自我注意机制中受益有两方面:1)它将我们的网络的接受域扩展到Transformer每一层的完整图像;2)由于我们将每个令牌都嵌入了深度和RGB图像信息,因此自注意机制不仅通过外观,而且通过点积操作,显式地比较每个像素的相似性。这样,可靠的深度信息就可以传播到整个图像上,纠正错误的像素。
我们利用信道和空间注意力[40]增强了卷积路径的表示能力。一方面,它有助于局部精确的注意力建模和降低噪声。另一方面,由于卷积和Transformer之间的语义差异,通过使用注意力机制增加的建模能力使该路径能够集中于Transformer层提供的重要特性,同时抑制不必要的特性。最后,通过连接来自基于transformer的路径的重塑特征,我们用3 × 3卷积融合这两条路径,并将其发送到下一个块或阶段。
以建议的JCAT块为基本单元,我们构建了重复配置的阶段2-5。如表1所示,我们将CompletionFormer的4个阶段从微小到基本规模进行了扩展。我们的结果显示了JCAT设计在深度完成任务方面的优越性,相比于最近的Vision transformer[12,19,39]。
在解码器中,各个编码层的输出通过跳跃连接连接起来,由相应的解码层进一步处理。为了更好地适应不同尺度特征,将原译码层的特征上采样到当前尺度,并引入反褶积层,利用卷积注意机制[40]加强信道和空间维上的特征融合。最后,将解码器的融合结果与第一阶段的特征进行串联,并馈送到预测头的第一卷积层。它的输出与RGB和depth embedding模块(第3.1节)的raw feature连接,发送给另一个卷积,该卷积负责初始深度预测D0。
考虑到稀疏输入的精确深度值经过U-Net后可能不能很好地保存[3,8],空间传播网络[18]是最终细化的标准操作。最近的工作[2,3,8,26]主要是将空间传播网络从固定的局部传播改进为非局部传播。而在我们的实验中(表2),我们观察到,在我们增强的U-Net骨干网中,网络能够提供良好的深度亲和力,因此对于空间传播,与固定的本地[2,3]或非本地[26]邻居获得几乎相同的精度。由于CSPN++[2]的计算量较大,我们采用非局部空间传播网络[26](NLSPN)进一步细化。设Dt = (Dt u,v)∈RH×W为步长t处空间传播更新的二维深度图,其中Dt u,v为像素点(u, v)处的深度值,H,W分别为Dt的高度和宽度。dt u,v在步长t处与其非局部邻域NNL u,v的传播定义如下:
其中wu,v(i, j)∈(−1,1)描述了参考像素(u, v)与相邻像素(i,j)之间的亲和权值,wu,v(0,0) = 1−(i,j)∈Nu,v,i̸=0,j̸=0 wu,v(i, j)表示保留原有深度dt−1 u,v(i, j)的多少。此外,亲和矩阵w也由解码器输出,并由解码器的预测置信图进行调制,以防止不太可信的像素传播到邻居,无论亲和有多大。经过K步空间传播,得到最终的精细化深度图DK。
最后,在[26]之后,结合L1和L2损耗,对网络训练进行如下监督:
其中ˆD = DK, V为ground truth Dgt中有效深度像素的集合,|V|为集合V的大小。
NYUv2数据集[33]:由Microsoft Kinect[23]在464个室内场景中采集的RGB和depth图像组成。与之前的深度补全方法设置相似[26,51],我们的方法在训练集中统一采样的50,000幅图像上进行训练,并在官方标注的测试集中对654幅图像进行测试进行评估。对于训练集和测试集,将大小为640×480的原始帧用双线性插值下采样一半,然后中间裁剪到304×228。稀疏输入深度是通过对密集的地面真实数据进行随机采样生成的。
KITTI深度补全(DC)数据集[36]:包含86 898个训练数据,其中1 000个用于验证,1 000个用于不含地面真相的测试。Velodyne HDL-64e获得的原始深度图稀疏,覆盖约5.9%像素。密集的地面真相是通过收集激光雷达扫描从11个连续的时间帧到一个,产生近30%的注释像素。这些配准点与立体图像对进行验证,以消除噪声值。由于在图像的顶部没有LiDAR返回,在[26]之后,输入的图像是底部中心裁剪到240×1216用于训练、验证和测试阶段。
我们在4个NVIDIA 3 090 gpu上的PyTorch[27]上实现了我们的模型,使用AdamW[20]作为优化器,初始学习率为0.001,β1 = 0.9, β2 = 0.999,权值衰减为0.01。在KITTI DC和NYUv2数据集上,每个GPU的批量大小分别设置为3和12。在NYUv2数据集上,我们对模型进行72个epoch的训练,并在epoch 36、48、60、72时将学习速率衰减0.5倍。对于KITTI DC数据集,该模型用100个epoch进行训练,在50、60、70、80、90个epoch时,学习速度降低了一半。补充材料概述了更多关于网络参数的细节。
根据KITTI基准和现有深度完井方法[26,51],给定预测Dˆ和地面真实度Dgt,我们使用标准指标进行评价:(1)均方根误差(RMSE);(2)平均绝对误差;(3)逆深度的均方根误差(iRMSE);(4)平均绝对误差的逆深度(iMAE);(5)平均绝对相对误差(REL)。
我们评估了CompletionFormer的主要组件对NYUv2数据集[33]的影响。按照之前的方法[16,26],我们从ground truth depth map中随机抽取500个depth pixel,并将其与相应的RGB图像一起输入进行网络训练。结果见表2。
级联与并联连接。我们可以注意到,与并行设计(B)相比,级联设计(A)的性能较差。这个结论在(I)和(J)中也得到了证实,因为CMT-Base的RMSE(92.0)比mpv - base[12](91.0)更差。表明并行连接更适合深度完成任务时不同内容和语义的流之间的信息交互。因此,我们采用并联连接作为我们的最终方案。
JCAT区块的空间和通道注意。之前的方法将Transformer与普通卷积相结合[6,12,25,28]。在这里,我们也消除了在我们提出的JCAT块(C)的卷积路径上禁用空间和通道注意力的情况。准确性的下降(RMSE从90.0增加到91.1)证实了增加卷积容量在卷积与Vision Transformer结合时至关重要。它只会导致微不足道的FLOPs增加(0.2G FLOPs)。
单或双支编码器。与之前的方法类似[31,35],我们测试了双支路结构,将RGB和深度信息分开编码(D)。对于两个支路之间的特征通信,我们在编码器每个阶段的末尾都包含了空间和通道注意机制[40]。然而,与我们的单分支设计(B)相比,较差的结果表明,在早期阶段嵌入多模态信息更加有效和高效。
与通用特征主干的比较。在RMSE中,与我们的模型相比,我们的新CompletionFormer在小尺度(K)中优于纯粹基于cnn的方法(F)和那些纯粹基于变压器的变体(G, H)。特别是,与最近的mpvt - base [12] (I)和CMT-Base [6] (J)相比,它们也集成了cnn和Transformer用于特征提取,我们的网络获得了更高的精度和更低的计算开销(429.6G FLOPs),而mpvt - base (1259.3G FLOPs)。
解码器。与我们的基线(E)即NLSPN[26]相比,在解码器(F)中引入多尺度特征融合的空间和通道注意进一步提高了结果,RMSE从92.3下降到91.4。
SPN细化迭代。我们的网络(L)只需6次迭代,SPN细化即可收敛到最佳结果。与基线(E)需要18次迭代相比,我们增强的U-Net从整个图像中收集信息,因此不需要大的迭代来长距离传播。即使用CSPN++ [2] (M)中的固定的局部邻居替换NLSPN中的非局部细化,其精度也几乎保持不变。这说明我们的CompletionFormer可以在局部和全局学习到良好的亲和力,从而有助于软化CSPN++[2]中聚集范围有限且固定的问题。
模型比例。我们的模型在不同的尺度(L, N, O)中受益于局部和全局线索,与纯基于cnn的基线(E)相比取得了显著的改进,同时计算了更少的FLOPs。为了在准确性和效率之间进行权衡,我们选择了我们的小规模模型(L)作为剩余实验的最终架构。
使用/不使用SPN细化。综上所述,在表3中,我们展示了在SPN细化和未细化的情况下,不同主干网所取得的结果。在这两种情况下,我们的结果都是最准确的。
由Microsoft Kinect[23]和Velodyne LiDAR传感器等传感器捕获的深度地图分布不均匀,经常包含异常值。为了比较我们的模型与当前最先进的方法[5,16,26,35]在处理这一具有挑战性的输入深度时的有效性,我们在不同的设置下手动生成稀疏数据,用于网络训练和测试。对于噪声,由于捕捉到的深度图经常会被传感器噪声或RGB相机与深度传感器[29]之间的位移所破坏,所以我们在实验中没有在输入深度上添加额外的噪声。
户外场景。我们在KITTI DC数据集[36]上进行了详尽的实验,以说明CompletionFormer在不同稀疏级别输入时的鲁棒性。对于所有的实验,我们从官方训练数据(由于资源限制)中随机选择10 000对RGB和LiDAR对进行训练,并在选定的KITTI提供的验证数据集上进行测试。此外,在[9]之后,我们将Velodyne HDL-64e在方位角-仰角空间捕获的原始LiDAR点子采样为1,4,16和64行,以模拟类似于LiDAR的模式。所有方法都使用官方代码和可变的LiDAR输入行进行了完全的再培训(对于DySPN[16],由于没有公共代码可用,因此作者使用相同的培训列表提供了结果)。为了全面理解由卷积编码的局部细节和Transformer收集的全局上下文,我们展示了通过纯基于cnn的方法(即NLSPN和DySPN)估计的结果,这是我们的网络(Ours- vit)和CompletionFormer完整架构(Ours)的完全基于Transformer的变体,它集成了两种范式。如表4所示,由于transformer构建的全局关联,我们的模型只依赖这些块(our - vit),随着LiDAR点变得更稀疏,在所有指标上都显示出更好的结果。然而,仅使用Transformer层,很难将对象与背景区分开,如图4所示。通过耦合局部特性和全局表示,我们的完整模型(Ours)显著减少了所有度量中的错误。
室内场景。在NYUv2数据集[33]上,我们随机从地面真实深度图中抽取0、50、200和500个点,模拟不同的深度稀疏级别,同时保持用于监督的地面真实深度不变。我们的模型和具有公开代码的NLSPN都经过了重新训练,以便进行公平的比较,而GuideNet[35]和PackNet-SAN[5]的结果取自原始论文。在表5中,带有cnn和transformer的CompletionFormer在任何情况下都优于所有其他方法。定性结果在补充材料中提供。
本节综合评估最先进(SOTA)方法的性能。在室内,即NYUv2数据集[33]上,CompletionFormer的结果最好,如表6所示。在移动到室外数据集时,采用MAE、iMAE、RMSE和iRMSE对KITTI深度完井(DC)数据集[36]进行基准测试。经验表明,在4个指标(MAE和iMAE)中,只有L1损耗训练的模型在2个指标上获得了最好的结果。通过联合最小化L1和L2损失,CompletionFormer在已发表的方法中RMSE指标排名第一。在KITTI DC测试数据集上的定性结果如图5所示。通过整合卷积和transformer,我们的模型在接近深度缺失区域(例如第二和第四行上的放大可视化)、无纹理对象(例如第一行上的汽车)和小对象(例如第二和第四行上很远的柱子和树干)时表现得更好。
本文提出了一种单分支深度补全网络CompletionFormer,将卷积注意和transformer无缝集成到一个块中。广泛的消融研究表明,当输入稀疏时,我们的模型在深度完井中的有效性和效率。这种新颖的设计在室内和室外数据集上产生了最先进的结果。目前CompletionFormer的运行速度约为10帧/秒:为了满足实时需求而进一步降低运行时间将是我们未来的工作。
主要用作深度补全,本来想用来在KITTI00~10序列上生成深度图,但是好像数据集是单独的?有人做过相关实验吗?
另外这种Transformer+Cnn似乎很多,想尝试下~