APP下载

引入轻量级Transformer 的自适应窗口立体匹配算法

2024-02-29王正家胡飞飞张成娟雷卓何涛

计算机工程 2024年2期
关键词:立体匹配视差细化

王正家,胡飞飞*,张成娟,雷卓,何涛

(1.现代制造质量工程湖北省重点实验室,湖北 武汉 430068;2.湖北工业大学机械工程学院,湖北 武汉 430068)

0 引言

立体匹配旨在预测立体图像中沿极线像素形成的视差,是计算机视觉中经典的研究课题,在许多领域发挥着重要作用,包括自动驾驶、增强现实和机器人等领域。基于学习的立体匹配算法能够达到亚像素级别的匹配精度和较低的误匹配率,但多以牺牲运行效率为代价;而以快速计算为目的的算法,在匹配精度上欠佳。

起初深度神经网络被引入立体匹配任务中仅用于匹配代价计算[1]。近年来出现了很多端到端的立体匹配网络,通过探索不同的特征描述方式和聚合方法来获取匹配代价。这些网络可以大致分类为基于相关性和基于3D 卷积的立体匹配算法。基于相关性的立体匹配[2-3]一般采用相关层进行匹配代价计算。LIANG 等[3]使用相关层计算每个离散视差的代价,然后用特征恒量对视差进行优化。AANet[4]使用一种多尺度代价聚合架构,包含基于稀疏点的尺度内代价聚合和尺度间代价聚合层,试图解决不连续视差估计问题和改善弱纹理区域的匹配。LI 等[5]提出了一种递归细化的分层网络,通过以粗到细的方式对视差进行细化,并利用自适应相关层来减少匹配模糊现象。基于3D 卷积的立体匹配算法[6-8]大多采用直接特征级联构造代价体。GCNet[9]用3D 卷积聚 合4D 代价体 以回归 最终视差。PSMNet[10]用 空间池化金字塔模块聚合不同尺度和位置的特征并构造4D 代价体,最后利用3D 卷积进行正则化。StereoDRNet[11]通过一 种扩张3D 卷积来 减少计 算量,并通过融合几何误差和光度误差来细化视差。在性能方面,基于3D 卷积的方法比基于相关性的方法在精度上占更大优势,但是运行速度很慢。还有像Gwc-Net[12]这 种混合使用 相关性 和3D 卷积的方法,但这种方法计算量依然很大。无论是基于相关性还是基于3D 卷积的匹配方法,都设置了最大视差范围以减轻内存和计算需求,对于超出预定范围的视差,则无法推断出正确的匹配,这是以牺牲精度来权衡效率的方式。

与计算机视觉并行发展的自然语言处理领域中的Transformer,在许多图像理解任务中取得了不错的成果[13-15],现有一些工作采用Transformer 架构来编码匹配特征[16-18]。SuperGlue[16]通过自注意力和交叉注意力机制来学习关键点的空间依赖关系和它们的视觉外观信息,在增强特征表达的同时,能够使代价学习复杂的先验知识,然后使用一种线性分配策略寻找最佳稀疏匹配点。LoFTR[17]采用级联结构的Transformer,在粗匹配中学习密集排列和全局一致的匹配先验,然后对高置信度的匹配点使用基于相关性的方法将其细化到亚像素级别。STTR[18]通过捕捉不同特征之间的远程依赖关系和全局上下文信息来计算像素间的相关性,从序列到序列的角度沿极线进行密集像素匹配。SSD-former[19]利用滑动窗口机制将整体代价量分解为许多小代价量,减少了Transformer的自注意力操作,可灵活适应不同的分辨率并提高计算效率。这些基于Transformer 特征描述的匹配方法与上述两类方法相比,虽然能放松视差范围,但是存在较高的延迟,因为Transformer模型中的自注意力层中大量使用全连接算子,这使得计算的复杂度相对于序列长度的时间和空间复杂度均二次增长,当序列长度过大时计算成本难以承受[20]。

