双目立体视觉是指不接触目标物通过模仿人眼拍摄图像,并根据视差原理来获取物体的三维信息,即位置信息,具有操作简单、低成本、自动化程度高等优点,广泛应用于工业检测、机器人视觉、三维重建等领域.双目视觉实现的关键技术有相机标定、立体校正及立体匹配,其中立体匹配是双目视觉技术核心步骤之一.近年来卷积神经网络(convolutional neural network,CNN)[1]在提取特征任务中展现了优异的性能,文献[2]提出通过卷积神经网络将光学流量估计的概念扩展到视差和场景流估计,采用编码器-解码器架构进行端到端的卷积网络训练.文献[3]提出利用空间金字塔池化(spatial pyramid pooling,SPP)和空洞卷积以扩大感受野,并提出了一个结合了中间监督的堆叠沙漏3D卷积神经网络.文献[4]提出了半全局聚合层(semi-global guided aggregation layer,SGA)和局部指导聚合层(local guided aggregation layer,LGA)替换常用的3D卷积代价聚合方式,分别来获取局部和全局的代价依赖关系.文献[5]以PSMNet[3]为基准网络,提出针对立体匹配任务所设计的特征提取网络,同时提出具备大感受野的分离3D卷积.文献[6]采用以残差网络(residual network,ResNet)[7]为基础的卷积神经网络计算特征图,通过加入图像注意力机制模块和通道注意力机制模块来捕捉丰富的上下文信息.本研究提出了适用于立体匹配的端到端深度网络,减少在立体匹配过程的误差累计,并使得运行时间减少,同时在AANet[8]的基础上构建一个参数量更少、更为简单的特征提取网络,取得更好的局部特征.1 适用于立体匹配的自适应端到端深度网络——AEDNet1.1 网络结构设计传统上立体匹配的过程被认定为一个多阶段最优化求解过程,其中一般分为匹配代价计算、匹配代价聚合、视差计算和视差优化4个步骤[9].本研究的网络结构设计首先是匹配代价计算阶段采用SesNet(SimplesNet)对输入的左右图像进行提取得到3组特征图,之后经过相关操作将3组左右图特征构建成多尺度的匹配代价卷.在代价聚合阶段采用尺度内聚合和尺度间聚合的方式代替繁琐的3D卷积操作,具体为3个尺度内聚合模块(adaptive cross-scale aggregation,ISA)[8]和1个尺度间聚合模块(adaptive cross-scale aggregation,CSA)[8],在视差计算阶段利用 soft argmin函数分别得到视差图.最后通过上采样和StereoDRNet[10]中的精修模块得到最终的预测视差图.1.2 特征提取模块在端到端立体匹配算法中匹配代价阶段通常使用近似ResNet的网络结构,ResNet是在VGG(visual geometry group)19[11]基础上修改的,而ResNet和VGG主要处理任务为图像分类,其与立体匹配任务主要区别为图像分类任务要求输入图像无论发生何种程度的平移变换,其输出的分类结果不发生改变,即平移不变性,而立体匹配任务则对图像平移敏感,要求当输入图像一旦发生平移变化时,其图像结果也应该对应地有所变化.此外,图像分类任务需要高度抽象的语义级别特征,从而对图像内容类型做出更加准确的判断.采用一种改进的专门用于立体匹配任务的网络SimpleResNet[5],即SesNet进行特征提取,并在得到特征图后采用其特征图金字塔网络(feature pyramid networks,FPN)[12].SimpleResNet提出通过限制卷积核大小以取得较低抽象程度的特征.根据SimpleResNet改进的特征网络称为SesNet,首先是采用SesNet直接对输入图片进行降采样,所输出的特征图通道为32,随后采用残差块,其具体的网络结构是1个2层卷积核为1×1的残差网络,再通过4个2层卷积核依次为3×3,1×1,利用的残差网络进行升维降维操作得到第一组初始特征图,然后重复操作在第一个含有3×3卷积核的残差块进行下采样,以得到另两组特征图.最后通过SesNet可以得到6个特征网络层,分别包括左右图像特征.1.3 代价聚合模块端到端的立体匹配算法通常会通过结合上一步提取出的左右特征图得到一个4D的匹配代价卷,为了减少网络参数量,在代价聚合阶段采用尺度内聚合模块和尺度间聚合模块,旨在提高运行速率,减小运行损耗的同时使运行结果保持较高的准确率.1.3.1 尺度内聚合模块尺度内聚合模块是对相同分辨率下的左右图特征构建的匹配代价卷进行代价聚合,尽管卷积神经网络能够自动地学习权重,但规则采样则更容易出现物体边缘和细微结构的粗大边缘问题,因此采用自适应的尺度内聚合模块,本模块采用稀疏点的特征表示,从中借鉴可变形卷积进行自适应采样从而减轻前后景对代价聚合造成的影响,以达到更高效地进行代价聚合.尺度内聚合模块的代价聚合公式为I(d,p)=∑k=1K2wkI(d,p+pk+Δpk)mk,(1)式中:I(d,p)表示在像素点p处,视差为d经过尺度内聚合后的匹配代价;K2为采样点数,因为使用的卷积核为3×3的可变形卷积,所以K=3;wk为第k个点的聚合权重;pk为像素点p第k个点的固定偏移;Δpk为像素点p第k个点可学习的额外偏移;mk为第k个点每个位置的权重,用于调整聚合权重wk.1.3.2 尺度间聚合模块尺度间聚合模块用于聚合不同尺度的匹配代价卷之间的特征.对于无纹理或者弱纹理区域通过下采样操作所得到的粗糙尺度可以更好地提取具有判别性的特征,但是对于某些细节特征,则需要较高分辨率的特征表示,因此进行多尺度聚合也是一种常见的聚合方式,且使用此模块一定程度弥补了匹配代价计算中缺失的全局信息.这里借鉴传统的跨尺度聚合方法,其聚合公式为CS=∑g=1Sfg(Ig)     (g=1,2,⋯,S),(2)式中:CS表示第S个尺度经过尺度内聚合后的匹配代价卷;Ig表示在第g个尺度经过尺度间聚合后的匹配代价卷;fg为多个尺度聚合的通用函数.函数fg分为3种情况:当g=s时是恒等映射函数,即当前尺度的匹配代价卷不做任何变换;当gs时则需要对第g个尺度的匹配代价卷进行下采样,使其和第s个尺度一致,具体操作为通过s-g个步长为2的3×3卷积网络;若gs则须要对第g个尺度的匹配代价卷通过双线性差值法的上采样后接1×1卷积.2 实验与结果通过不同的设置来评估各模型,在Sceneflow测试集的表现证实所提出网络在时间、显存占用方面的优势.最后通过在KITTI 2012数据集上微调并验证其算法性能[2].2.1 数据集和训练过程采用Sceneflow数据集对网络进行训练,以往的立体匹配算法常用的数据集,如KITTI和Middlebury[13]的训练图像较少,在2016年CVPR(computer vision and pattern recognition)便提出构建一个大规模的合成数据集,Sceneflow数据集大约有39 000对训练图像,每对图像分辨率为576×960像素,Sceneflow数据集由三维场景组成,也被称为合成数据集,其中包含相关的完全稠密且准确的标签信息(如视差、光流及场景流),这样的数据集使得深度网络能够得到充分训练.KITTI 2012数据集每对图像分辨率为384× 1 248像素,KITTI 2012数据集由194个带深度标签的训练图像对和195个不带深度标签的测试图像对组成,采集的深度图为半稠密的,大约覆盖了图像的1/3.本文实验环境硬件配置为Inter(R) CoreTM i7-6700 CPU @ 3.40 GHz×8,单个NVIDIA RTX 2080 GPU,内存为15.6 GiB,硬盘空间大小为1.0 TiB,软件配置使用通用并行计算架构版本为cuda10.0,另外搭建Anaconda虚拟环境,其环境重要依赖包分别有python3.7.4,pytorch1.2.0,numpy1.16.4.网络训练中使用Adam[14]作为优化器,其方法参数为β1=0.9,β2=0.999.使用Sceneflow数据集所有的训练集共计3.545 4×104个图像对进行训练,并在其标准测试集共计4 370个图像对上进行评估.最大视差设置为192像素.本文模型训练64次迭代,每次训练样本数设为4,学习率从0.001开始,为防止模型无法收敛,在模型训练完20次迭代以后每10次迭代学习率下降一半.2.2 实验与分析首先通过使用不同的设置评估模型,其中ResNet+FPN表示基础网络AANet中的特征提取网络,ResNet的结构与ResNet-50类似,采用卷积核为3的可变形卷积进行特征提取.SesNet+FPN表示所提出的网络AEDNet;SimpleResNet表示专用于立体匹配任务的特征提取网络;SesNet表示所改进的特征提取网络.各模型在SceneFlow测试集上的对比如表1所示,表中:αFLOPs为浮点运算次数;βMACC为乘法累加运算次数;运行时间为处理分辨率576×960的双目图像所用时间;端点误差(end-point-error,EPE)表示以像素为单位预测视差值与真值之间的平均视差误差.FLOPs(浮点运算)通常用来衡量网络模型的复杂度.MACC(乘法累加运算)通常用来衡量模型的计算量.10.13245/j.hust.220305.T001表1使用不同设置的评估模型模型运行时间/s参数数量/106端点误差显存占用/GiBαFLOPs/109βMACC/109ResNet+FPN0.0954.00.8904.9125249SesNet+FPN0.0943.00.9594.5124248SesNet0.0892.51.0334.4112225SimpleResNet0.0922.61.0554.4114227由表1可知:SesNet模型比SimpleResNet模型无论在精度和运行时间都有所提高,实验结果证明SesNet具有一定优越性,AEDNet(SesNet+FPN)与参考网络AANet(ResNet+FPN)相比在参数数量缩减了接近25%,为立体匹配网络模型移植到小型的计算设备提供了可能.在匹配率有一定降低的同时,运行时间方面减少幅度不大,其中推测原因大概有两点:其一是基于AANet的改进主要在于特征提取阶段,端到端构建的网络在运行时间上本就占优,仅对其中小部分进行改进,影响相对较小;其二是采用简单的卷积操作取代复杂卷积,但相应的网络结构变复杂,同时导致所提网络精度有所降低.本文网络AEDNet与基础网络AANet在Sceneflow数据集视差计算结果如图1所示.从图1可以看出:本文网络在Sceneflow数据集的部分区域表现比AANet好,如图1反光材质的管子以及具有重复纹理的物品,例如图1中长方形的木块,木架后的刀具,虽与真实视差图有一定差距,但本文网络下视差显示较为完整,而AANet下显示并不完整,且由于相互的遮挡绿植边缘不明显.10.13245/j.hust.220305.F001图1AANet与AEDNet视差计算结果分别进行KITTI数据集的微调训练,并用其对应的测试集验证网络性能,模型各训练1 000次迭代,每次训练样本数设为1,学习率从0.000 1开始.将微调训练好的网络模型按照KITTI评测网站的评测标准进行评测,并与其他优秀的算法进行比较,各算法在KITTI 2012数据集的评测结果见表2,表中:ONoc和OAll分别表示非遮挡区域和整个区域的视差图中误匹配点所占的比例;ANoc和AAll分别表示非遮挡区域和整个区域的视差图中匹配点的平均误差;T表示时间.采用的基准为图像中的匹配点端点误差小于3像素,若满足则是正确估计像素.另外为更好地比较网络性能,将提出的AEDNet以及其参考网络AANet在相同的实验条件下训练运行.10.13245/j.hust.220305.T002表2各网络在KITTI 2012数据集评测结果网络名称ONoc/%OAll/%ANoc/像素AAlll/像素T/sGwcNet[15]1.321.800.50.50.32GA-Net[4]1.361.700.50.50.36SGNet[16]1.381.850.50.50.60PSMNet[3]1.491.890.50.60.41SegStereo[17]1.682.030.50.60.60GC-Net[18]1.772.060.60.70.90AANet[8]2.543.180.60.70.09DispNetC[2]4.114.650.91.00.06本文网络3.404.110.70.80.08表2中AcfNet,GwcNet,PSMNet,SegStereo,GC-Net都属于端到端的立体匹配算法,同时这些网络在代价聚合阶段都使用3D卷积,比起本文网络,这些网络模型在运行时间上最快的处理时间是0.32 s,而本文网络的处理时间能控制在0.1 s以内,验证了尺度内聚合模块和尺度间聚合模块在减少大量冗余参数后对实时性的提高,但同时也牺牲了网络的精度,而DispNetC和Flow2Stereo则将光流估计和立体匹配相结合,最后直接利用2D卷积回归得出视差图,导致得到的视差图效果不佳.由表2可知:由于本文网络在特体匹配阶段通过限制卷积核的大小及使用普通卷积减少了网络的参数量,在运行时间上有一定的减少,虽然精度并不如基础网络,但与其他精度高的立体匹配网络相比,本文网络在运行时间上有一定的优越性,与其他考虑网络运行效率、注重实时性的网络相比,本文网络的精度略高,实验表明本文所提网络在保证精度的情况下能高效实现立体匹配.3 结论提出了一种基于AANet改进的适用于立体匹配的端到端深度网络——AEDNet,在特征提取阶段采用SesNet减少了整体网络的参数量,其中用简单卷积提取用于立体匹配任务的局部信息,并通过FPN融合不同尺度的特征信息,构建出3个分辨率的匹配代价卷,并采用没有3D卷积的尺度内聚合模块和尺度间聚合模块,与其他立体匹配网络相比,可见本文网络在保证精度的情况下能高效实现立体匹配,且在硬件环境较差的情况下,本文网络具有明显优势,可以有更高的运行效率.

使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,

确定继续浏览么?

复制成功,请在其他浏览器进行阅读