基于多尺度和多层级特征融合的立体匹配方法

2021-03-18 08:03王金鹤车志龙孟凡云苏翠丽
计算机工程 2021年3期
关键词:立体匹配视差池化

王金鹤,车志龙,张 楠,孟凡云,苏翠丽,谭 浩

(青岛理工大学信息与控制工程学院,山东青岛 266000)

0 概述

立体匹配技术通过计算立体相机拍摄的2 张图像中每个像素的视差,确定立体图像间的对应关系,且在机器人自主导航、自动驾驶和三维场景重建中具有广泛的应用。传统立体匹配方法通常采用匹配代价计算、代价聚合、视差计算和视差优化4 个步骤,但是存在匹配效率较低的问题。随着基于深度学习的语义分割、目标检测与识别等高层视觉技术的快速发展,神经网络方法逐渐应用于立体匹配中。卷积神经网络(Convolutional Neural Network,CNN)因其较强的特征提取能力而取代了传统手工制作特征描述符的方法。基于CNN 的方法将视差估计作为学习任务,利用大量数据对模型参数进行优化,并以模型处理后的输出图像作为视差图。CNN 相对传统立体匹配中计算像素的匹配代价而言,可以更好地捕获局部上下文信息,对遮挡、透明和非郎伯照明效果等光度差异鲁棒性更强,且在匹配速度和精度方面都有显著提升。

在早期基于CNN 的立体匹配方法中,文献[1]采用神经网络方法计算匹配代价,将两个图像之间的匹配代价看作二分类问题,且计算效果良好。文献[2-3]通过对早期CNN 结构进一步改进而取得满意效果。文献[4]通过用内积层替换网络的全连接层进行相似性度量,将代价计算看作一个多分类任务,大幅加快训练与测试的效率。文献[5]发布一个带有真实视差、光流和场景流的合成数据集,并提出一个带有编码-解码器结构的DispNet 模型。文献[6]提出了MatchNet,在增加池化层且减少特征尺寸的基础上,利用3 个全连接层进行相似性度量。文献[7]探索并研究了多种神经网络结构的特点,归结出三种基本网络结构模型。文献[8]采用神经网络学习有判别力的图像块,并用L2 范式进行相似性度量。深度学习的发展使得立体匹配的网络结构日渐趋于成熟,也预示着未来网络结构将会更加复杂。在近期研究中,采用神经网络方法改进传统立体匹配的步骤,并将不同的子结构整合到一个端到端的框架中,或是利用全局上下文信息进行优化。文献[9]改进了MC-CNN 结构,并结合不同大小窗口进行匹配代价计算。文献[10]利用端到端的GCNet 取代了传统四步法,将二维卷积提取的特征与三维卷积提取的上下文信息相结合,并采用回归模型预测视差图。文献[11]提出了两个阶段的级联网络结构,先用DispFullNet 生成具有更多细节的初始视差图,再用DispResNet 生成不同尺度残差信号来优化视差图。文献[12]通过对传统四步法进行整合,用初始视差图和特征连续性输出次级网络优化视差图。文献[13]提出采用具有混合损失的多级加权残差捷径的高速公路结构进行图像块的多级比较,并用深度神经网络池化多个视差的全局信息。PSMNet[14]用空间金字塔池化(Spatial Pyramid Pooling,SPP)聚合不同尺度与不同位置的环境信息构造代价卷,三维CNN 结构中使用多个堆叠沙漏网络和中间监督结合调整代价卷。文献[15]结合CNN 和分割约束解决了弱纹理及遮挡区域的匹配难题。文献[16]用双流网络提供全局指导,一个网络产生聚合结果并生成提议,另一个网络结合低层结构信息评估结果对提议进行选择。文献[17]提出一个由主干视差网络和边缘子网络组成的端到端视差模型。文献[18]将语义分割信息结合到视差估计流程中,把语义信息嵌入特征编码混合表示并作为正则化项指引视差图。与传统匹配方法将左右一致性检查作为孤立的后处理步骤不同,文献[19]提出左右比较递归模型,能够共同执行视差估计和左右一致性检查过程,并采用软关注机制学习误差图指导模型,能够有效改善视差图。

