APP下载

机器学习辅助影像密集匹配方法

2021-05-26谢云鹏

中国新技术新产品 2021年5期
关键词:池化层视差池化

陈 亨 谢云鹏

(广州市城市规划勘测设计研究院,广东 广州 510000)

0 引言

密集匹配是摄影测量中生成数字表面模型、正射影像的关键技术。通过对航带间的影像进行密集匹配,不仅能够对部分的兴趣点和特征点进行匹配,还能够对图片之间的逐像素或准稠密进行匹配,从而为下一步生产DSM、DOM奠定基础[1-2]。

传统的密集匹配过程分为以下4个步骤:1)匹配代价计算。2)代价聚合。3)计算视差。4)视差精化。传统的密集匹配算法分为局部算法和全局算法,局部算法通常以像素或者局部区域为计算对象,按照匹配基元的不同可以分为基于区域、基于特征以及基于相位的密集匹配算法。全局算法通常以整幅图的信息为计算对象来算出视差。全局算法包括动态规划算法和图割算法置信度传播算法。相比之下,局部算法的优点是易于操作、计算量较少,但是局部算法往往受到局部异常信息的影响,其效果也会受到影响。与局部算法相比,全局算法的精度更高、效果也更好,不过全局算法的计算时间比局部算法的计算时间长[3]。

随着人工智能的飞速发展,深度学习在图像处理领域的表现非常出色[4]。随着GPU并行计算和云计算的不断优化,卷积神经网络等一系列经典的神经网络也在飞速发展,在图像识别、影像分类、语义分割以及密集匹配等领域中都有不错的成绩。

在密集匹配领域,利用深度学习方法的研究也层出不穷,Mayer等人提出了一种新颖的学习网络DispNet,这是一种端到端的网络,该网络通过输入同名影像从而得到匹配结果。Wenjie Luo等人提出了一种对siamese net-works的改进方法,该方法在保证原有精度的同时,还能够大幅度地降低匹配时间[5]。

PSMNet也是一种新的密集匹配网络,该网络结构结合了金字塔池化方法和3D卷积神经网络方法,能够较好地搜集匹配区域周围的上下文信息,从而使该方法在纹理缺乏、遮挡等病态区域有更好的表现,这也是该文所采用的主要研究方法。

1 深度学习辅助密集匹配

1.1 卷积神经网络的典型结构

卷积神经网络通常由固定的结构组成,它们分别是输入层、卷积层、池化层、全连接层和Softmax层。

输入层就是整个网络的输入,在图像处理领域中,输入层输入的就是输入图像形成的三维矩阵,三维分别是图像的高度、宽度和深度。这里的深度代表了图像的色彩通道,例如,RGB图像的深度为3。输入层的三维矩阵经过处理形成新的三维矩阵并被传到下一层。

卷积层是卷积神经网络中最重要的部分,卷积神经网络的每个节点的输入就是上一层神经网络的局部输出,通常是1个3×3或者5×5大小的卷积核。卷积核通过卷积操作,提取上一层的特征,将其传递到下一层作为输入。卷积运算的操作通常被认为是一个抽象图形特征的过程,在该过程之后,一般特征三维矩阵的深度会增加。卷积层一般和池化层交替使用,在1个卷积层的后面往往会紧跟1个池化层,接着是卷积层。

池化层的作用主要是限制三维矩阵的维数,通常池化层不会改变三维矩阵的深度,但是可以缩小矩阵的大小。可以将池化层的操作理解为降采样操作,也就是将1个分辨率较高的图片降采样为1个分辨率较低的图片。池化典型的池化方法有最大池化和均值池化,以2×2的卷积核为例,最大池化层是在2×2的窗口中提取出数值最大的元素,并将其作为输出,而平均池化层的作用是在该窗口中求平均值,然后将平均值作为输出传递下去。池化过程在保持原有特征的基础上控制了维数,通过池化操作可以大幅度地减少最后参与全连接层操作的节点个数,将矩阵的维数控制在一定的范围内,增加了移动或者扭曲的不变性。

全连接层在整个卷积神经网络中起到了分类器的作用,在经过了卷积层和池化层的特征抽象以后,通过全连接层可以将该抽象的特征与标记空间连接起来,从而达到分类的效果。

Softmax层的主要作用就是对全连接层分类的结果进行进一步归一化处理,使输出的结果范围在0~1,可以直接将输出分类的结果认为是该分类对应的概率。

1.2 PSMNet网络

PSMNet网络的全称是Pyramid Stereo Matching Network。该网络属于1种端到端训练的方法,该方法利用立体像对和深度图来进行网络训练。现行的神经网络结构缺乏方法来获取上下文信息,从而不能在病态区域内寻找对应关系,而PSMNet网络能够较好地解决该问题。PSMNet网络主要由2个模型组成,分别是空间金字塔池化模型和三维卷积神经网络(3D CNN)模型。空间金字塔池化可以对不同尺度的内容信息进行聚合,3D CNN模型进一步通过重复的自上而下/自下而上的流程来学习规范成本。