现有基于学习的立体匹配算法通过设置最大视差来减少内存和计算需求,但却以损失精度为代价;而没有视差范围局限的Transformer 特征描述匹配算法则存在较高的延迟。针对以上问题,本文提出一种基于轻量级Transformer 自适应窗口的立体匹配算法(LTAWNet)。LTAWNet 包含坐标注意力位置编码模块、轻量级Transformer 特征描述模块和自适应窗口匹配细化模块。坐标注意力位置编码模块通过位置编码提供空间位置依赖信息,可以增强相似特征之间的辨别能力,有助于提高匹配精度;轻量级Transformer 特征描述模块用来转换上下文相关的特征,可以增强特征的特异性描述,提供更加精确的匹配点集,为降低Transformer 的高延迟性,本文提出用可分离多头自注意力层对Transformer 进行轻量化改进;自适应窗口细化模块在高分辨率特征图上对候选的匹配点进行局部区域匹配细化,并引入可变形卷积,对不同纹理自适应地产生更合适的匹配窗口,在提高匹配精度的同时提高执行效率。

1 LTAWNet 立体匹配网络

本文所提出的立体匹配算法包括特征提取、轻量级Transformer 特征描述、特征匹配、自适应窗口的匹配细化、视差回归等5 个阶段,如图1 所示。

图1 LTAWNet 总体框架Fig.1 Overall framework of LTAWNet

在特征提取阶段,使用两个权重共享的特征提取网络对输入的立体图像对进行多尺度特征提取,生成三级特征金字塔用于计算不同尺度的匹配特征,并在最小尺度特征图的相关性计算前加入坐标注意力机制(CA)进行位置编码,以增强特征图的位置依赖性;在基于轻量级Transformer 的特征描述阶段,使用提出的轻量级Transformer 模块(WT)对特征进行特异性增强表达,Transformer 模块中交替使用自注意力和交叉注意力层,可以聚集特征图内和左右特征图间全局上下文信息,在两个注意力层叠加过程中,匹配点的数量将会收敛为更为精确的匹配点集;在特征匹配阶段,使用可微匹配层对关注度最高的特征进行匹配,生成一个匹配置信度矩阵,为后续的视差生成做准备;在匹配细化阶段,以上一级低分辨率特征图的匹配点为中心,对其用相关性的方法映射到下一级高分辨率的特征图的局部窗口中,在局部窗口内对特征点进一步细化到亚像素级别的匹配,将可变形卷积融入到相关性计算中,从而生成内容自适应窗口,减少匹配模糊现象;在视差回归阶段,围绕匹配点构建3 像素窗口,利用重归一化操作算子计算权值,对窗口内匹配点进行视差加权以回归最终视差。

1.1 特征提取

在特征提取阶段,将立体图像对IL和IR输入到权重共享的特征提取网络,利用带有特征金字塔网络(FPN)[21]的标准卷积结构提取IL和IR三级特征金字塔,将三级特征图记为,1/2、1/4、1/8 尺度的特征图通道数分别为64、128、256。为了增强特征的位置依赖性,提出使用坐标注意力机制[22]对特征进行位置编码,并仅对特征图使用。特征提取网络和位置编码层的详细结构如图2 所示。

图2 特征提取网络结构和位置编码层结构Fig.2 Feature extraction network structure and position encoding layer structure

在弱纹理和无纹理区域,像素间的相似性比较模糊,通过加入位置编码有助于解决这一歧义问题,该方法已在STTR 中被证明是有效的。与在STTR中使用二次计算代价的相对位置编码不同,本文使用一种具有线性复杂度的坐标注意力层来进行位置编码,在提高精度的同时,该方法引入的计算量更小。

1.2 轻量级Transformer 的特征描述

使用Transformer 模块来转换具有位置依赖性和上下文相关的特征,可以在增强特征特异性表达的同时,将特征点收敛为更精确的匹配点集。为了弥补标准Transformer在立体匹配任务中延时高的不足,本文提出引入可分离多头自注意力层(MHSA)[23]对标准Transformer 进行轻量化改进。

本文所提的轻量级Transformer 模块结构如图3所示。WT 模块由顺序连接的编码器组成,编码器中交替使用自注意力和交叉注意力层,匹配点的数量在两种注意力层叠加的过程中逐渐收敛。其中,Qh、Kh和Vh在自注意力层中从同一特征图中计算,在交叉注意力层中从两个不同特征图中计算。输入x∈ Rk×d由k个d维token(在视觉Transformer 中指像素)嵌入组成,x被传输到3 个分支,即查询Qh、键Kh和值Vh。注意力层首先对所有h个头同时计算Qh和Kh中线性层输出之间的点积,然后用Softmax 操作算子σ来生成注意力矩阵(或上下文映射)a∈ Rk×k×h,再计算a和Vh中线性层输出之间的另一个点积,加权后输出yw∈Rk×dh×h,其中,dh=d/h是头的维度。h个头的输出被连接起来生成k个d维token 的张量,然后将其输入另一个权重为WO∈Rd×d的线性层,产生最终加权输出y∈Rk×d。