早期基于CNN 的方法网络结构较简单,虽然有众多研究人员在后续工作中获取了大量研究成果,但并未解决如遮挡、弱纹理与光度失真等不适定区域问题。针对该问题,本文在网络前端增加一个池化金字塔层,并利用该池化金字塔层对图像的多尺度低级结构特征进行提取,在网络后端采用多层特征融合的方式对最后三层网络的高级语义特征进行提取,以有效提高立体匹配精度。

1 方法设计

1.1 立体匹配方法

立体匹配的任务是获得给定的一组图像对的视差图,本文中假设图像已被修正,即图像极线与水平图像轴对齐。假设yi∈γi表示第i个像素对应的视差,|γ|为候选集(大小为128 或256),立体匹配通过左图像的每个像素计算每个可能的视差值分数来估计三维代价卷,通常利用给定像素周围小的区域手工制作描述符实现,文献[4,20]中也是通过设计卷积神经网络来实现的。

如图1 所示,文献[4]采用与经典MC-CNN 方法类似的Siamese 网络结构,并利用4 层网络对输入每个分支的左右图像进行匹配操作。每层网络包含一个空间卷积层(卷积核数量为32 或64,大小为5×5 或3×3)和一个ReLU 非线性函数,卷积层用来提取特征,ReLU 非线性函数是为了减少计算量并加快收敛速度,而最后一层网络没有使用是为了防止负值的信息编码丢失。

图1 4 层双塔网络结构Fig.1 Structure of four-layer double tower network

通常立体匹配流程是利用Siamese 网络提取左右图像特征图后再进行相似性度量,常用的做法是使用L2 范式对网络结构添加几个全连接层。文献[4]方法使用了简单的内积运算,允许联合估计不同视差的相似性,从而有利于最小化网络参数的交叉熵损失:

由于极线约束将搜索空间限制在水平线上,左右图像块高度相等,右图像块比左图像块宽Max Disp 个像素。在进行内积运算时,可以把内积运算看作左图像块在右图像块上进行逐行扫描,以计算每个像素位置的相似性,显著加快计算速度。

如图2 所示,文献[20]中Anita 用7 层网络代替了文献[4]的4 层网络,且每层有64 个卷积核,表示其拥有更好的特征提取能力。网络层数的增加可使获取的感受域更大,用来计算的信息更加丰富,增强网络的非线性表达能力,对图像特征有更强的表示能力,从而显著提高计算精度。Anita 在第二层和第四层后面各添加一个池化层对前面的特征图进行压缩,提取主要特征并简化网络计算复杂度。经过一系列卷积与池化操作提取到图像的特征后,将特征图反卷积至原图像大小以获得更密集的视差预测。接下来用一个内积层进行相似性度量并用Softmax函数回归得到视差图。

图2 改进的Anita 网络结构Fig.2 Improved Anita network structure

1.2 多尺度和多层级特征融合的立体匹配方法

用卷积网络处理图像信息时,高层特征包含更多的语义信息,而低层特征包含更多的结构与细节信息。由于文献[4,20]方法没有对这些信息进行处理,造成其提取特征能力有限,在不适定区域表现不足,因此在Anita 网络结构的基础上,本文将网络前端的第2 层、3 层替换为池化金字塔层,用不同大小的池化窗口提取图像的多尺度低级结构特征。而在网络后端,本文用多层特征融合的方式连接最后三层的高级语义特征,具体如图2 所示。

1.2.1 多尺度特征提取

