陈劲宏,陈 玮,尹 钟
(上海理工大学 光电信息与计算机工程学院,上海 200093)
在深度学习被应用在语义分割领域之前,受当时计算机硬件条件的限制,人们使用人工设计或者由数据统计得到的特征来解决分割问题。这种传统方法不仅费时,而且在分割精度上也缺乏鲁棒性。随着应用场景的变化,使用传统方法得到的效果将会急剧下降。随着计算机硬件设备的快速发展,基于深度学习的深度卷积神经网络逐渐在语义分割领域得到广泛运用。这种由数据驱动的卷积网络不论是从速度还是精度上来看,都明显超过了传统方法。
街景语义分割是计算机视觉分支中的一支。近年来,无人车驾驶技术的发展越发深入,对街景语义分割技术的要求也越来越高,该领域得到了快速发展。目前,语义分割已经发展到像素级分割任务级别,它要求输入图像中的每个像素都尽可能被正确分类,这跟模型性能指标优劣有直接关系。
语义分割领域进入端到端像素级预测阶段是从卷积神经网络(Fully Convolution Networks,FCN)[1]开始的。FCN首先将超分辨率测试序列(Visual Geometry Group,VGG16)[2]去掉全连接层,再把VGG16剩余部分作为它的下采样模块,然后再经过反卷积上采样模块实现了端到端的像素级预测。FCN将分类网络改编为全卷积神经网络,使用跳跃结构使得语义信息可以和表征信息相结合,产生准确而精细的分割。文献[3]提出的SegNet模型在进行上采样(解码)的过程中直接利用编码阶段中经过最大池化时保留的最大池化索引,达到非线性上采样的目的,提高了目标边缘的平滑度。文献[4]提出的UNet模型采用了U型结构的编解码结构,将编码器和解码器在特征图层次上进行融合,然后再输入到下一个解码器里。该网络可以用较少的图片进行端到端训练,处理速度也较快,适用于数量少且分辨率高的数据集。文献[5]提出了DeepLab V3模型,并在模型中使用了空洞金字塔池化模块,从而能提取到不同尺度的语义信息,提升了整个模型的分割性能。该方法通过并行不同空洞率的带孔卷积来提取不同尺度的特征,然后再进行融合,推动了语义分割的发展。文献[6]提出的全局池化网络(Golobal Convolution Network,GCN)模型继AlexNet[7]、LeNet[8]之后可在可分离卷积的基础上使用大卷积核,提高了感受野,抑制了深度堆叠卷积容易出现的不可控因素。文献[9]提出的ExfuseNet模型延续了GCN的思想。不同的是,ExfuseNet模型加入了多监督模块进行深度语义监督,并通过语义嵌入模块进行特征互补融合,ExfuseNet模型则通过自身末尾的密集邻域预测模块(Densely Adjacent Prediction,DAP)来优化自身的最终效果。
尽管上述模型能够从不同角度出发来提升模型的最终分割性能,但是当遇到面积占比低且低密度的感兴趣目标(例如Camvid中的Pole类)时,上述模型将会错误地把它们忽略从而导致错误分类,并最终阻止模型性能进一步提升。针对这类问题,本文提出了一种改进的ExfuseNet模型:一方面,弃用基础模型中的全局池化和全连接层,改用带孔卷积来同时增大感受野并减少模型参数;另一方面,在DAP模块之后引入了通道和空间的注意力机制来进一步提升对感兴趣对象的捕捉效率。损失函数采用FocalLoss[10]函数和NLLLoss函数进行加权相加,从而提高模型性能。
本文所使用的街景图像来源于公开数据集Camvid,图片是从驾驶汽车的角度拍摄的。该数据集的训练集由367张360×480像素的彩色图片组成,验证集为101张360×480像素的彩色图片。训练集的作用是更新模型参数,验证集的功能为验证更新参数后模型的性能表现,训练集和验证集之间没有交集。该数据集提供12类 Ground Truth语义标签,将每个像素与语义类别之一相关联。该数据库解决了对实验数据的需求,以定量评估新兴算法。
本文所用的模型参数尽管比ExfuseNet模型参数少,但其参数数量仍然较多。一个鲁棒性高的模型需要大量的训练数据来训练模型参数。由于所用的训练集图片数量偏少,所以在进行模型训练前进行了数据增强的操作。数据增强的部分结果如图1所示:图1(a)为中心裁剪后尺寸为352×480像素的原始图;图1(b)为图1(a)的垂直翻转图;图1(c)为图1(a)的水平翻转图;图1(d)为图1(a)先做垂直翻转然后再做水平翻转后的结果图。经过这样的操作,数据集的图像数量扩增了3倍,可提高模型的泛化力。
图1 数据增强结果图
在深度学习训练的反向传播[11]过程中,采用梯度下降法。如果数据是经过归一化操作的话,梯度收敛的速度会被加快,因此在街景图片输入到模型之前还要进行图像归一化,部分结果如图2所示。图2(b)为图2(a)归一化后的结果,图2(d)为图2(c)归一化后的结果。图像归一化计算如式(1)和式(2)所示。
(1)
(2)
式中,x表示图像矩阵;μ表示图像的均值;δ表示标准方差;N表示图像的像素数量(168 960个像素值)。
图2 图像标准化结果图
现有的ExfuseNet模型在实际使用中面临着街景图像背景复杂而造成的类不均衡的问题。该问题会导致面积占比低且分布密度小的感兴趣目标类无法被正确分类,最终导致模型性能降低。诱发该问题的主要原因为:(1)ExfuseNet模型的多监督模块使得从编码器出来的特征图片的分辨率进一步降低,导致小目标边界模糊乃至消失;(2)主输出模块特征融合后直接输出,该步骤会导致模型在有限的计算资源下无法对感兴趣目标类的深度语义信息进行高效率采样;(3)ExfuseNet模型缺失了随机丢弃层,可能会导致模型泛化力不足。以上不利因素阻止了ExfuseNet模型的进一步提升。
为了解决这些问题,本文对ExfuseNet模型结构进行改进。在细致解剖ExfuseNet模型结构后发现,原多监督模块不仅使用了全局池化层,还使用了全连接层,这将导致下采样得到的特征图分辨率进一步下降,并大幅度增加模型的参数量。为了解决原多监督模块存在的弊端,本文在丢弃全局池化层和全连接层的基础上,改用了不同卷积率的带孔卷积,在保证分辨率的前提下增大了感受野,减少了模型参数量的引进,使得边缘分割更加平滑。为了使主输出部分和多监督部分的权重之比为9∶1,本文中,多监督模块输出的Pediction 0~3各占总预测的2.5%。实验中发现,在语义嵌入模块后的输出张量拥有过多通道数,若不降低通道数,则会增加模型的计算负担并降低模型的泛化力,于是在这些模块后面加入了随机丢弃层[12],这样既降低了模型计算参数,也提高了泛化力。此外,原主输出模块直接将特征融合后的结果进行输出的方法并不理想。本文实验中,在主输出模块后添加了由通道和空间串联起来的注意力机制模块[13],从而能够更高效地对感兴趣目标类的深度语义信息进行采样提取。这里主输出模块的输出占总预测的90%。改进的ExfuseNet整体结构如图3所示。改进的多监督模块(SS+)如图4所示。
图3 改进的ExfuseNetFigure 3. The improved ExfuseNet
图4 改进的多监督模块(SS+)Figure 4. The improved multi-supervision module (SS+)
文献[14]在下采样操作之后(模块头部)使用全局注意力机制来消除图像背景噪声所产生的干扰,提高对边缘的感知性能。改进后的模型在模块尾部采用CBAM注意力机制,更高效地采样到感兴趣目标类的深度语义信息,提升了模型分类性能。卷积模块的注意力机制模块如图5所示,是一种结合了空间和通道的注意力机制模块。通道注意力机制模块如图6所示,将输入特征图分别输入到基于宽度和长度的全局最大池化层和全局平均池化层;然后再一起输入到多层感知器里(Multilayer Perceptron,MLP),将MLP输出的特征进行基于逐个像素相加(Elementwise加法)操作,再经过Sigmoid激活操作,生成通道注意力特征图;最后将该通道注意力特征图和输入特征图做Elementwise乘法操作,生成空间注意力模块需要的输入特征。图7表示空间注意力机制模块,本文将通道注意力模块输出的特征图作为空间注意力模块的输入特征图。首先做基于通道的全局最大池化和全局平均池化,然后将这两个结果基于通道做Concat操作;然后经过一个卷积操作,降维为1个通道,再经过Sigmoid激活生成空间注意力特征图;最后将该空间注意力特征图和该模块的输入通道注意力特征图做逐个像素相乘的操作(Elementwise乘法)。
图5 卷环模块的注意力机制模块Figure 5. Convolutional bock attention module
图6 通道注意力机制模块Figure 6. Channel attention module
图7 空间注意力机制模块Figure 7. Spatial attention module
Focal Loss最初被应用在目标检测任务上,目的是为了解决类之间不平衡问题。鉴于语义分割和目标检测任务有相似之处,因此,本文将该方法运用到文中提出的模型中。Focal Loss的计算如式(3)所示
FL(pt)=-α(1-pt×pgroundtruth)γlog(pt)
(3)
式中,pt为该类在模型中的预测结果;pgroundtruth为该类的像素点总数与图像中所有类像素点总数的比例;实验中α取0.25,γ取2。
从以往的经典模型实验结果中可知,由于Pole类在Camvid数据集中面积占比小且密度低,故容易造成类不平衡,因此Pole类的分类准确度最低。随着Pole类分类准确度提高,对应模型的最终分割性能也会随之提高。为了提高研究效率,本文实验中选取Camvid数据集中12个感兴趣类中最难分割的Pole类作为重点关注对象来进行研究。
本文提出的模型是在Pytorch1.7.0框架上搭建的,采用NVIDIA GeForce RTX3080(10 GB)、因特尔酷睿i7十代处理器、32 GB运行内存,操作系统为Windows 10,编程语言为Python3.6。优化器使用的是Adam函数,学习率为0.000 1,动量参数为0.9,权值衰减系数为0.000 2,Batchsize设置为6,一共训练100个epoch,即迭代100次。一个epoch指代所有数据送入网络后完成一次前向传播及反向传播的过程。
在进行街景图像分割时,需将图像中每一个像素逐个分类,再将模型得到的预测图跟标签图做像素级的对比计算。为了客观地评价提出的模型的性能,采用两个评价标准作为衡量模型性能的指标,分别为Pole类像素精度(Class_Pole _ACC)和均交并比(Mean Intersection Over Union,MIOU)。其中,均交并比是这类任务中最重要的指标,可以客观地反映出模型的性能优劣能。两种指标的计算式如式(4)和式(5)所示。
(4)
(5)
式中,在本实验重新制作的class_dict文件里,Pole属于第3个类别,故式(4)中K取2;Pij表示本属于类i但被预测为类j的像素数量,即Pii表示真正的数量,而Pij和Pji则分别被解释为假正或假负;由于Camvid数据集共有12类,故在式(5)中K取11。
图8展示了改进模型与ExfuseNet模型的部分图像的分割结果对比图,其中图8(a)为原始图,图8(b)为人工标注的标签,图8(c)为ExfuseNet模型分割结果图,图8(d)为改进后模型的分割结果图。在图8中,改进模型前后需要重点对比的区域已用不同形状的外框进行了突显,可以很直观地看到图8(c)中矩形框内Pole类区域预测结果并不精确,而圆框和三角框内边缘则不够平滑。图8(d)则显示这些瑕疵得到了部分改善。上述结果表明:(1)本模型更容易学习到那些低面积占比且密度低的感兴趣目标的深度语义特征;(2)边缘分割更加平滑;(3)本模型具备了一定的类平衡功能;(4)本模型对光线强度有一定的泛化能力。
(a) (b) (c) (d)图8 分割结果对比图(a)原始图 (b)人工标注图 (c)ExfuseNet分割结果 (d)改进后分割结果Figure 8. Comparison of segmentation results(a)Original image (b)Manually annotated image (c)Results of ExfuseNet (d)Segmentation results after improvement
表1展示了确定模型的过程,实验通过加减模块来研究搭建出来的模型性能优劣,一共有6个备选模型,从实验得出的性能指标上来看的话,最终决定5号模型作为改进模型。
为了客观评价改进的模型的性能,本文将改进的模型与国内外不同文献的Pole类分类方法的准确率、均交并比进行了对比。图9和图10分别为改进模型与外文文献方法的对比结果,表2为改进的模型与国内文献方法的对比。从图9和图10中可以看出,相较国外ExfuseNet、SegNet、VGG_UNet、FCN、GCN来说,改进模型的收敛速度虽然较慢,但其Pole类分类准确率比上述模型有明显优势。通过图10可知,相较于改进前,改进后模型的性能指标得到了明显提高。
图9 Pole类准确率对比图Figure 9. Accuracy rate comparison chart of class Pole
图10 均交并比对比图Figure 10. The diagram of MIOU comparison
表1 搭建本文模型的过程
由图9、图10和表2还可以看出,改进后的ExfuseNet模型在Pole类的分类准确率领先现有的部分国内外模型。因此,从Pole低面积占比且低密度分布(最难类)的分类准确率可以判定模型在Camvid数据集中的整体表现优劣。实验结果表明Pole类分类准确率和模型最终的均交并比呈正相关关系,即在Pole类分类准确率上做提升可以使算法整体性能提升。如表3所示,相较ExfuseNet模型,改进后的模型的反应速度提高了58%,表明模型改进后参数量有所减少。
表2 本文模型与国内模型性能数据对比
表3 反应时间对比
为改善ExfuseNet模型对街景图中面积占比和像素密度较低的类别的分割表现,并对其中具有代表性的Pole类的类准确率、分割平滑度、均交并比等分割指标进行提升。本文使用不同卷积率的带孔卷积,在保证分辨率的前提下增大了感受野,提升了算法对于Pole类的定位能力以及对该类的边缘处理能力;在主输出后面加入了由通道和空间串联起来的注意力机制模块,从而更高效地采样到Pole类的深度语义信息,提升了Pole类的分类能力;使用了Focal Loss类平衡函数改善数据集里Pole类不平衡的问题。实验结果证明了改进后的模型的有效性。但从长远发展来看,想要使自动驾驶技术能够实际落地应用,在相关性能指标上需要有更高的要求,对模型各方面的指标要求也应更加严格。这意味着仍需对未来提出的模型在整体分割性能上进行提高。因此,从更有效的角度切入,并解决自动驾驶技术实际落地应用的问题是现代街景语义分割研究领域里的首要任务。