张富财,许建龙,包晓安
(浙江理工大学 信息学院,杭州 310018)
图像语义分割是为图像中的每一个像素分配一个具体的类别标签,达到像素级别的分类,是计算机视觉中的一项基础性工作.图像语义分割具有广泛的实际应用场景,如自动驾驶、城市遥感地图测绘、医学影像分析等.在这些实际应用中,高精度的分割结果至关重要.
随着卷积神经网络的发展,基于深度学习的图像语义分割模型的精度得到空前的提高.Shelhamer 等提出的FCN 模型[1],奠定使用深度学习处理图像语义分割任务的一般性过程,即先使用主干网络对图像做特征编码降低分辨率,然后使用特定的解码器解码,还原图像分辨率,最终产生密集型的像素类别预测结果.基于FCN 编解码架构,图像语义分割模型得到广泛的发展.编码器主要使用高精度的图像分类网络,如VGGNet[2]、GoogleNet[3]、ResNet[4]、DenseNet[5]、PeleeNet[6]等,这些主干网络具有很高的图像分类精度,将最后的全连接分类层更换为卷积层便可以直接迁移到语义分割模型中使用.在解码器方面,主要关注特征图的语义信息和分割对象的空间位置信息,出现许多处理全局特征的技术,本质都是扩大感受野,使模型感知全局信息,如Yu 等的DilationConv[7]提出扩张卷积的概念,在不降低图像空间分辨率的基础上聚合图像中不同尺寸的上下文信息并且扩大感受野的范围,精确定位分割对象;Chen 等的DeepLab[8]提出扩张空间卷积金字塔池化(atrous spatial pyramid pooling,ASPP)模块,采用多个不同扩张率卷积的平行架构,关注不同感受野下的对象分割;Zhao 等的PSPNet[9]提出金字塔池化模块(pyramid pooling module,PPM),使用平行的自适应池化操作获取不同感受野的分割对象.
除了通过扩大模型的感受野提高模型性能,视觉注意力机制同样被引入图像分割任务中,如Fu 等提出DANet[10],同时使用位置注意力和通道注意力提高解码器的分割性能,使模型有重点的关注分割对象,但是注意力机制会耗费相当大的算力.后来,为了兼顾模型分割精度与推理速度,许多模型使用轻量级的编码器和简易的解码器构建模型,如Paszke 等提出ENet[11]和Zhao 等提出ICNet[12],虽然推理速度达到了实时要求,但是精度还有待提高.本文对前述技术进行综合考虑,认为分割精度是语义分割模型首要考虑的因素.本文对上述模型进行复现实验,发现PSPNet、DeepLab等模型仅使用主干网络提取到的语义信息最丰富的最后一层特征图,因为浅层的高分辨特征图依然富含大量的空间位置特征和语义特征[13],所以通过合理的结合多级特征图依然可以提升模型性能.因为上述模型没有充分利用浅层低级特征图的空间位置特征,导致他们的模型虽然可以捕获丰富的高级语义特征,但是缺乏分割对象的空间位置信息,鉴于此,本文提出基于编解码结构的高精度图像语义分割模型.
本文使用已有工作的主干网络ResNet[4]提取图像特征,获得4 级不同分辨率的特征图(De1,De2,De3和De4),在此基础上提出编解码架构的高精度语义分割模型:双分支多层级语义分割网络(double branch multi-stage network,DBMSNet),使用双分支同时处理分割对象的空间位置特征和高级语义特征.
本文主要工作为:(1)提出特征精炼模块(feature refine,FR),通过融合高级语义特征与浅层的空间位置特征,使模型捕获丰富的空间位置信息及全局上下文信息,强化模型的空间位置感知能力;(2)提出混合扩张卷积模块(mixed dilation module,MDM),使用已有的深度可分离卷积[14]搭建稠密型连接模块(轻量级模块),充分混合不同扩张率的扩张卷积,获取不同尺度的感受野,强化模型对不同尺度对象的感知能力,增强空间位置特征的解码能力,使模型获取全局上下文信息;(3)提出双分支的解码器,第1 个分支使用FR和MDM 解码浅层特征的空间位置特征,第2 个分支使用已有的PPM 模块解码高级语义特征;(4)与对比方法相比,本文提出的双分支多层级语义分割网络在公开数据集上达到更高的精度.
在这个小节,介绍双分支多层级语义分割网络的整体结构.DBMSNet 由特征精炼模块、混合扩张卷积模块及金字塔池化模块构成.目的是充分利用多层次特征,通过学习丰富的空间位置特征和全局上下文特征完成高精度的图像分割任务.如图1所示.
图1 DBMSNet 网络的整体结构
输入3 通道图像经过Backbone 产生4 级特征图,分别为不同的分辨率(De1、De2、De3、De4的分辨率为输入图像的1/4、1/8、1/16、1/16).然后使用双分支进行处理,第1 个分支为空间位置特征处理分支,首先将De1和De3 经过FR 模块,产生与De1 分辨率一致的特征图,然后经过MDM 模块处理产生第1 个分支的输出.第2 个分支为语义特征处理分支,使用PPM模块处理De4 特征图产生第2 个分支的输出.最终,将两个分支产生的输出进行加权合并操作,使用双线性插值算法将合并的输出上采样至输入图片的原始分辨率作为最终输出,完成端到端的模型搭建,既捕获抽象的高级语义特征,又级联浅层的空间位置特征.
当输入图像的分辨率为512×512×3 时,OS=16 时(OS表示output stride),主干网络提取到的各级特征图分辨率如表1所示.特征精炼模块细节如图2.
表1 主干网络的各级特征图分辨率
图2 特征精炼模块细节
特征精炼模块如式(1):
其中,Up(·)为双线性插值上采样函数,C(·,·)为特征图通道级联函数.
1.3.1 稠密型扩张卷积
稠密型扩张卷积(dense dilation convolution,DDC)是混合扩张卷积模块的基本组成部分,并且深度可分离卷积[14]和分组卷积[15]与标准卷积的性能相似,但是效率更高.因此,使用深度可分离卷积来构建轻量级DDC 模块,如图3所示的DDC 模块细节图.
图3 稠密扩张卷积模块的细节图
首先,给定一个输入图片IH×W×C0,H为高,W为宽,C0为通道数.使用通道降维(channel reduce,CR)层进行通道降维,该层使用1×1 分组卷积使通道数降低为C0×α,α为通道降低率,得到特征图I′H×W×(C0×α);其次输入到4 个平行的深度可分离卷积层,其中卷积操作后都进行BatchNorm和ReLU 操作,以加速模型的收敛速度、提高稳定性及解决梯度消失问题,分别生成4 个使用不同扩张率卷积处理的特征图,如式(2)所示.
其中,i为正整数,ri为不同的扩张率,li为各分支的特征图.使用不同扩张率卷积的平行架构可以捕获不同尺度感受野对象,在多个尺度上合并上下文信息.虽然上述4 个平行分支可以捕获多尺度局部语义特征,但是缺少全局感知信息.为了克服这个缺点,设计自适应平均池化分支捕获全局上下文信息,通过I′H×W×(C0×α)产生G1×1×(C0×α)(G为池化分支的输出).全局平均池化是通过计算输入的高度H和宽度W的平均值来进行下采样操作,然后,同样使用1×1 深度可分离卷积降低通道数,接着使用双线性插值算法恢复分辨率,以便与4 个平行分支产生的特征图进行通道合并.最下面一个数据流表示残差连接.
另外,直接将上述5 个分支的特征图通道合并会削弱特征表达,所以设计通道随机打乱操作(channel shuffle,CS),使特征的泛化表达性更高.整个DDC 模块的操作如式(3)所示.
其中,S(·)为通道随机混合函数,C(·,·)为通道合并函数,L为4 个不同扩张率卷积分支产生的特征图,G′为自适应平均池化分支上采样产生的特征图,⊕为元素级相加,H为特征图的高,W为特征图的宽,C0为特征图通道数,α为通道缩减率,n为特征图数量1,2,3,4.
DDC 模块的详细参数如表2所示,设输入为H×W×C0,通道缩减率为α.其中,k为卷积核的大小,ri(i=1,2,3,4)为不同的扩张率,BN为BatchNorm,H,W,C0为特征图的高、宽和通道数.
表2 稠密扩张卷积模块参数
1.3.2 混合扩张卷积模块
混合扩张卷积模块由上述DDC 模块组成,细节展示如图4所示.MDM 模块分为两部分,分别为DDC组成的稠密连接分支以及全局池化分支,用来捕获多尺度对象语义特征以及空间位置特征.稠密连接分支使用3 个DDC 模块的堆叠方式而不是平行架构,即外部为稠密连接方式,内部为多级平行架构.这样充分利用不同尺度的感受野,通过对特征图的最大化利用从而达到最好的效果且有更少的参数.
图4 混合扩张卷积模块细节图
每个DDC 模块拥有明确的对象捕获尺度,第1个DDC 模块使用的扩张率组合为Ds={1,3,5,7},主要捕获小尺度对象;以Ds的输出作为输入,第2 个DDC模块的扩张率组合为Dm={5,7,11,13},主要捕获中等尺寸对象;最后一个DDC 模块的扩张率组合为Dl={13,15,17,19},主要捕获大尺度对象.因为在输入的时候进行通道降维操作,并且特征图的分辨率较小,所以设置较大的扩张率不会增加太多的计算开销.最后,将每一个DDC 模块产生的输出进行元素级别的求和操作,共同编码多层次语义.MDM 模块的输出如式(4)所示.
其中,C(·,·)为特征图通道合并操作,F1为稠密型连接分支的输出,F2为全局平均池化上采样后的输出.感受野的计算如式(5)所示,其中,A为感受野尺寸,K为卷积核尺寸,D为扩张率.
最终,堆叠三级DDC 模块可以在理论上获得最大的感受野,如式(6)所示.
表3 混合扩张卷积模块参数
借鉴PSPNet 中的PPM,使用自适应平均池化操作,处理第2 个分支,自适应即为将特征图分别池化为(1,1)、(2,2)、(3,3)、(6,6)的尺寸,增强局部与全局特征的表达能力,最后与输入图进行通道合并,融合全局先验知识,如图5所示.
图5 金字塔模块的细节图
模型的所有配置参数如表4所示,以输入为(512,512,3)的图像为例.表中:conv为卷积操作,[k×k,conv,Number]表示卷积核大小为k,卷积核的数量为Number,[k×k,dwconv,r={1,2,3,5}]表示深度可分离卷积操作,卷积核尺寸为k,r为扩张率,global_pooling为全局池化操作,num_classes为分割的类别数.
表4 DBMSNet 参数
DBMSNet 模型的优势在于对分割对象空间位置特征的捕获和高级语义特征的融合,为了验证提出的DBMSNet的有效性,在公开数据集中进行广泛的实验.
(1)Cityscapes 城市场景数据集[16].这是一个流行的用于城市场景对象解析的数据集,它包含25 000 张分辨率为2048×1024的标注图片.其中精细化标注的图片数量为5 000 张并且包含19 个类别,如行人、汽车、天空、建筑物等.实验时使用2 975 张图片作为训练集,500 张图片作为验证集,1 525 张图片作为测试集.由于硬件设备的限制,训练时将图片裁剪为1024×512的尺寸.
(2)CelebAMask-HQ 人脸分割数据集[17].该数据集包含30 000 张高分辨率的人脸图片,每一张图片拥有详细的标注信息.该数据集的标注图的尺寸为512×512 并且分为19 个类别,分别为面部皮肤、鼻子、眼镜、左右眼、左右眉毛、左右耳朵、牙齿、上下嘴唇、头发、帽子、耳环、项链、脖子和衣服.提取了一部分数据进行DBMSNet的实验,其中训练集24 184张,验证集300 张,测试集2 824 张.为了验证模型的泛化能力,继续在城市场景解析数据集中进行了广泛的实验.
(1)语义精度.mIoU平均交并比是一个广泛用于图像分割领域的评价分割精度的指标.假设b代表语义分割的类别数,则mIoU如式(7)所示.
其中,pvz为真实值为z,被预测为v的数量,b+1为类别个数(包含背景忽略类).pzz为正确的数量.pzv、pvz分别为假正和假负.
(2)像素精度(pixel accuracy,PA).预测正确的像素数占总像素数的比例,如式(8)所示.
其中,pzv为像素总数,pzz为预测正确的像素数,b为类别数.
实验中使用开源深度学习框架PaddlePaddle[18]搭建DBMSNet 模型,实验设备为Tesla V100 单卡32 GB显存,操作系统为Ubuntu 16.04.在训练之前,进行数据预处理操作:① 使用步长为0.25,范围为0.75 到1.5的随机尺寸缩放;② 设置随机水平翻转与随机垂直翻转概率为0.5;③ 设置随机旋转角度为(-10,10);④ 设置随机对比度变化范围0.4,随机亮度变化范围0.4,随机色彩饱和度变化范围0.4;⑤ 像素归一化处理.
在训练时使用“Poly”学习率衰减策略,power为0.9,终止学习率为0,如式(9)所示.
其中,lr为学习率,iter为迭代次数,max_iter为最大迭代次数,使用随机梯度下降(stochastic gradient descent,SGD)优化算法,动量为0.9,权重衰减为4e-5.对于两个分支的输出,第1 个分支的权重为0.4,第2 个分支的权重为1.最后使用像素级的交叉熵损失为损失函数.本文在Cityscapes 数据集中进行广泛的消融实验,设置Batch_Size=6,iters=40000.
2.3.1 双分支的有效性消融实验
为验证本文提出的双分支模型的有效性,首先构造只使用De4 特征图,并使用PPM 解码的单分支模型作为Baseline.实验结果如表5所示.
表5 双分支有效性实验
表5中,De4(PPM) 表示只使用De4 特征图,用PPM 处理;De3(Two)表示De3 使用TwoDecoder 处理,TwoDecoder 表示本文提出的FR和MDM 组合的解码器;De32 表示FR 模块的输入为De3和De2;Params表示模型的参数量;FLOPs 表示模型的浮点运算总量(输入为360×640 估算).例如De4(PPM)+De321(Two)表示:De4 分支使用PPM 处理,De321为第1 个分支的输入,使用TwoDecoder 处理.
实验结果表明,在单独使用De4(PPM) 分支的Baseline的基础上,添加第1 个分支会对模型性能产生影响.其中,添加De3 或De32为第1 个分支的输入时会对Baseline 产生负面影响,精度分别降低0.22和0.23;添加De31 或De321为第1 个分支的输入时会对Baseline 产生正面影响,精度分别提高0.51和0.29;并且,添加De31 作为第1 个分支的输入取得最好性能75.78,相比Baseline 精度提升0.51,证明本文提出的双分支解码器是有效的.
2.3.2 PP_Out 参数的消融实验
为相对减少模型参数,分别设置PP_Out=1024、512、256和128 进行对比实验,PP_Out 表示PPM 模块的输出通道数,选择的基准模型为实验1 中的最佳配置:De4(PPM)+De31(Two),结果如表6所示.
表6 PP_Out 参数影响
实验结果表明,在基准模型一致的前提下,设置不同的PP_Out 会对模型产生不同的影响.设置PP_Out=128的参数量为PP_Out=1024的50%,FLOPs为PP_Out=1024的61%,证明PP_Out 设置为128 可以取得更好的结果,且拥有更少的Params和FLOPs.
2.3.3 TwoDecoder的消融实验
TwoDecoder 表示第1 个分支的解码器(由FR和MDM 组成).在实验1 证明De4(PPM) 基础上添加De31(Two)取得最佳性能后,充分调试TwoDecoder的最佳配置,实验中设置PP_Out=128,结果如表7所示.
表7中,设置第1 个分支为De31,依次验证TwoDecoder的配置,Small 表示MDM 模块中DDC 小扩张率r=[1,3,5,7],Middle 表示MDM 模块DDC 中扩张率r=[5,7,11,13],Large 表示MDM 模块中DDC 大扩张率r=[13,16,18,20],Global_Pooling 表示MDM 中的全局池化层,Attention 表示MDM 中的注意力层,在实验中增加注意力机制进行实验效果的探索;第2 个分支De4(PPM) 保持不变.如De31+Small+Middle 表示:第2 个分支保持De4(PPM)不变,第1 个分支使用De31为输入,MDM 模块包含Small和Middle 两个扩张率组合.
表7 TwoDecoder 最佳配置
实验结果表明,通过改变不同TwoDecoder 配置,在De4(PPM)和De31 两个分支保持不变的前提下,第1 个分支TwoDecoder 配置为Small+Middle+Large+Global_Pooling 时精度最高为76.37,相反,添加Attention层后的精度下降0.39.
2.3.4 单分支的消融实验
在实验1、2 得出PP_Out=128,第1 个分支输入为De31 时,模型得到最高精度后,继续验证单分支的性能,Two的配置为实验3 中的最佳配置,实验结果如表8所示.
表8 单分支消融性实验
表8中,De4(PPM)表示只使用De4 分支,PPM 解码;De31(Two)表示只使用第1 个分支,De31 作为输入,使用TwoDecoder 解码;设置PP_Out=128.实验结果表明,单独使用De4 分支比单独使用De31 分支的精度高0.65,结合两个分支取得最佳精度76.37,均高于单独使用一个分支的精度,证明两个分支结合的有效性.
2.3.5OS的消融实验
OS为主干网络的输出步长,表示提取特征图的缩放比例.在基准模型为De4(PPM)+De31(Two)的前提下,测试不同OS对模型精度的影响.PP_Out 设置为128,实验结果如表9所示.
表9 OS 消融性实验
实验结果表明,在基准模型相同的情况下,OS=16 取得最佳精度76.37%,比OS=8 高0.35,实验数据表明OS的改变不会影响模型的参数量,但是会影响浮点运算总量,OS=16的浮点运算总量仅为OS=8的40%,且精度更高,所以设置模型OS=16.
2.3.6 主干网络消融实验
通过改变不同的Backbone 网络,验证本文模型可以得到的最佳精度.结果如表10所示.
表10 主干网络的影响
该实验使用上述实验得出的最佳模型配置:De4(PPM)+De31(Two),Two为Small+Middle+Large+Glo-bal_Pooling.实验结果表明,使用主干网络ResNet101取得最佳精度78.29%,比ResNet50 高1.32,比ResNet152高0.14.
(1)与当前主流的高精度图像语义分割模型对比性能,Cityscapes 实验结果如表11所示,其他模型的数据均来自公开论文中的数据.实验结果表明,本文提出的模型精度均高于对比模型.Cityscapes 数据集可视化结果如图6所示.
图6 Cityscapes 可视化结果
表11 其他模型性能对比数据
(2)模型参数量对比.为体现本文提出的模型的先进性,继续对比模型的参数量与浮点运算总量,对比结果如表12所示.
表12 模型参数对比
实验结果表明,本文提出的模型取得最高的精度78.29,拥有最少的参数量33.4 M和浮点运算数421.8 G,充分证明本文提出模型的先进性.
(3)CelebAMask-HQ 实验结果.
CelebAMask-HQ 数据集中的实验结果如表13所示.首先在自己的实验环境中复现了表中所有的对比模型,并且使用相同的训练准则进行模型训练.通过实验数据可以清晰地观察到,DBMSNet 模型在捕获左眼和右眼、左眉毛和右眉毛、左耳和右耳的类别IoU 方面取得了绝对的领先,这归功于提出的特征精炼(FR)模块以及混合空洞卷积(MDM)模块,不但可以提取多尺度的高级抽象语义信息,而且可以完美地获取解析对象的空间位置信息,在其他的类别预测精度相差无几的情况下,精确的空间位置信息可以完美地反应人脸中对称的对象,如左右眉毛、左右眼睛等,这些对象具有绝对相似的外观,但是空间位置不同,DBMSNet模型完美地解决了这个难题.与PSPNet 相比精度提升了0.76%,像素精度提升了0.02%,达到了最高的分数.
表13 CelebAMask-HQ 实验结果 (%)
可视化结果比较如图7所示.通过可视化的比较结果,可以清晰地看到,UNet、DeepLab v3+等模型由于特征表达能力不够,会出现类别混淆、对象空间位置混淆、对象类别错分的现象,并且对于大多数对象的空间位置预测出错.而PSPNet 虽然也达到了很高的分割精度,但是在空间位置准确度预测方面依然不如本文的模型.
图7 CelebAMask-HQ 可视化结果
使用作者本人的图片进行模型测试,结果如图8所示.可以看到,UNet、DeepLab v3+等模型无法做到语义类别的准确预测,无法清晰的辨别对象空间位置信息;FCN、PSPNet 由于未充分使用主干网络的特征图,对于空间位置的解析不够精确;DBMSNet 达到了最佳的预测结果,兼具语义类别的准确性与空间位置的精确性.
图8 真人输入可视化结果
本文提出一种高精度语义分割网络称为双分支多层级语义分割网络(DBMSNet).首先使用残差网络提取到4 级分辨率由大到小的特征图(De1,De2,De3和De4);其次将De1和De3 通过本文提出的FR 模块与MDM 模块,充分混合空间位置特征的同时编码上下文信息及多尺度感受野,此输出为第一分支;然后将De4通过PPM 模块,目的是提取高级语义信息,此输出为第二分支;最后将两个分支进行融合输出,达到空间位置特征与高级语义信息融合的目的,完成高精度的图像分割任务.文中多组消融实验充分表明了本文所提模块的有效性.最终实验结果表明,本文所提模型在相同数据集的精度明显优于文中列出的现有模型,在人脸解析数据集CelebAMask-HQ 取得最高精度74.64%,在Cityscapes 数据集取得78.29%的精度.所提模型兼顾分割对象的空间位置特征与高级语义特征,具有较好的性能.
在后续的研究中,继续两方面的内容:(1)加快模型的推理速度,同时需保持高的解析精度,本文认为分割精度是语义分割工作的核心要义.(2)提升分割对象的边界准确率,边界问题仍然存在于本文提出的模型中,需要进一步改进.