PSMNet的主要结构如图1所示,左右输入的立体像对分别通过2个权值共享的卷积神经网络通道提取原始图像中的特征,并对特征进行抽象处理。

图1 PSMNet网络结构

该网络首先分别对2幅图片进行卷积操作,2组卷积采用权重共享的策略。其次,进入金字塔池化层,金字塔池化层在不同的尺度上进行池化融合,从而提取多尺度的信息。再次,通过一系列的池化操作来实现匹配代价聚合的过程,并通过3D CNN模型对聚合结果进行精化。最后,通过回归方法输出估计的深度。

1.3 金字塔池化模型

传统的卷积神经网络一般包括2个部分,卷积的部分(包括池化层)和全连接的部分。在卷积的部分中,由于卷积核能够通过在输入图像上移动来进行卷积操作,因此卷积层对图像输入的大小没有限制。但是由于原始图像经过每个卷积层之后的大小是可以计算出来的,经过所有卷积操作后来到全连接层,这时候的全连接层只能接收固定大小的输入。因此,就会导致卷积操作只能输入固定大小的图片。金字塔池化模型能够有效地克服上述缺点,其具体结构如图2所示(图中fc6,fc7为金字塔池化后的全连接层,d为池化层大小)。

图2 金字塔池化工作原理

空间金字塔池化主要有以下3个优点:1)它能够产生1个固定尺寸的输出,不用关注输入部分的尺寸。2)该方法采用多个尺度的窗口来提取特征,而普通的池化层仅利用1个固定尺寸的窗口来提取特征,这使该模型的鲁棒性更好。3)由于该模型可以对不同尺度的特征进行提取和聚合,从而大大增加了特征提取的精度。

1.4 三维卷积

3D CNN 的提出是由于视频影像中每一帧的影像具有相关性和连续性,因此需要构建1个能够同时处理多帧影像的卷积方式。和传统的二维卷积核不同的是,3D卷积神经网络的卷积核是1个立方体,其工作结构如图3所示。

一般来说,传统的二维卷积操作是利用1个卷积核在原始影像或者特征图上滑动完成卷积操作,抽象出高级的特征并输出该特征。这样做的弊端在于卷积核只能提取单张原始影像或特征图上的特征,没有办法顾及同一层其他特征图的特征。但是3D CNN就可以很好地顾及同一层特征图的上下文特征。

在PSMNet网络中,SPP(金字塔池化)模型促进密集匹配的主要贡献在于吸收了不同层次特征的信息。而对于PSMNet网络的另一个重要的模型(3D CNN模型)来说,它的主要功能是聚合视差维度和空间维度的特征信息。在PSMNet网络中主要采用了2种不同的3D卷积神经网络,分别是Basic 3D CNN和Stacked hourglass 3D CNN。在Basic 3D CNN中,网络仅是通过残差块来构建的,Basic结构包括了12个卷积核大小为3×3×3的卷积层。通过双线性插值在匹配代价立方体上进行采样(采样大小为H×W×D,H、W和D分别为匹配代价立方体的高度、宽度和深度)。最后,采用回归的方法来计算大小为H×W的深度图。

为了学习更多的上下文信息,该文采用了1种Stacked hourglass 3D CNN(堆叠沙漏架构),它由重复的自上而下/自下而上的处理与中间监督相结合,PSMNet结构主要由3个堆叠的沙漏网络组成,每个网络都产生1个视差图。也就是说,这一整个堆叠沙漏网络有3个输出和模型损失。在训练阶段,模型的总损失是由3个沙漏网络输出损失的加权和来计算的。

1.5 匹配代价聚合

PSMNet并没有直接采用距离度量来衡量匹配代价,而是采用金字塔池化层形成的特征图,在每个视差级别上将左侧的特征图和右侧的特征图连接起来,形成匹配代价聚合。从而形成1个四维的张量(高×宽×深度×特征尺寸)。

1.6 匹配代价计算方法

每一个视差或深度的概率都是由通过预测的匹配代价经过1个Softmax函数而得到的。预测的视差就是求和每一个可能的视差和概率的乘积。如公式(1)、公式(2)所示。

式中:d为预测范围中的1个候选值;Cd为当预测视差为d时的匹配代价;Dmax是候选值的最大值;N为总像素个数;e为指数函数。

这种视差回归的方法具有良好的鲁棒性,能够克服噪声对其的影响。

图3 三维卷积工作原理

1.7 损失函数

在该网络结构中,采用的损失函数是Smooth L1损失函数,该损失函数之所以被广泛地应用在边框回归(bounding box regression)中,是因为它具有良好的鲁棒性且对极端值的敏感性较低。PSMNet网络的损失函数定义如公式(3)、公式(4)所示。

2 实验细节与结果分析