图3 WT 结构及多头自注意力层结构Fig.3 WT structure and MHSA layer structure

标准Transformer 中的多头自注意力层使用缩放点积注意力来捕获k个token 或patch 之间的上下文关系,如图4(a)所示。大量的tokenK使得MHSA 的时间和空间计算复杂度为O(k2)。此外,MHSA 中使用批量矩阵乘法和Softmax 函数用于计算注意力矩阵,这种计算方式会严重消耗内存,因此,本文基于标准Transformer 引入具有线性复杂度的可分离自注意力机制。

图4 多头自注意力对比Fig.4 Comparison of MHSAs

引入的可分离自注意力机制原理如图4(b)所示。对输入x使用3 个分支进行处理,变为输入I、键K和值V。分支I使用权重为WI∈Rd的线性层将x中的每个d维token 映射到标量,权重WI作为图4(b)中的潜在节点L。这个线性映射是一个内积操作,然后计算潜在tokenL和x之间的距离,得到一个k维向量,并使用Softmax 函数对所得向量归一化以产生上下文分数cs:

与计算每个token 相对于所有k个token 的注意力(或上下文)得分的Transformer 不同,可分离自注意力机制仅计算潜在tokenL的上下文得分,这将计算注意力(或上下文)得分的成本从O(k2)降低到O(k)。上下文分数cs用于计算上下文向量cv,该向量对上下文信息进行编码,使用权重为WK∈Rd×d的键分支K将输入x线性投影到d维空间,产生输出xK∈Rk×d。上下文向量cv∈Rd被计算 为xK的 加权和:

上下文向量cv对输入x中所有标记的信息进行编码,cv中编码的上下文信息与x中的所有token 共享。与此同时,使用权重为WV∈Rd×d的值分支V将输入x线性投影到d维空间,经过ReLU 激活函数后输出xV∈Rk×d。然后cv中的上下文信息通过元素传播乘法运算传播到xV,将生成的结果传递给另一个权重为WO∈Rd×d的线性层,产生最终输出y∈Rk×d。

可分离自注意力机制可以用数学公式定义为:

其中:*和∑分别是元素传播乘法与求和操作。

可分离自注意力机制的特点是它使用元素级操作(如求和与乘法),这是实现高效计算的关键。之所以说这种方法是可分离的,是因为它允许通过用两个单独的线性计算取代二次MHSA 来编码全局信息。本文将可分离MHSA 替换标准Transformer 中的MHSA 得到轻量级的改进Transformer,与基于标准Transformer 的立体匹配算法STTR 相比延时更少。

1.3 特征匹配

传统的匹配算法会对匹配点施加唯一性约束,即每个像素点只能有唯一的匹配点与之相对应,然而这种方法无法进行梯度传播,不适合基于学习的立体匹配算法。Dual-Softmax[17]操作算子是一种可微的匹配策略,其对匹配点进行软约束。本文使用Dual-Softmax 算子进行匹配概率矩阵计算。将1/8尺度的特征图经过WT 模块转换后记为

首先,使用式(5)计算得分矩阵S:

然后,在S的水平和垂直方向都应用Softmax 函数去获取软约束互最近邻(MNN)[24]匹配的概率。获取的匹配概率矩阵Pc用式(6)表达为:

最后,再次使用互最近邻准则对置信度低于θc的匹配点进行过滤,剔除可能异常的粗匹配,得到新匹配概率矩阵Mc为:

相比基于3D 卷积的立体匹配算法PSMNet,本文使用的相关性匹配方法匹配冗余信息更少、计算消耗更小。

1.4 自适应窗口的匹配细化