文献[4,20]方法通过堆叠一系列卷积层模块来提取目标周围的信息,但仅从一个尺度提取信息可能是不足的,感受域过小导致信息不足,感受域过大导致计算量增加或引入如遮挡和深度不连续等干扰信息。因此,多尺度提取图像特征的方法被广泛应用于语义分割和目标检测等各种计算机视觉任务中,且在近期立体匹配框架中也存在广泛应用。本文通过在网络第二层添加一个池化金字塔层的方式来融合4 个尺度提取图像信息,定义如下:

其中,C和P分别表示卷积和池化运算,P(F,S1)表示对特征图F进行步长为1 的池化操作,“+”表示沿特征图通道的连接运算,Fconcat为在4 个尺度下对特征图F池化卷积运算后沿特征通道连接起来的最终特征图。

如图3 所示,多尺度特征提取的过程可归结为以下4 步:1)输入前一层的特征图;2)在4 个不同尺度下提取特征图;3)融合提取的4 个特征图;4)输出融合后的特征图。图3 中的左侧为前一层的待处理特征图,右侧为融合后特征图,可以直观看到前后增加的尺度信息。

图3 多尺度特征提取示意图Fig.3 Schematic diagram of multi-scale feature extraction

多尺度特征提取的详细信息如图4 所示,且图中的4 个分支并行,不同大小的池化窗口分别提取不同尺度的特征信息。待处理特征图先进行4 个窗口大小固定为1×1、2×2、4×4、8×8 的池化操作,在提取到4 个尺度的特征图后将其大小减小至一半,再各自通过一个3×3 的卷积层。经过上述操作提取的特征图信息丰富且精度较高。接下来,将特征图连接起来并通过一个1×1 的卷积层,从而达到特征融合的目的。

图4 多尺度网络结构示意图Fig.4 Schematic diagram of multi-scale network structure

1.2.2 多层特征融合

为充分利用网络后端丰富的语义信息,本文直接将第5 层、第6 层、第7 层最后三层的特征图沿特征通道连接起来,且定义如下:

通过一系列卷积池化操作提取图像的高维特征后,特征图大小缩小了1/4。为充分利用这些高维特征来加强图像特征的提取效果,需要尽可能减少图像在卷积和池化操作中降维丢失的信息。如图5 所示,训练时三个特征图通道大小分别为7×7×64,深色特征图代表更高维的图像信息,连接后特征图大小为7×7×192,并结合了3 个特征图的共同信息。这类似于之前多尺度的连接方式,使特征图包含的信息更加丰富,不同的是该方式不会添加额外的网络层,因此可以在运算量不额外增加的情况下融合更多特征信息。此外,本文也尝试过在不同高低层特征之间引入跳跃连接,然而并未取得显著的改善效果。为了补偿池化运算丢失的细节信息并获得更密集的视差预测,将特征图用转置卷积方式恢复至图像的原始大小以进行相似性度量。

图5 多层特征融合示意图Fig.5 Schematic diagram of multi-level feature fusion

2 实验结果与分析

实验在KITTI 2015 数据集上进行效果验证并与其他几种方法进行对比分析。KITTI 2015 数据集包含200 对图像,主要描绘街道和城市场景,且矫正和裁剪后的图像大小约为376 像素×1 244 像素。本文借鉴常用数据集分类方法,随机抽取40 对图像作为测试集,剩余160 对作为训练集,训练前所有图像均进行了标准化预处理操作。

2.1 实验和模型训练

对模型进行训练时,本文使用随机选取图像块策略打乱160 对训练集图片顺序,随机选取大小为28 像素×28 像素的图像块进行训练。采用Adam 训练方法,学习率太大容易导致代价函数震荡,太小又会收敛缓慢,因此本文采用指数下降法训练模型,前期可以加快模型学习速度,后期使训练更加稳定。批量大小设置为20,初始学习率设为0.001,初始全局步骤为0,衰减速度为400,每隔400 步更新一次学习速率,每学习一次衰减为原来0.994,使用交叉熵损失作为损失函数。为了减少训练时间,本文迭代12 000 次进行模型结构对比,并与部分同类方法进行比较。训练完成后,本文把图像块恢复至图像原始大小进行测试,测试集图像为40 对,统计预测图像视差与真实视差进行比较并计算误差平均值。本文的实验平台为NVIDIA GeForce GTX 1060,所用框架为Tensorflow。

