陈洪云,孙作雷,孔 薇
(上海海事大学 信息工程学院,上海 201306)
语义图像分割是计算机视觉任务中图像理解的重要环节,在学术界的影响日益凸显,现已成为学术界的重要研究课题之一,已经广泛应用于自动驾驶系统,医学图像诊断,无人机应用以及穿戴式设备等多个领域.语义图像分割技术是指利用计算机自动识别并且区分图像中每个像素的类别,对其进行标注,得到不同的分割区域,具有广泛的应用前景和研究价值.
传统的语义图像分割方法中,Normalized cut(N-cut)分割方法是基于图划分的方法中最著名的方法之一,它的主要思想是通过像素间的关系权重,根据给定的阈值,将图像一分为二,只能处理二类分割问题.同时传统方法的精度和速度都比较低,且需要人工干预,不能满足各种变化场景的需求.随着深度学习研究的不断深入,深度卷积神经网络(DCNN)的使用变成一种主流.Long等人提出了开创性全卷积网络(fully convolution networks,FCN)[1]的图像语义分割算法,该算法首次将分类网络应用到语义分割领域中,促进了语义分割的快速发展.全卷积网络是将传统卷积网络的全连接层换成卷积层,从而将图像级别的分类延伸到像素级别的分类,在分割领域中取得新突破.近几年,多种基于全卷积网络改进的图像语义分割方法相继被提出,如文献[2-6],语义分割精度也在不断提高.但是对于语义分割的任务[7-11],应用DCNN仍然存在两个挑战.一方面是连续的池化操作引起的特征分辨率降低,这些操作可以使得DCNN学习到越来越多的抽象特征表示,然而局部图像变换的不变性可能妨碍密集预测的任务,这种任务需要详细的空间信息.另一方面,如何尽可能多的获取目标的总体特征和细节特征,即多尺度下的特征也是一大挑战.
为了解决这两个挑战,在这篇文章中,我们提出了一种基于空洞卷积[12-14]的方法,空洞卷积的使用已经被证明在图像语义分割中很有效.空洞卷积,也被称为扩张卷积,允许重新使用ImageNet预训练[15]的网络,通过去除最后几层的下采样操作,向上采样滤波器内核,从而提取更密集的特征映射,这就相当于在卷积核各个权重之间插入孔洞,如图1所示.使
图1 不同步长的3×3空洞卷积结构图Fig.1 3×3 Hole convolution with different steps structure diagram
用空洞卷积,能够在DCNN不需要学习额外的参数的情况下控制特征映射的分辨率.此外,该方法还定义了一种并联支路,用于在深层特征图像上融合浅层特征图像信息.基于金字塔池化模块[16]和空洞空间金字塔池化模块[17,18],本文提出了改进的并行多尺度金字塔池化模块,主要在空洞空间金字塔池化模块中加入1×1卷积保留学习的特征和不同间隔的池化,进行更有效的提取不同层的特征以及获取长范围的上下文信息,并且在该模块加入批规范化,增强参数调优的稳定性.在这项工作中,基于空洞卷积的使用在并联模块和空洞空间金字塔池化的框架下,使我们能够有效的扩大滤波器的视野,从而获得多尺度的图片信息.最后,本文还采用了Adam自适应优化函数,该优化函数根据损失函数对每个参数的梯度的一阶矩动态调整参数的学习率,使得参数在更新的过程中具有独立性,从而提升模型的训练速度以及训练的稳定性.
本文的其余部分组织如下,第2节总结了理解这项工作所必需的几个相关工作,第3节介绍了模型所涉及到的算法研究,第4节详细的介绍了实验数据、实验过程以及结果分析,最后,在第5节中对本文的工作进行总结.
在过去的几十年里,大部分的语义分割系统的研究依赖于手工设计的单一特征的传统方法,但是这些传统方法的精度和速度都比较低.自2012年以来,随着深度学习的不断发展,DCNN因其自身强大的学习能力,使得语义分割的研究得到了重大创新.
文献[1]提出了一种端到端的FCN模型,用卷积层替换VGG-16中的最后三层全连接层,实现将图像分类转换成像素级分类,然后利用双线性插值的上采样方法将特征图恢复到原图大小,最后通过结合不同深度层的结果,兼顾全局和局部信息,从而实现语义分割的密集预测.文献[13]引入了空洞卷积的使用,在不做池化损失信息的情况下,扩大了感受野,让每个卷积输出都包含较大范围的信息,解决了由于FCN中连续的池化层导致的分辨率降低问题.文献[2]对FCN进行改进,用3×3卷积替换7×7卷积,减少了模型参数,加快了收敛速度,文中还引入了全连接CRF对边缘像素做后处理,提升了语义分割的精度.文献[17]提出了并联的不同空洞率的空洞卷积,针对多尺度目标的特征进行提取,改进了语义分割的密集预测效果.文献[14]提出了空间金字塔池化模块,通过整合不同区域的上下文来获取全局的上下文信息.文献[18]改进了空间金字塔池化模块,设计了一种空洞空间金字塔池化模块,针对于多尺度物体分割,设计出级联或并联的池化模块,从而获取特征并整合多尺度信息.
这些方法从不同的方面对模型进行改动,从而达到提升语义分割的效果,但是没有考虑整体性.我们从多方面进行考虑,基于ResNet引入了残差结构,提高了收敛效果而将其作为主框架,采用并联的不同采样率r=6,12,18,24的空洞卷积提取多尺度的特征信息,加入批规范化计算,增强参数调优的稳定性,并且采取图片级特征,加入卷积核为1×1的卷积用作特征图的降维,增加一条并联支路,用作融合深层特征和浅层特征信息,进一步提高语义分割的精度,最后采用Adam自适应优化函数,提升了模型训练速度和模型的稳定性.
在这部分,我们首先回顾在语义分割中如何使用空洞卷积进行密集预测,然后讨论基于空洞卷积进行改进的ASPP模块,最后介绍文章中增加的并联支路.
使用DCNN进行语义分割或其他密集的预测任务,已经被证明是简单和成功的,然而DCNN中连续的最大池化和下采样重复的组合大大降低了最终的特征图的空间分辨率,有些文章中是采用反卷积(也称转置卷积,用于扩大特征映射分辨率),但这需要额外的空间和计算量.本文中,我们主张使用空洞卷积,它最初的思想是为有效计算非抽取小波变换算法[19]为而开发的,该算法可以实现以任意的特征响应分辨率来计算特征图的特征映射.
我们先了解一维信号,将长度为k的滤波器w[k]的一维输入信号x[i]的空洞卷积输出y[i]定义为:
(1)
速率参数r对应于采样输入的步长.标准卷积是速率r=1的特例,如图2(a)所示.图2(b)是采样率r=2的采样情况.
图2 一维空洞卷积结构图Fig.2 One-dimensional atrous convolution structure diagram
然后再来观察空洞卷积运用在二维信号(图片)的表现,首先给定一个图像:如图3所示.上分支,我们假设首先进行向下采样运算,将分辨率降低2倍,然后与一个核函数卷积,在进行上采样得到结果.我们会发现我们只是得到了图像位置的1/4处的响应.相反,下分支,我们对全分辨率图像做空洞卷积,这样可以计算出所有图像位置上的响应.在该卷积中,我们将原始滤波器向上采样2倍,并在滤波器值之间引入0.虽然有效的滤波器大小增加了,但是我们只需要考虑非零滤波器的值.在保证滤波器参数数量不变的情况下,明确的控制了神经网络特征响应的空间分辨率.
图3 二维空洞卷积结构图Fig.3 Two-dimensional atrous convolution structure diagram
文献[16]中,作者通过进行多次实验,发现当卷积核为3×3时,采样率为12的时候,模型的效果最好,故在本文中为了达到类似的平衡,同样采用卷积核为3×3,采样率为12的空洞卷积.文献[13]中,实验证明空洞卷积可以扩大滤波器的感受野,当采样率用r表示,卷积核用k表示,则感受野的大小为:
F=k+(k-1)(r-1)
(2)
如表1所示,当卷积核固定时,调整采样率的大小,可以看到在不丢失分辨率的情况下,随着采样率的增大感受野也在增大.
表1 不同采样率下的感受野的变化实验数据表
Table 1 Changes in receptive field at different sampling rates experimental data sheet
Layer 1234567Convolution3×33×33×33×33×33×33×3Dilation11248161TruncationYesYesYesYesYesYesYesReceptivefield3×35×59×917×1733×3365×6567×67
采用图像的多尺度信息,对于可以提高DCNN分割不同尺寸物体的精度这一方法已经被许多工作进行了实践证明.回顾之前提出的ASPP模块,采用四个并行的不同采样率的空洞卷积,相当于使用了多个不同视野的滤波器提取图像特征,具有不同步长的ASPP对尺度信息的捕获很有效果.但是,伴随着采样率的提高,有效的滤波器权重却在变小.当把一个3×3的滤波器用不同的步长应用到65×65的特征映射中,在极端情况下,步长增大到接近特征映射的尺寸时,该滤波器便已退化成1×1滤波器,不能再捕获整个图像的内容,因为只有中心滤波器的权重才是有效的.
针对上面的问题,我们将ASPP模块结合PSP模块进行改进,改进之后的模块如图4所示.在该模块中,整合了全局内容信息,同时采用了图像级特征,每个空洞卷积提取的特征中再进行单独降维处理,融合每一分支特征图.采用全局平均池化处理模型,将得到的图像级特征输入到一个有256个滤波器的1×1卷积中,然后进行双线性上采样将特征转化到特定的空间维度.最后,我们改进的模块由一个1×1卷积,和四个3×3卷积组成,步长为(6,12,18,24),输出步长为16,所有的滤波器个数为256,并且在改模块中加入了批规范化,最后分支处理好的特征会连接在一起通过一个1×1卷积聚合.我们改进的ASPP模块如图4所示.
图4 改进的ASPP模块结构图Fig.4 Improved ASPP module structure diagram
在2015年提出了批规范化的思想,对于每个隐层神经元,通过一定的规范化手段,把逐渐向非线性函数映射后向极限饱和区靠拢的输入分布强制拉回到标准的正态分布,以此来解决这种梯度消失的问题.使用批规范化,首先为了降低特征变量间的差异性需要对层网络的输入样本进行归一化处理得到x.归一化之后的x经过W1的线性变换后得到s1,然后依次进行处理得到第二层结果s2,表达式如下:
(3)
(4)
(5)
s3=*s2+β
(6)
y=RELU(s3)
(7)
对于DCNN中连续的池化操作导致的分辨率下降问题,FCN[1]网络中采用跳跃架构将Pool3、Pool4层输出的特征图融合进最后的得分图中,但最后分割图仍然粗糙.Deeplab[17]模型是语义分割领域中最具代表性的模型,其主要是通过利用空洞卷积扩大感受野的大小而不缩放图像的尺寸,并且利用DenseCRF[20,21]对图像进行后处理来解决分辨率下降,这一方法虽然成功但却存在着一定的约束性.在训练过程中,高分辨率特征映射的生成需要占用大量的内存,这严重影响高分辨率特征映射的计算及预测.文献[20]通过添加解码器模块来解决该问题,但是这样会导致模型层数过多,难以快速学习.针对于解决分辨率下降这个问题,目前的解决方法是增加并联卷积支路,利用底层特征产生高分辨率预测,预测结果既包含了较低层表示,又保留了图像的空间信息.
综合所述,文章通过增加简单的并联支路融合浅层特征信息,用来改善高层语义的分割结果.该并行卷积网络支路由两部分组成,第一部分是提取DCNN主干网络上的底层特征信息,由于该底层特征信息包含多个通道,所以采用1×1卷积对其进行降维处理;第二部分是进行4倍上采样之后的输出的特征信息.将这两部分用并联支路连接起来,进行聚合,然后再通过1×1卷积,最后在对其进行4倍的上采样恢复原图大小.这样就对图像完成了从粗到细的语义分割过程.
本文使用的是PASCAL VOC 2012数据集,该数据集有20类前景目标和1类背景目标.而本文使用的是PASCAL VOC 2012数据集的增强版本,包含额外标注产生的10582张图像用来训练.评价方法是采用21类的平均像素交叠率(mIOU),即模型产生的目标窗口与原标记窗口的交叠比,具体计算方式:检测结果与Ground Truth的交集比上它们的并集.
实验方法是采用TensorFlow框架实现的,机器软硬件配置见表2.这部分我们讨论训练遵守的一些细节.对于学习率,采用一种′poly′的学习策略,公式如下:
初始学习率设为0.007,迭代次数为20,最大的迭代次数设为30K,动量为0.9.使用Adam优化函数对网络层的目标函数进行优化,β1系数为指数衰减率,控制权重分配,通常取值为0.9,β2系数为指数衰减率,控制之前的梯度平方的影响情况,一般取值为0.999,输入图像的批次batch_size设为10,为了防止过拟合使用的权重衰减率设为0.0005.
为了对算法的优越性和有效性进行评估,通过在本地复现基于ResNet上的Deeplab V3和本文的语义分割系统进行对比,训练参数以及数据量均保持一致,参数设置如4.2节所示,使用PASCAL VOC 2012的验证集来验证实验结果.实验结果如表3所示.通过对比发现本文提出的网络模型比Deeplab V3提高了3.07个百分比,实验证明本文提出的模型对语义分割具有优良的鲁棒性.值得特别注意的是在复现基于ResNet的Deeplab V3的结果时,实验中取得的最好结果是74.24%的mIOU,比文献[18]中的76.42%的mIOU低,考虑是因为输入的批次和迭代次数以及单显卡运算和设备的单精度计算有关.
表2 机器软硬件配置实验数据表
Table 2 Machine hardware and software configuration experimental data sheet
项 目 内 容 中央处理器CPUInteri7-7800x内存Ddr416g显卡GPU微星魔龙GTX1080Ti操作系统64bit-Ubuntu16.04CUDACuda8.0withcudnn数据处理Python3.6
表3 本文算法和Deeplab V3在30K次迭代次数下的 mIOU(%)和Pixel Accuracy(%)实验数据表
Table 3 Algorithm and Deeplab V3 have mIOU(%) and Pixel Accuracy(%) under 30K iterations
mIOU(%)PixelAccuracy(%)DeeplabV374.2493.94Ours77.3194.78
我们以30K次迭代为例,表4为本文系统和Deeplab V3系统21个类别的mIOU的对比表,可以看出改进之后的模型,只有盆栽类别的mIOU是低于Deeplab V3系统,其他类别的mIOU均高于Deeplab V3系统.通过对比,我们会发现,本文语义分割系统在迭代次数为30K的时候,语义分割效果是优于Deeplab V3系统.
图5 30K次迭代次数下的本文系统与Deeplab V3 系统语义分割结果对比结构图Fig.5 Comparison of semantic segmentation results between the system and Deeplab V3 system under 30K iterations structure diagram
从测试集中抽出四张图来进行对比,如图5所示,在飞机这幅图中,Deeplab V3中的飞机尾翼均不连续,在改进的模型中,尾翼的连续性有所改善,本文的系统的飞机尾翼分割情况较好.在人骑自行车这幅图中,本文的系统在胳膊处分割效果良好,在最后一幅图中,桌腿及椅子腿等细节的分割效果也很良好.
表4 30K次迭代次数下的本文系统与Deeplab V3 系统的21类物体的mIOU(%)对比实验数据表
Table 4 Comparison of mIOU(%)between the system and the 21 types of objects in Deeplab V3 system under 30K iterations experimental data sheet
DeeplabV3本文模型background93.1694.08aeroplane82.0186.88bicycle39.7342.56bird87.3688.19boat59.3671.74bottle77.5980.39bus93.0493.85car84.9285.57cat89.2291.59chair37.4440.79cow85.3387.78diningtable51.3155.31dog84.1886.21horse82.0186.92motorbike81.9184.01person81.9683.87pottedplant60.3858.38sheep81.5985.93sofa52.7656.41train85.2888.65tv/monitor68.5874.47MeanIOU74.2477.31
本文主要讲述了一种基于ResNet网络的方法,采用的空洞卷积可以扩大感受野而不缩放图像,定义的并联支路,将浅层特征图像信息融合到深层特征图像中,提出的新的空洞空间金字塔模块,进行更有效的提取不同层的特征以及上下文信息,并且在新模块中加入批规范化计算,增强参数调优的稳定性.本文还采用了Adam自适应优化函数,提升了模型训练的稳定性.通过实验验证,该系统在PASCAL VOC 2012数据集取得77.31%的mIOU,优于Deeplab V3的效果.