经上述处理过程得到粗级匹配概率矩阵后,在1/4 和1/2 尺度的特征图上执行匹配细化。为了减少匹配搜索空间和避免非理性矫正带来的匹配失效,提出使用沿极线的自适应窗口对特征点进行匹配细化。基于自适应窗口的匹配细化过程如图5所示。

图5 匹配细化过程及自适应搜索窗口的形成Fig.5 Matching refinement process and formation of adaptive search window

局部窗口在搜索匹配点进行相关性概率计算时,使用内容自适应窗口,通过可变形卷积[25]学习附加偏置dx和dy来寻找新的相关对,新的匹配概率矩阵可以被计算为:

其中:i(x,y)和j(x,y)分别为左右特征图上的点;xi和xj表示点i、j的水平方向坐标;yi和yj表示对应的垂直方向坐 标;i′和j′为加入位置 偏移量后点i(x,y)和 点j(x,y)的新表达;c表示输入特征图的通道数;f(d)和g(d)表示当前像素在水平和垂直方向上的固定偏移量,在本文中设置f(d)∈[-4,4],图5 显示了偏移量如何改变固定形状搜索窗口的形成。本文使用的自适应窗口匹配细化方法,仅计算局部的相关性,比STTR 的逐像素全对匹配方法具有更高的执行效率。

1.5 视差回归

利用最终的细化匹配矩阵Mf′回归最终视差。对 于匹配矩阵上的匹配点对围 绕′点构建一个3×3 像素的窗口N3(k),对窗口中的匹配概率进行重归一化处理得到对应像素视差的权重,对窗口中的候选视差加权就是回归的视差。假设处的匹配概率为t,t∈N3(k),用公式表达为:

1.6 损失函数

训练过程的损失函数由第1 级的粗级损失、第2、3 级的细化损失和最后计算的视差损失组成。粗级损失是计算置信矩阵Pc上的负对数似然函数,使用互最近邻准则来计算置信矩阵的真实标签,通过在Mgtc网格上最小化负对数似然损失进行反向梯度传播:

给定视差真值,计算最后一层输出的视差损失为:

2 实验

为了验证所提LTAWNet 立体匹配算法的性能,在3 个流行的公共数据基准上进行训练,对算法的各个组成模块进行消融研究,以验证各模块对算法整体性能的影响,并将LTAWNet 与其他立体匹配模型进行性能对比实验,以验证LTAWNet算法的优势。

2.1 数据集

实验使用的数据集如下:

1)SceneFlow[2]:是一个大型合成数据集,包含超过3.9×104个960×540 像素分辨率的立体图像训练对。该数据集提供了详细和稠密的视差图真值,使用像素平均视差误差(EPE)作为评价指标,在实验中选取80%的数据作为训练集,剩下的部分作为测试集。

2)KITTI2015[26]和KITTI2012[27]:由 动态街景 的广角立体图像对和LiDAR 采样的稀疏视差真值组成。KITTI2015 的训练集和测试集分别包含200 个立体图像对,以视差预测异常值D1 的百分比(D1-all)作为衡量指标;KITTI2012 的训练集和测试集分别提供了194 和195 对立体图像对,将错误像素百分比作为评价指标。

2.2 训练

本文利用PyTorch[28]框架完成网络模型构建,该模型在8 个NVIDIA GTX2080Ti GPU 上加速训练,批处理大小为16,整个训练过程执行300 000 次迭代,并使用标准学习率为0.000 4 的Adam[29]优化器。在网络训练热身阶段,先执行6 000 个训练周期,使学习率从5%线性增加到标准值100%,保持0.000 8 的学习率训练180 000 个周期之后,学习率逐渐降低到标准值的5%。模型的输入尺寸为384×512 像素,对训练的数据进行数据增强来提高模型的鲁棒性和泛化能力,包括使用裁剪操作、非对称色度增强(亮度、对比度和伽马变化)和使用随机大小的掩码遮挡。

2.3 消融实验

在不同的实验变量设置下,对本文算法性能进行消融研究,并对坐标注意力机制(CA)、轻量级Transformer 模块(WT)、自适应细化匹配窗口(AMW)及级联的层数N给出定量的评估结果,如表1 所示。其中,√表示使用该模块,all 是指对所有像素进行评价,Noc是指只对非遮挡区域的像素进行测试。

表1 消融实验结果Table 1 Results of ablation experiments