2.2 实验对比

为了验证本文所提方法的有效性,实验对不同模型结构的性能进行对比,结果如表1 所示。其中,“√”表示选择的模块,“×”表示未选择的模块。表中的M1 为Anita 网络结构,M2 和M3 分别添加了不同数量和大小池化窗口进行比较,结果显示池化金字塔层的有效性和窗口数量及大小对精度影响不大。M3 和M4 比较展现了特征融合层使用大小为3×3 的卷积核要优于大小为1×1 的卷积核。M4 和M5 说明了对最后三层特征图融合的有效性。M6 改变了M5的池化窗口数量和大小,结合M2 与M3 的对比,结果显示了池化窗口差异对不同网络结构性能表现的不确定性,也展现出了神经网络训练的随机性。

表1 6 种不同模型结构的性能对比Table 1 Performance comparison of six different model structures

表2 给出了本文方法与其他方法的误差精度对比。目前KITTI 2015 数据集最高排名误差精度为174%,本文中的立体匹配方法仅关注特征提取部分,不包括常规的后处理过程,因此无法与加入平滑技术或进行联合优化的方法相比较,只能与类似方法进行比较。实验对在训练时各迭代了12 000 次的LUO[4]方法、Anita 方法和所提方法的误差精度进行对比,最后一项是把本文的训练模型迭代了30 000次。本文精度指标(误差精度)采用误匹配点比例法,即方法预测值与真实值之间误差值大于等于2,3,4,5的像素点所占全部像素点的比例,统计数据为n(n=40)张训练集图像,如式(4)所示:

从表2 可以看出,本文方法相比其他方法在误差精度上有一定的提升,在运行时间方面,除了MC-CNN-fast 方法,其他方法预测视差的运行时间基本稳定在21 s 左右。

表2 本文方法与其他方法的误差精度对比Table 2 Comparison of error precision between the proposed method and other methods

本文方法与其他方法的视差图对比效果如图6所示。从直观角度分析,本文方法可以得到保留树干、车窗等细节信息的稠密视差图,且相比LUO 方法和Anita 方法可得到更加平滑的视差图并提升了匹配精度。这是因为本文方法中添加了多尺度特征,所以在部分弱纹理等不适定区域的匹配效果表现更加鲁棒。

图6 本文方法与其他方法的视差图对比Fig.6 Comparison of disparity map between the proposed method and other methods

3 结束语

本文基于多尺度和多层级特征融合的卷积神经网络,提出一种立体匹配方法。该方法利用不同尺度和不同层级的特征图信息,在双塔结构卷积神经网络模型的前端设计一个池化金字塔层,以提取图像的多尺度低层结构特征。在网络模型的后端融合最后三层网络的高级语义特征来提取左右图像特征,对图像特征进行相似性度量并输出视差图。实验结果表明,该方法能够得到细节信息更好的视差图,且可有效降低像素的误差精度,从而提高立体匹配精度。下一步将在本文网络模型基础上引入非光滑优化方法,以提高其整体运算效率。

猜你喜欢
立体匹配视差池化
基于Sobel算子的池化算法设计
卷积神经网络中的自适应加权池化
基于自适应窗的立体相机视差图优化方法研究
设施蔬菜病害识别中的CNN池化选择
基于卷积神经网络和池化算法的表情识别研究
基于梯度域引导滤波的视差精炼迭代算法
影像立体匹配中的凸优化理论研究
基于互补不变特征的倾斜影像高精度立体匹配
基于分割树的视差图修复算法研究
改进导向滤波器立体匹配算法