2.1 训练过程

该次训练是通过迁移学习的方式进行的[6]。迁移学习的目标是使现有的神经网络能够适应新的数据集和环境,将已经学习到的“知识”应用到新的数据集上。它的具体做法是在1个较为成熟的神经网络模型的基础上对该模型进行进一步的训练,使该模型能够适应不同的数据特性,并且可以避免因重新训练而浪费大量时间。PSMNet作者通过SceneFlow的数据训练出1个较为成熟的模型,该文在该基础上利用KITTI2015数据集进行迁移学习,对之前的参数进行微调,使新的模型能够更加适应KITTI2015数据集。

该文选用KITTI2015的训练数据集进行迁移学习,训练集为160个立体像对及其深度图,测试集为40个立体像对。该实验采用了Pytorch0.3.0框架,使用的是Python2.7版本,操作系统是Ubuntu14.1,采用的GPU是Nvida GeoForce GTX1080。模型可以预测的最大深度被设置为192;前100个迭代的初始学习率被设置为0.001,之后的迭代过程学习率被设置为0.0001,每次训练的批次大小被设置为12。

2.2 测试过程

接下来进行效果测试,测试的过程是在Middlebury2006的测试集上利用迁移学习训练的成果模型进行实验。该测试选用的Middlebury测试数据是其立体匹配中2006发布的版本,该版本分为21组图片,分别有Baby、Bowling等不同的物体对象。该次测验选用的实验对象是Baby。

另外,通过opencv3.0将SGM(半全局匹配算法)和GC(图割算法)2种传统的密集匹配方法进行比较,并对实验结果进行了定性和定量的评价。

图4~图9是PSMnet网络、半全局匹配算法(SGM)和图割算法(GC)在Middlebury的数据集进行对比实验的结果。

从Middlebury的测试结果中可以较为直观地看到利用传统SGM和GC算法获得的深度图容易产生图像噪声,特别是在有一定遮挡的区域更为明显。而基于PSMNet网络的深度图则十分平滑,没有出现噪声点,在影像遮挡的区域也能够得到较好的匹配结果。

2.3 测试结果评价

一般来说,在已知立体像对真实视差的情况下,可以用以下2种方法对结果进行分析。第一种方法是均方根误差,其计算公式如公式(5)所示。

图4 左视图

图5 右视图

图6 真实视差图

图7 PSMNet实验结果

图8 GC算法实验结果

图9 SGM算法实验结果

另一种方法是计算误差像素的百分比,其计算公式如公式(6)所示。

式中:E为均方根误差;PMN为错误像素百分比;M和N分别为图像的高和宽;为算法的估计视差;为实际视差值;i,j为图像第i行、第j列像素的下标。

为了定量地比较几种算法之间的质量好坏,该文采用均方根误差、错误像素百分比和单个样本处理时间作为评价标准。

该实验对KITTI2015的数据集进行了测试。实验结果见表1。

表1 3种算法的效率比较

从表1中可以看到,相比于SGM算法和GC算法,利用深度学习的PSMNet算法的均方根误差和错误像素百分比更低。与此同时,在不考虑模型训练时间的情况下,单个立体像对的处理时间更短。相比于SGM和PSMNet方法,GC算法处理的时间过长,不适合在需要实时处理立体像对的情况中应用。

3 结论

近些年,许多学者的工作都证明了利用深度学习方法来进行密集匹配的优势和可能性。通过实验验证不难发现,基于深度学习的密集匹配方法与传统的密集匹配算法相比,它不仅在精度方面有所提高,而且能够更好地克服纹理缺乏、反光和遮挡等传统密集匹配方法难以解决的问题。

作为新兴算法的代表,PSMNet网络利用了SPP(金字塔池化模型)来获取图像不同尺度的特征信息,并且解决了输入图片的大小会受限制的问题。3D CNN进一步学习通过重复的自上而下/自下而上的流程来规范成本。该算法已经很大程度地提高了密集匹配的精度和可靠性。

与此同时,基于深度学习的密集匹配算法也有其缺点。该学习方法过于依赖训练数据,训练结果的好坏与训练数据的数量、质量都有很大的关系,并且在不同数据集进行算法测试的时候,也会出现不同的算法效果。

随着深度学习的不断发展以及摄影测量与遥感相关数据集的不断建立和完善,深度学习算法会成为以后匹配算法的主流方法。

猜你喜欢

池化层视差池化
面向神经网络池化层的灵活高效硬件设计
基于Sobel算子的池化算法设计
卷积神经网络中的自适应加权池化
基于自适应窗的立体相机视差图优化方法研究
卷积神经网络模型研究分析*
基于深度学习卷积神经网络的人体行为识别研究
基于卷积神经网络和池化算法的表情识别研究
基于全卷积神经网络的SAR图像目标分类*
基于梯度域引导滤波的视差精炼迭代算法
基于分割树的视差图修复算法研究