对提出的轻量级Transformer 模块进行消融研究时,与使用标准Transformer 模块进行对比,对比结果如表1 的第1、2 行显示,可见,使用轻量级Transformer 在运行时间上有较大的提升,运行时间比使用标准Transformer 快了约3 倍。对进行特征编码的坐标注意力层进行消融研究,结果如表1 的第2、3 行显示,可见,添加CA 后网络的整体误匹配率明显降低,在SceneFlow 数据集上像素平均视差误差从0.82 下降到0.56,下降了约30%。对自适应细化匹配窗口进行消融研究,与使用固定形状窗口的匹配细化做对比实验,结果如表1 的第3、4 行显示,可见,使用自适应窗口匹配细化在3 个数据集的误匹配率指标上均有所下降,在KITTI2015 数据集上,所有区域的D1-all 从1.72% 降低到1.61%。此外,对于级联的层数N,测试了使用2~4 层的级联结构,结果如表1 的最后3 行显示,可见,随着级联层数的加深,误匹配率有下降的趋势,3 层级联和4 层级联结构有着接近的匹配精度,为了更好地权衡本网络模型的匹配精度和运行效率,本文采用3 层的级联结构。

2.4 性能对比实验

为了进一步评估所提出的算法,把实验中训练的最佳算法在KITTI2015、KITTI2012 和SceneFlow数据集上进行对比实验,包括基于3D 卷积的立体匹配算法:PSMNet[10]和GCNet[9],基于相关性的立体匹配算法:AA-Net[4],基于相关性与3D 卷积 的混合方法:Gwc-Net[12],基于Transformer 架构的匹配算法:STTR[18]和SSD-former[19]。在KITTI2015 数据集中,使用所有区域(All)和非遮挡区域(Noc)的视差预测异常值D1 百分比为评价指标,其中3 像素误差在两个区域中包含所有像素(D1-all)、背景像素(D1-bg)和前景像素(D1-fg),并测评不同算法的推理时间。在KITTI2012 数据集上,评估所有区域和非遮挡区域的错误像素百分比(>2px,>3px,>4px,>5px)。在SceneFlow 数据集上,测试本文算法和对比算法的综合性能,测试的性能包括参数量、显存消耗、浮点数计算量、运行时间和误匹配率。所有的测评数据均在单个NVIDIA GTX2080Ti GPU 上测试所得。

2.4.1 KITTI2015 对比实验

在KITTI2015 数据集上的测评结果如表2 所示,其中加粗数据表示最优值。在参考的评价指标中,所提的立体匹配算法除了在D1-fg 指标上性能略显逊色,其他指标都取得了领先的结果。在考虑所有像素情况下的视差预测异常值D1-all为1.71%,与使用3D 卷积的PSMNet[10]相比,视差精度提高了26%,运行时间快了5 倍。与基于相关性的立体匹配算法AANet[4]相比,误匹配率明显降低,速度上也比较接近,单对图像的推断时间为0.08 s,这主要得益于这两种方法都避开了内存消耗较大的3D 卷积。此外,与基于标准Transformer 的STTR[18]算法相比,本 文算法在速度和精度上都有了较大的提升,这主要因为本文提出的是基于改进的轻量化Transformer 架构,并且本文算法是一种局部的立体匹配算法,只在局部窗口上执行Transformer 运算,但是有一点不容忽视,本文算法没有考虑对遮挡的视差估计处理,所以在D1-fg指标上性能略次。

表2 在KITTI2015 数据集上的性能对比结果 Table 2 Performance comparison results on KITTI2015 dataset

为了定性评价本文算法的效果,从对比的实验模型中选取基于3D 卷积的立体匹配算法PSMNet[10]和基于Transformer 的立体 匹配算 法STTR[18]进行可 视化分 析,可视化 结果由KITTI2015 基准测评官网得到。图6(a)为输入图像,图6(b)~图6(d)分别为PSMNet、STTR 和本文算法的视差图和对应的误差图,通过对比视差图上矩形框中的物体可以看出,本文算法可以在物体边界上获得更加平滑和细致的预测,对物体边界的视差恢复较为完整。

图6 在KITTI2015 数据集上的定性对比结果Fig.6 Qualitative comparison results on KITTI2015 dataset

2.4.2 KITTI2012 对比实验

