张 博,张美灵,李 雪,朱 磊
(西安工程大学 电子信息学院,陕西 西安 710048)
双目立体视觉是计算机视觉领域的重要研究分支之一,该技术基于视差原理恢复物体三维几何信息,在三维重建、自动驾驶、工业检测等诸多领域具有广泛应用。立体匹配是实现双目感知的核心技术,旨在为一对左右视图查找同名像素点。
立体匹配方法可分为传统立体匹配方法和基于深度学习的立体匹配方法[1]。传统立体配方法通常包含匹配代价计算、代价聚合、视差计算和视差优化4个步骤[2]。一般采用手工设计的特征比较同名点的差异性,缺乏上下文信息,且经验参数的设置存在一定局限性,导致其在无纹理、重复纹理、反射等复杂场景下的匹配效果不尽人意。基于深度学习的立体匹配方法根据是否直接端到端输出视差图被划分为非端到端方法和端到端方法,其中非端到端方法专注于将传统立体匹配方法4个步骤中的某个步骤或某几个步骤用深度神经网络替代,本质上仍旧使用传统方法的框架,未解决视差后处理、图像上下文信息缺乏等问题[3]。端到端方法以左右视图作为输入,利用深度神经网络的强大学习能力直接学习原始数据而后输出视差图,不需要任何后处理。该种方法在立体匹配任务中呈现出巨大的潜力,研究者们致力于从特征提取、代价聚合等不同角度提升网络性能以获得更加准确的视差估计。
图像多尺度特征已被广泛应用于多种任务中[4-6]。在立体匹配方面,特征提取网络获得的特征图质量直接决定了初始代价体的精度,而饱含丰富上下文信息的图像特征不仅可以驱动网络更好地学习目标对象与其子区域的隶属关系(如汽车与窗户、轮胎等子区域间的关系),还可以动态减小搜索范围,有利于匹配估计。为了捕获上下文信息,文献[7]在特征提取阶段引入空间金字塔池化模块(spatial pyramid pooling, SPP)提取不同尺度和不同位置的区域级特征,探索对象和子区域的上下文关系。文献[8]提出了一种浅层编码器-解码器结构融合网络不同层的输出,从而获得具有较大感受野和不同级别的多尺度特征,提高特征区分性。文献[9]构建具有跳跃连接的类似于U-Net的编码器-SPP-解码器金字塔特征提取架构,提取多尺度图像特征并合并不同层次的上下文信息,有效增强特征表示。利用左右特征图构建的4D初始代价体通常缺乏全局信息,在遮挡、无纹理等区域误匹配率较高。为了解决此问题,文献[10-13]提出不同的代价聚合网络对初始代价体进行全局优化。文献[10]利用3D编码器-解码器结构聚合代价体,以推理全局场景的几何信息,端到端输出预测视差。在此基础上,文献[7,11]设计了新颖的堆叠式沙漏结构,学习更多的上下文信息以正则化代价体,展示了出色的匹配效果。文献[12]基于可变形卷积构建了2种不同的自适应代价体聚合结构,有效利用了多尺度代价体之间的互补关系。为了提高模型性能,文献[13]将特征提取网络获取的图像特征与代价体共同输入至代价聚合网络,利用注意力机制计算初始图像特征的权重激励代价体通道,显著提高视差预测精度。
文献[7-9]在提取多尺度特征时使用SPP模块,但池化操作损失了空间分辨率,导致其在细节和边缘区域匹配效果不佳;文献[7,11]在代价聚合时创新性地使用堆叠沙漏结构,虽使精度有一定的提升,但未考虑参考图像特征与代价体之间的交互性。文献[13]已经意识到图像特征引导代价聚合的重要性,然而该方法通常为代价体与初始图像特征之间建立联系,忽略了多尺度上下文信息。为了充分挖掘图像多尺度特征,同时探索图像多尺度特征和代价体之间的相互作用性,本文提出一种基于PSMNet的改进立体匹配网络DGNet。在特征提取阶段,构建密集多尺度特征提取(Dense Multi-scale feature Extraction,DME)模块捕获包含多尺度信息和语义信息的图像特征,改进用于立体匹配的特征表示;在代价聚合阶段,提出密集多尺度特征引导代价聚合(Dense multi-scale features guided cost aggregation,DGCA)结构,使代价体在多尺度图像特征的帮助下自适应聚合有效的上下文信息,有利于解码出更加准确的立体几何信息。
DGNet整体结构如图1所示。该网络主要包括密集多尺度特征提取、密集多尺度特征引导代价聚合以及视差回归3部分。基本流程如下:首先,将标准左右图像输入到具有共享权重的初始特征提取网络获得初始特征图;接着通过密集连接的空洞空间金字塔池化结构(Dense Atrous Spatial Pyramid Pooling, DenseASPP),在扩大特征点感受野的同时获得像素采样密集的多尺度特征以增强特征显著性表示。其次,对含有多尺度信息的左右特征图以像素为单位逐个错位串联构成初始串联代价体,并在改进的代价聚合网络中融合串联代价体和密集多尺度上下文特征,获得高质量的代价体几何信息;最后,通过双线性插值和视差回归获得视差图。
图 1 DGNet结构Fig.1 The structure of DGNet
本文基于初始特征提取网络和DenseASPP[14]构建DME模块,初始特征提取网络用于提取初始图像特征,DenseASPP依赖于不同膨胀率的空洞卷积和密集连接方式提取,整合多尺度信息。
1.1.1 初始特征提取
首先将一对左右视图输入至权值共享的类似于ResNet的初始特征提取网络。不同的是,为了获得较大感受野,第一个卷积层使用3个3×3卷积代替7×7卷积获得浅层特征,随后经过包含3个残差块、16个残差块、3个残差块、3个残差块的4个残差结构,输出大小为B×H/4×W/4×4C的初始特征图f,以此作为DenseASPP结构的输入。其中B是批量大小,H、W分别是左右视图的高和宽,4C是特征通道数128。
1.1.2 密集连接的空洞空间金字塔池化结构
DenseASPP结合ASPP[15]的多尺度生成方式与DenseNet的密集连接方式获取密集多尺度特征。本文设计的DenseASPP结构包含5个不同膨胀率(d≤24)的空洞卷积层,每层空洞卷积的输出为
yl=Hk,dl([yl-1,yl-2,…,y0])
(1)
式中:yl表示第l层空洞卷积的输出,l∈{1,2,3,4,5};Hk,dl表示膨胀率为dl,大小为K×K的卷积核,其中膨胀率dl分别为d1=3,d2=6,d3=12,d4=18,d5=24;y0表示初始特征;…表示特征在通道上进行拼接操作。
将当前空洞卷积层提取到的特征传递到后续所有未访问的卷积层中,因此中间的每层空洞卷积均能编码不同尺度的图像特征,包含大量语义信息。每层空洞卷积设置相同的输出通道数w,具体步骤如下:将初始特征f输入至d1=3的第1层空洞卷积,紧接着将输出结果与输入特征图在通道维度上进行拼接作为第1层空洞卷积的输出特征,则第1层空洞卷积的输入特征通道数为128,输出特征通道数为128+w;d2=6的第2层空洞卷积的输入特征通道数为128+w,输出特征通道数为128+2w。以此类推,第l层空洞卷积层的输入特征通道数为128+(l-1)·w,输出特征通道数为128+l·w。经DenseASPP模块获取的密集多尺度特征包含更密集的像素采样、更大的感受野。
当并行式放置空洞卷积层时,膨胀率为6的空洞卷积只采样下层特征中的9个像素。因此,当采用更大膨胀率时其采样的像素点更为稀疏。如图2所示,在二维情况下,DenseASPP中堆叠式放置空洞卷积层且膨胀率逐层增加,上层的卷积层可以对底层特征进行更加密集的采样,膨胀率为6的空洞卷积层可以采样49个像素,获得的信息连续性更强,有助于提升视差预测的准确性。
在扩大感受野方面,每层空洞卷积的感受野Rk,d计算公式为
Rk,d=(d-1)×(K-1)+K
(2)
式中:d为膨胀率;K为卷积核大小。由此可知,膨胀率为24的空洞卷积层最大感受野为R3,24=49,本文中DenseASPP最大的感受野计算公式为
Rmax=R3,3+R3,6+R3,12+R3,18+
R3,24-4=128
(3)
图 2 像素采样二维示意图Fig.2 Two-dimensional diagram of pixel sampling
小膨胀率的空洞卷积层和大膨胀率的空洞卷积层相互依赖,产生更大的感受野感知图像上下文信息,这有助于提高算法在无纹理、重复纹理等不适定区域的匹配精度。
文献[16]通过计算左右特征图的互相关来构建相关代价体,该方法在视差通道下将特征向量转换为余弦相似度,具有较低内存使用率和较快运行时间的优点。然而,在每个视差下仅生成一个单通道相关图,会损失大量特征信息,导致模型性能较差。本文对DenseASPP输出的密集多尺度特征,在每个视差等级下将左特征图与其对应的右特征图逐像素错位拼接,形成大小为B×H/4×W/4×D/4×4C的初始串联代价体,使代价体保留更多的图像几何信息和上下文信息,其中D是最大视差,4C是通道数128。
由特征图错位拼接形成初始代价体的过程如图3所示。其中红色长方形和蓝色长方形分别表示由多尺度特征提取模块获取的1/4左图像特征图和1/4右图像特征图,白色部分为不同的错位长度,即视差等级0~D/4。
本文提出的密集多尺度特征引导代价聚合结构主要由3个自上而下、自下而上的沙漏网络和6个代价体融合上下文特征(context and geometry fusion,CGF)模块构成,旨在聚合代价体的同时自适应融合DME模块的多尺度上下文特征,输出全局优化后的代价体。
1.3.1 3D堆叠沙漏结构
如图1所示,DGCA结构的2个输入是初始串联代价体和密集多尺度特征,3个相同的沙漏网络均包括编码器、2个CGF模块和解码器。首先利用预沙漏模块聚合上下文信息,增加特征感受野;接着依次使用2个下采样模块获得大小为B×H/8×W/8×D/8×2C的代价体和B×H/16×W/16×D/16×4C的代价体,每个下采样模块由一个步幅为2的3×3×3的3D卷积和一个步幅为1的3×3×3的3D卷积组成;然后交替使用CGF模块和步幅为2的3×3×3转置卷积,依次上采样出大小为B×H/8×W/8×D/8×2C的代价体和B×H/4×W/4×D/4×C的高分辨率代价体。将上采样后的高分辨率代价体作为第2个沙漏结构的输入,其输出的代价体作为第3个沙漏结构的输入,捕获全局信息,获得最终的高质量代价体。此外,在每个沙漏网络中使用2个1×1×1的3D卷积添加快捷连接(如图1中虚线所示),整合相同分辨率的代价体,在不显著增加计算成本的情况下提高性能。在预沙漏模块后增加一个输出模块构成4个输出和4个损失,额外的辅助损失使网络更好地学习较低层特征,有助于最终的视差预测。
1.3.2 代价体融合上下文特征模块
本文在代价聚合阶段融合代价体与密集多尺度特征以得到更精确的立体几何信息。需要说明的是,二者融合时需要保持相同的分辨率和通道数量,因此设计2个不同的下采样模块调整密集多尺度特征的分辨率及相应的通道数量。第一个下采样模块采用2个步幅为2的3×3卷积将密集多尺度特征下采样至B×H/16×W/16×4C。另外一个下采样模块采用一个步幅为2的3×3卷积和步幅为1的1×1卷积将其下采样至B×H/8×W/8×2C。将下采样后的密集多尺度上下文特征C∈RB×C0×H0×W0和相同分辨率、相同通道数量的代价体G∈RB×C0×D0×H0×W0(C0:通道数,4C或2C;D0:视差,D/16或D/8;H0:高,H/16或H/8;W0:宽,W/16或W/8)共同输入至CGF模块。图4为代价体融合上下文特征模块。
图 4 代价体融合上下文特征模块Fig.4 Cost volum fused context featurest model
图4中先将C在视差维度扩展至B×C0×D0×H0×W0获得C′,其次求和C′和G,接着将其输入到卷积核大小为1×5×5的3D卷积层中,最后运用Sigmoid函数生成空间注意力掩膜MS∈RB×C0×D0×H0×W0以自适应强调“重要”区域,抑制“不重要”区域,该过程可表示为
MS=σ[f5×5(G+C′)]
(4)
式中:σ为sigmoid函数,f5×5为卷积核大小为1×5×5的3D卷积层。密集多尺度上下文特征和代价体的融合过程可表示为
GC=f5×5(G+MS⊙C′)
(5)
式中:⊙为Hadamard乘积;GC为融合密集多尺度上下文特征后的代价体。
(6)
式中:k为视差等级;Pk为每个视差等级下的概率;Dmax为最大视差。采用SmoothL1损失函数训练网络,因为相比于L2损失函数,它不易受异常值的影响,具有更好的鲁棒性[15]。损失函数计算公式为
(7)
4个输出模块均会生成预测视差图,其损失分别用L0、L1、L2、L3表示,最终的损失函数由L0、L1、L2、L3加权和构成,其计算公式为
(8)
式中:λi为Li的权重系数。
2.1.1 实验环境
整个网络使用Pytorch框架构建,在2台NVIDIA RTX3060 GPU上对模型执行训练。所有实验,采用Adam优化器(β1=0.9,β2=0.999)端到端训练,训练时将图像随机裁剪为H=256,W=512,最大视差Dmax设置为192,4个输出模块的权重系数设置为λ0=0.5,λ1=0.5,λ2=0.7,λ3=1.0。所提算法在SceneFlow、KITTI 2015和KITTI 2012三大立体数据集上进行实验。对于SceneFlow,首先训练20个周期,然后对其微调20个周期,初始学习率为0.001,在第10、14、16、18周期学习率依次降低一半。对于KITTI,在混合KITTI 2012和KITTI 2015的训练集上使用SceneFlow的预训练模型微调600个周期,初始学习率为0.001,在第300个周期学习率调至0.000 1。
2.1.2 评价指标
对于KITTI 2015数据集,通常采用所有(All)像素与非遮挡(Noc)像素2种情况下的背景区域(D1-bg)、前景区域(D1-fg)以及所有区域(D1-all)的三像素误差百分比作为评价指标。对于KITTI 2012数据集,常采用非遮挡(x-Noc)和所有(x-All)像素中大于x像素的错误像素百分比以及非遮挡(EPE-Noc)和所有像素端点误差(EPE-All)作为评价指标。对于SceneFlow数据集,常采用端点误差(End Point Error, EPE)以及视差异常值D1的百分比作为评价指标。
为了验证DME模块与DGCA结构的有效性,在SceneFlow数据集上进行4种情形的对比实验。采取D1、EPE评估各模块对网络模型性能的贡献,消融结果如表1所示。
表 1 消融实验结果
由表1可知,与实验1相比,实验2中使用DME模块,可使EPE和D1分别下降至0.81 px和3.15%;实验3使用DGCA结构效果更好,EPE和D1分别下降至0.60 px和2.03%;由实验4可以发现,同时使用本文提出的两模块时效果最好,EPE最低至0.56 px,相比于实验1下降了36.4%,实验指标均呈优化趋势。
由此可见,2个模块均对模型有显著改进,DME模块有助于网络获得增强的特征表示和具有引导作用的密集多尺度特征,DGCA模块上采样出的高分辨率代价体在密集多尺度上下文信息的指导下使网络对立体几何特征产生更准确的理解,2个模块相辅相成,共同改善视差预测结果。
2.3.1 KITTI 2015实验结果
对于KITTI 2015数据集,将所提网络在测试集上的视差预测结果提交至KITTI官网,与其他先进立体匹配网络的测试集定量比较,结果如表2所示(所有数据均取自KITTI官方排行榜)。
表 2 不同网络在KITTI 2015数据集上的对比结果
由表2可知,本文模型在精度指标中均取得了最优结果,值得注意的是,所有像素下的D1-all误差百分比是官方排行榜的主要排名依据,本文模型在该项指标中取得了1.76的结果,相比PSMNet、GWCNet、CPOP-Net分别提升了24.1%、16.6%、5.4%。然而,本文模型预测一组图像的时间为0.47 s,说明本文模型的规模更大,在提升精度的同时需要更多的计算资源。
KITTI2015部分测试集的可视化结果如图5所示。可以看出,本文模型产生了更稳健的结果。设计的DME模块避免使用池化操作从而保留了更多细节信息,因此在轮廓结构及物体边缘产生了更精细的视差结果,如视差图中白色方框标出区域。此外,DGCA模块使代价体在多尺度特征的引导下,将匹配信息正确聚合到反射、重复纹理等不适定性区域,从而提高了视差预测的准确性,如视差图中蓝色方框标出区域。误差图中红色像素表示错误估计像素。观察误差图可知,本文模型的错误估计像素明显减少。实验结果表明,在重复纹理和边缘等不适定区域,DGNet的视差预测精度相较于其他算法有了明显的提升,表现出较优越的匹配性能。然而,第1组图像中车反光处与车边铁链处的匹配效果不理想。这是由于受反光和左右图透视变换的影响,其表观特性可能发生改变,导致卷积提取的特征无法有判别性地描述物体。在未来的研究中,考虑引入局部相似性模块[21]获取结构信息,对卷积提取到的表观特征进行补充以有效应对光照变化及透视变换的影响。
图 5 KITTI 2015测试图像的视差可视化结果Fig.5 The result of disparity visualization of KITTI 2015 test image
2.3.2 KITTI 2012实验结果
对于KITTI 2012数据集,将所提网络在测试集上的视差预测结果提交至KITTI网站,与其他立体匹配网络的测试集定量比较结果如表3所示。
由表3可知,本文网络在KITTI 2012数据集上表现良好,在主要排行依据—3px-Noc误匹配率低至1.24%,相比PSMNet、Coex、GWCNet分别提升了16.8%、20.0%和6.1%。
表 3 不同网络在KITTI 2012数据集上的对比结果
图6为KITTI 2012测试图像的视差可视化结果。比较KITTI 2012部分测试集的可视化结果,所提网络预测的视差图整体更加清晰平滑,特别是目标边缘轮廓和遮挡区域,见图6中白色方框所示。此外,在代表重复纹理区域的栏杆、代表反射区域的玻璃窗上也获得了较稳健的结果,如图中黄色方框所示。误差图中红色像素表示遮挡区域的错误估计像素,白色像素表示非遮挡区域的错误估计像素。观察误差图可知,由本文模型得到的误差图中,红色区域和白色区域范围明显减小。说明DGNet在挑战性区域可以提供更加精准的视差预测。
图 6 KITTI 2012测试图像的视差可视化结果Fig.6 The result of disparity visualization of KITTI 2012 test image
2.3.3 SceneFlow实验结果
本网络与其他先进立体匹配网络在SceneFlow测试集上的EPE进行定量比较,结果见表4。
表 4 不同网络在SceneFlow数据集上的EPE对比
由表4可知,本文模型 EPE为0.56 px, 相比于 PSMNet、 GWCNet、 MGNet 分别提升了46.2%、27.3%、15.2%,且相较于其他先进网络均有不同程度的提升,其视差预测精度显著提高。将 ScenFlow 部分测试集的视差预测结果可视化, 如图7所示。 可以看出, 本文模型所输出的视差图明显优于 PSMNet 的预测视差图,稠密且清晰,特别是在重叠、精细结构等区域,其预测的视差更接近真实视差图。
图 7 SceneFlow测试图像的视差可视化结果Fig.7 The result of disparity visualization of SceneFlow test image
本文提出的改进立体匹配网络DGNet,通过密集连接具有不同膨胀率的空洞卷积层来构建多尺度特征提取模块,从而强化网络对不同尺度特征的感知能力。在代价聚合阶段自适应融合代价体和密集多尺度特征,在代价体全局优化的同时嵌入丰富的多尺度上下文信息,实现有效的代价体正则化,从而回归出更加精确的视差图。相比于基准网络PSMNet,本文模型显著提升视差预测精度,同时在重复纹理、遮挡、边缘等不适定区域具有很高的鲁棒性。在未来的工作中,将致力于对DGNet进行轻量化处理。此外,考虑引入结构信息应对光照变化和透视变换的影响,在提升算法实时性的同时保持精度,使其更加适用于自动驾驶等领域。