马震环,高洪举,雷 涛
(1.中国科学院光电技术研究所,成都 610209; 2.中国科学院大学 电子电气与通信工程学院,北京 100049;3.32183部队,辽宁 锦州 121000)
图像语义分割是指利用图像的高级语义[1](图像或图像区域所包含对象或实体的类别信息)为图像中每个像素分配一个对应表示其语义的类别标签。图像语义分割是计算机视觉、模式识别与机器学习等领域的重要研究方向,是场景理解、图像重构等任务的预处理环节。研究者能够利用图像语义分割技术在医疗图像中精确查找病变部位,在自动驾驶过程中准确掌握道路信息,在无人机着陆时高精度定位陆区域中心,因此,该项技术具有重要的应用价值。
与此同时,GPU迅猛发展,适合大数据处理的深度学习技术日趋成熟,同时也出现了像素级别标注的数据集,这使得深度模型从大数据中发掘有价值的信息[2]和知识成为可能。语义分割在结合深度学习技术后能够使性能得到大幅提升。为此,本文设计一种增强特征融合的解码器模块。该模块通过级联高层特征与低层特征,并以卷积的形式加以融合,同时在降维后引入自身平方项的全局平均池化层,利用两个卷积预测自身项与自身平方项的权重并以残差的形式相结合,从而改善特征融合效果。
文献[3]提出的AlexNet方法在ILSVRC2012图像分类竞赛中取得了出色的效果,这为深度学习方法在语义分割中的应用拉开序幕。文献[4]提出全卷积神经网络(FCN),其以VGG16[5]作为基础网络,替换网络后端的全连接层为卷积层以接受任意尺度的图像输入。输入图像在经过5个最大池化层之后得到32倍下采样的结果,对于解码器部分,则将该结果直接插值得到原始输入尺寸。为得到更精细的分割结果,FCN通过插值的上采样方式,得到更高分辨率的深层特征图,并与浅层特征以直接作和的方式融合,以产生密集的预测结果。该工作在语义分割中具有里程碑的意义,端到端的方法由此成为主流。
文献[6]提出deeplab v1,其在VGG16网络的基础上去掉最后两个池化层,引入空洞卷积以维持特征图分辨率并扩大感受野。该方法最终得到8倍下采样的特征图,最后以双线性插值的方式作为解码器恢复原图尺寸。文献[7]提出了SegNet,同样以VGG16作为基础网络,在最大池化过程中保留池化的索引。在恢复高分辨率特征图的过程中,解码器利用这些保留的索引得到稀疏的特征图,然后使用可训练的卷积核进行卷积操作,生成密集的特征图。相比FCN直接使用浅层特征的方式,该方法在内存使用上更为高效。
文献[8]遵循恒等映射的思想设计了RefineNet,其将ResNet-101[9]作为编码器,输出不同下采样层的特征图作为多个路径。每个路径的特征图经过RCU(Residual Conv Unit)做两次卷积与激活后与自身作和。在解码器部分,将不同分辨率的特征图分别做卷积,以插值的方法处理到同一尺度,最后以加法的方式融合,逐层恢复到4倍下采样结果,最后上采样得到最终结果。
文献[10]提出的GCN方法,将k×k的卷积分解成1×k加上k×1与k×1加上1×k两种方式,使用大的参数k以捕获大尺度信息。在解码器部分,将ResNet输出的深层特征经过转置卷积与浅层特征通过作和的方式融合,在逐层融合后得到2倍下采样的特征图,再经过转置卷积恢复到原图大小。
文献[11]针对航拍影像分割任务,在网络后端使用不同扩张率的空洞卷积,得到多尺度的特征图,然后将这些同一深度不同尺度的特征图通过注意力机制计算各个尺度每个位置像素的重要性,最后通过加权和的方式融合特征。
文献[12]提出的DeepLab v3+,使用DeepLab v3作为编码器,对DeepLab v3输出的16倍下采样的深层特征做4倍上采样,然后与网络输出的4倍下采样的特征图级联做卷积,最后输出分类结果。与直接做加和的特征融合方式相比,先级联再卷积的方式包含了加和这一操作,并且卷积还能得到深层特征与浅层特征之间的权重关系,因此更具有普适性。
文献[13]提出了PAN(Pyramid Attention Network),对于特征融合部分,该文将深层特征做全局平均池化得到一组特征向量以编码每个通道的全局信息,随后用1×1的卷积做变换以考虑通道与通道间的关系,再与浅层特征做乘法,最后将深层特征与浅层特征作和。
文献[14]指出高层特征与低层特征之间存在语义鸿沟,直接融合的方式无法解决这个问题,进而提出SEB(Semantic Embedding Branch)方法进行特征融合。该文先将深层的特征图做卷积,然后通过双线性插值的方式做上采样,再与浅层特征做乘法。与使用全局平均池化的注意力机制相比,该方法无法获取通道的全局信息但保留了各个特征图的空间信息。
文献[15]针对遥感影像道路提取问题提出一种编解码结构的网络,该网络具有较浅的深度,特征图具有较高的分辨率等特点。该模型在解码阶段,通过跳跃连接将原图分辨率大小的特征图与2倍下采样分辨率的特征图融合,融合的方式为卷积级联的方式。
文献[16]设计了一种快速的语义分割算法,该算法密集层实现了两路传播,将前级连接与经过卷积后的后级连接直接相连融合,并且该算法在每层之间均使用跳跃连接融合不同层间的信息。
对于基于特征融合的解码器的结构,深层特征与浅层特征融合的方式主要有3类方法:1)将浅层特征与深层特征级联做卷积;2)将深层特征做全局平均池化,通过注意力机制对浅层特征做变换,再将深层特征与变换后的浅层特征作和;3)将深层特征经过卷积后直接与浅层特征做逐像素的乘法。除卷积级联形式以外,其他两种形式均遵循了恒等映射的思想。
本文设计分为编码器与增强特征融合解码器(EFFD)两个部分,整体网络结构如图1所示。
图1 整体网络结构
本文将DeepLab v3算法[17]作为编码器,在此基础上进行研究。编码器部分主要包含3个部分,即基础网络ResNet-101、空洞卷积和ASPP(Atrous Spatial Pyramid Pooling)模块。输入图像经过ResNet-101提取特征,在深层引入空洞卷积。最后使用ASPP获取多尺度的上下文信息,将这些方式得到的特征图级联,经过1×1的卷积将通道数降低到256。
2.1.1 空洞卷积
为识别大尺度的目标,要求网络深层有较大的感受野,步长为2的卷积、池化的方式使得感受野呈指数增长,但是这种方式输出的特征图分辨率同样呈指数级下降趋势,最后的结果难以恢复。而以步长为1的卷积堆叠的方式感受野呈线性增长,难以得到足够大的感受野。空洞卷积在一定程度上解决了这一问题。对于一维情况有:
(1)
其中,y表示输出信号,w表示滤波器(卷积核),x是输入信号,r是对输入信号采样的步长,即扩张率,标准卷积r的值为1。使用步长为1的空洞卷积,在卷积核中按照扩张率在特征图两端插入0,使得感受野呈指数增长且不会使特征图分辨率下降。
2.1.2 ASPP模块
现有的先进方法往往都需要级联大尺度的空间上下文信息,编码器部分通过ASPP模块实现这一步。ASPP使用1×1的卷积、3×3扩张率分别为6、12、18的卷积捕获多尺度信息。ParseNet证明了全局信息的重要性,该结构同样引入了图像级池化,利用这些部分并行的处理基础网络输出的特征图,最后将结果级联。
编码器部分输出了16倍下采样的特征图,通过插值的方式直接做16倍的上采样,这样解码器过于简单。自FCN开始及以后的Unet、DeepLab v3+等均证明了在上采样阶段引入浅层特征的有效性。本文的EFFD同样考虑将深层特征与浅层特征做融合。然而在语义分割任务中,深层特征与浅层特征以何种方式融合没有定论,且融合的方式缺乏可解释性。因此,本文考虑将加法、乘法等运算均融入到网络中,端到端的学习解决此问题。首先,以往的工作证明了简单的将高层特征与低层特征作和或者级联起来做卷积的方式是有效的,本文考虑把级联随后做卷积的方式作为第1步。ParseNet证明了全局信息的有效性,本文考虑使用乘法结构来利用这些全局信息,因此,在第2步引入注意力机制,通过残差的方式将经过注意力机制得到的特征与第一步的特征作和。
2.2.1 级联卷积
本文先使用传统的特征融合方式将DeepLab v3高层特征与低层特征级联再做卷积。高层的特征带有丰富的语义信息,重要性高于低层特征,相对而言,直接卷积的方式应使高层特征具有更大的权重。然而深度网络常用L2正则化以提升网络的泛化能力。L2正则化在反向传播过程中倾向于将所有输入对应的权重调整到比较小的均匀值,避免出现过大的权重。因此,首先使用1×1的卷积对低层特征降维,通过减少通道数的方式来降低浅层特征的权重。然后将经过双线性插值后的深层特征与浅层特征级联。级联结果输入到3个卷积层中,其中最后一个卷积层使用1×1的卷积降低通道数,得到融合后的特征图。级联卷积过程如图2所示。
图2 级联卷积过程
2.2.2 注意力机制
注意力机制如图3所示,其中主要包含全局平均池化、通道注意力和激活函数3个部分。
图3 注意力机制示意图
1)全局平均池化
原始的全局平均池化(Global Average Pooling,GAP)将每一个通道的特征图按照每个位置产生的响应直接求和,公式如下:
(2)
其中,yi表示第i个位置的权重向量,H、W分别为输入特征图高和宽,xi,j,k表示输入特征图第i个通道第j行第k列的响应值。笔者认为欧氏距离越大的特征重要性越大,然而直接做GAP对于特征图中小于0的部分会减小该通道注意力权重向量的响应。因此,将融合后的特征图与自身做乘法得到更能突出每个位置重要性的特征图,再做GAP。
2)通道注意力
在得到GAP的结果后,本文使用两个卷积分别预测出原始特征图自身项与自身平方项权重,经过各自的激活函数后分别对自身项与自身平方项做乘法变换,公式如下:
zi,j,k=yi·xi,j,k
(3)
其中,zi,j,k为经过注意力机制后的输出特征图,yi表示第i个位置的权重向量,xi,j,k表示输入特征图第i个通道第j行第k列的响应值。通道注意力将权重向量yi与每一个通道相乘以突出不同通道的重要性。
3)激活函数
在视觉任务中广泛使用relu作为激活函数以解决梯度消失的问题,考虑到sigmoid函数仅一层,不存在梯度消失的问题,本文在解码器部分使用sigmoid作为激活函数,公式如下:
(4)
其中,S(x)为输出响应,x为输入。在注意力机制中,经过全局平均池化后各个通道权重向量与各个通道相乘,与relu相比,使用该函数能够将权重限制在(0,1)范围内,避免出现过大的结果。
本文实验的相关设置如下:
1)评价指标。使用平均交并比(mean Intersection over Union,mIoU)作为评价指标,公式如下:
(5)
其中,k是目标类别数目,pij表示第i类物体的像素被分到第j类物体的像素的数量。
2)数据集。使用pascal voc2012[18]数据集,该数据集包含飞机、轮船、人、火车等20类场景下的目标,所有背景均分为1类,共21类。该数据集背景丰富,单张图片中往往包含了一个或者多个类别、多个目标,并且该数据集中图片包含了目标较大的尺度变化、光照变化、目标间的遮挡等问题,具有较大的分割难度。该数据集训练集仅有1 464张图片,本文通过文献[19]提供的额外的标注对数据集做了增强,使训练图像达到了10 582张。本文使用pytorch实现以上算法,并在pascal voc2012训练集上训练,验证集不参与调参,在验证集上做测试。
3)实验环境。系统环境ubuntu18.04,python 3.6.7,pytorch 1.0,显卡NVIDIA TITANX Pascal 12 GB,CPU为intel i7-7700k 4.2 GB。
4)数据增强。对输入的训练图像做数据增强,输入图像以1/2的概率做水平翻转、随机缩放,以1/2的概率做高斯滤波使图像模糊,最后做中心裁剪得到513像素×513像素的图像。
5)训练。使用ResNet-101作为基础网络,加载在ImageNet上预训练的参数。整个网络学习率初始化为0.007,ASPP模块与解码器部分学习率为基础网络学习率的10倍。学习率策略使用多项式衰减,batch size 取8,训练60个epoch,近80 000次迭代达到收敛。
本文方法与原始网络的mIoU指标值对比如表1所示。可以看出,原始网络中加入本文解码器后性能有明显的提升。解码器模块将编码的带有丰富语义信息的高层特征与高分辨率的带有空间位置信息的低层特征相结合,恢复了高分辨率的分类结果。
表1 与原网络的mIoU指标对比
Table 1 Comparison of mIoU index with original network %
网络mIoU原网络77.21加入本文解码器的网络79.35
由于目前主流的特征融合方法使用不同的网络和多尺度策略,难以进行比较,因此本文使用上文中的解码器部分统一比较。本文先使用了卷积再引入了attention机制做乘法,为保证相当的网络层数与参数量,在其他方法特征融合之后接同样层数的卷积层。其中,SEB为文献[9]提出的语义融合分支,Attention表示文献[8]提出的注意力融合方式,Concat表示文献[7]提出的级联方式。4种方法的实验结果对比如表2所示。
表2 基于ResNet的mIoU指标对比
Table 2 Comparison of mIoU index based on ResNet %
网络 mIoUResNet-SEB77.61ResNet-Attention77.31ResNet-Concat78.89ResNet-EFFD79.35
为证明本文解码器的有效性,尝试更换了基础网络,将ResNet换成MobileNet[20],参数使用ImageNet上预训练的参数,batch size使用16,其他使用与ResNet同样的方法,在pascal voc上做训练测试,对比本文解码器与其他方式的解码器,实验结果如表3所示。
表3 基于MobileNet的mIoU指标对比
可见,本文方法相比基于注意力机制的方法、基于SEB的方法和传统的级联方法,性能均有提升。
本文设计一种增强特征融合解码器模块,通过级联高层特征与低层特征,以卷积的形式做第一步融合,通过降维后在第二步引入自身平方项的全局平均池化,用两个卷积预测自身项与自身平方项的权重,并以残差的形式进行融合。实验结果表明,该策略相比原网络与其他特征融合方式mIoU均有提高。下一步将结合深度神经网络可解释性方面的工作,研究性能更优的特征融合方式。