在KITTI2012 数据集上的定量和定性实验结果分别如表3 和图7 所示,可见,与对比算法相比,本文算法在5 像素误差上达到了最先进的水平,并且运行时间仅次于基于相关性方法的AA-Net,单对图像的推理时间为0.09 s。本文的立体匹配算法与基于Transformer 算法的SSD-former 相比,整体匹配精度较为接近但运行速度要快3 倍多;与STTR 算法相比,非遮挡区域的3 像素误差下降了0.09,运行速度提高了近4 倍;与基于3D 卷积的PSMNet 算法相比,整体精度有较大的提升,非遮挡区域的3 像素误差下降了0.34,运行时间快了4 倍多。图7(a)为输入图像,图7(b)~图7(d)分别为PSMNet、STTR 和所提方法的视差图和对应的误差图,观察白色矩形框中的车辆可以看出,本文算法可以较清晰地恢复车辆边界的视差,视差估计的质量更细致。

表3 在KITTI2012 测试数据集上的性能对比结果 Table 3 Performance comparison results on KITTI2012 test dataset

图7 在KITTI2012 数据集上的定性对比结果Fig.7 Qualitative comparison results on KITTI2012 dataset

2.4.3 SceneFlow 对比实验

在SceneFlow 数据集上,为了保证对比结果的有效性,统一使用576×960 像素的输入图像,定量和定性的评估结果分别如表4 和图8 所示。

表4 综合性能对比 Table 4 Comparison of comprehensive performance

图8 在SceneFlow 数据集上的定性对比结果Fig.8 Qualitative comparison results on SceneFlow dataset

由表4 可知:本文立体匹配算法的参数量为2.28×106,在所对比的5 种算法中具有最小的参数量;浮点数计算量为216.52×109,显存消耗为1.28×109,运行时间为0.09 s,这3 项指标均仅次于基于相关性模型的AANet,但优于其他的对比算法;在匹配精度方面,EPE 指标和3 像素误差低于6 种对比的算法,拥有最高的匹配精度;与基于3D 卷积模型的PSMNet相比,本文算法在参数量上减少了56.32%,浮点数的计算量降低96.72%,显存消耗也降低了近一半多;与基于Transformer 的匹配模型STTR 相比,运行时间快5 倍多,浮点数的计算量减少了1 倍多,匹配精度在3 像素误差上降低了0.16,在EPE 上降低了30%左右。综上,在所对比的模型中,本文模型能较好地平衡匹配精度和运行效率。

图8(a)为原始左视图示例,图8(b)~图8(d)分别为PSMNet、STTR 和本文算法的测得的视差图,观察第1 列视差图中的轮毂可以看出,本文算法可以细致地恢复轮毂的结构特征;观察图8(b)的Monkaa 视差估计结果可以看出,本文算法对物体的视差估计较为完整,不存在视差估计不连续问题;由图8(c)可见,对车体的视差估计中,本文算法能够高保真的还原其轮廓信息,在边缘出的视差估计更平滑。

3 结束语

针对现有立体匹配算法存在的显存消耗大、运行时间长、视差范围有限等问题,本文提出一种基于轻量化Transformer 的自适应窗口立体匹配算法。该算法在低分辨率特征图上进行位置编码和特征粗匹配,在高分辨率特征图上进行匹配细化。算法中轻量级Transformer 特征描述模块和自适应窗口匹配细化模块,在增强特征表达和提高匹配精度的同时,可有效减少计算消耗,并且能生成无视差范围的视差图。实验结果表明,相比基于3D 卷积和基于Transformer 的匹配算法,所提立体匹配算法无论是在匹配精度还是在运行时间上,都有较大的性能提升,能够较好地平衡匹配精度和运行效率。后续将把遮挡视差处理融入到算法中,对算法做进一步改进。

猜你喜欢

立体匹配视差细化
基于自适应窗的立体相机视差图优化方法研究
中小企业重在责任细化
基于梯度域引导滤波的视差精炼迭代算法
“细化”市场,赚取百万财富
影像立体匹配中的凸优化理论研究
“住宅全装修”政策亟需细化完善
基于互补不变特征的倾斜影像高精度立体匹配
基于分割树的视差图修复算法研究
改进导向滤波器立体匹配算法
立体视差对瞳孔直径影响的研究