熊风光,张 鑫,韩 燮,况立群,刘欢乐,贾炅昊
1.中北大学 计算机科学与技术学院,太原 030051
2.北方自动控制研究所 仿真装备研发部,太原 030051
随着遥感技术的不断发展,遥感图像中所蕴含的语义信息也越来越丰富,因此如何针对遥感图像进行语义分割,快速而准确地提取出重要的语义信息,并进行后期应用和开发,是一件非常重要的研究课题。遥感图像的语义分割有着广泛的应用范围,涉及城市规划、地质灾害防治、军事战争模拟等[1]。尤其是在军事战争模拟方面,从遥感图像中分割出的语义信息,对于真实战场地形的快速生成、环境的快速搭建有着极其重要的作用[2]。
相较传统的基于边缘检测[3]、阈值[4]、区域[5]的影像分割算法,基于深度学习的语义分割,利用深度神经网络强大的特征学习能力来解决复杂的遥感图像分割问题,更能满足今天遥感图像中语义分割的要求。但当前主流的深度卷积神经网络的语义分割方法,往往存在着对小物体的特征获取困难、分割精度不足的问题。为此,本文提出一种改进的Deeplabv3[6]算法,以优化对小物体的分割效果为目标,从改变单一的上采样结构、降低ASPP模块过大的感受野出发,构建出更加适合遥感图像语义分割的网络模型,从而解决小物体分割困难、分割精度不高等问题。
对于遥感图像语义分割来说,当前一般分为传统图形学算法和基于深度学习的算法两大类。传统的语义分割算法包括基于边缘检测的影像分割算法、基于阈值的影像分割算法和基于区域的影像分割算法。基于边缘检测的影像分割算法模仿人类视觉过程,把图像边缘与背景分离出来,再知觉图像细节,从而辨认出图像对象轮廓。基于阈值的影像分割算法的基本思路是利用影像中感兴趣的目标和背景在灰度特性上的差异性,用一个或几个阈值将影像的灰度级分为几类,属于同一类的像素认定为同一个对象。基于区域的影像分割算法,从像元出发,按照区域属性特征一致的准则,选定待分割目标内的一个小区域作为种子区域,再在其基础上决定每个像元的区域归属,将其周围的像元以一定的准则不断加入,并将其作为新的种子区域,重复最终将具有指定特性的所有像元全部合并起来构成区域。这些方法虽然能够分割出较为完整的场景,但是在分割精度上远不如深度学习方法。
与之相比,基于深度学习的语义分割算法以其适应能力强、检测效率高而得到了广泛应用,该类检测算法以卷积神经网络为基础,具有强大的特征表示能力,在背景模糊、环境复杂的情况下,仍然能够学习到有用的特征,大幅提高了场景分割精度[7-10]。例如,文献[11]提出了一种基于编码器-解码器的结构用于医疗影像分割;文献[12]提出了使用膨胀卷积代替池化操作进行特征提取,保证了图像分辨率的完整性;文献[13]为语义分割提供了一种思路,其拥有与众不同的并联结构,可以随时保持高分辨率表征,不只靠从低分辨率表征里,恢复高分辨率表征;文献[14]从增强全局的特征融合以及语义特征质之间的相关性为切入点,提出了Position Attention和Channel Attention mechanism(位置注意力机制和通道注意力机制)的方法。
虽然,当前基于深度学习的语义分割方法在图像的语义分割方面取得了较好效果,并提升了分割精度。但针对区域动辄数十公里、场景复杂多变的遥感图像,以上诸多方法欲从中分割出目标小、背景复杂度高的植被、建筑物等对象,仍存在着分割效果不好、精度不高等问题[15]。因此,本文提出一种基于改进的Deeplabv3语义分割算法来解决该问题。
Deeplabv3的网络结构分为骨干网络(Resnet-50)、ASPP(空间膨胀卷积池化金字塔)模块以及最后的上采样部分。Resnet-50由49个卷积层和1个全连接层组成,构成了一个50层的卷积神经网络(CNN),由于语义分割需要最终还原原始尺度大小的图片,因此抛弃最后的全连接层[16],将49层后得到的特征图送入ASPP模块。ASPP模块由4个不同膨胀率的膨胀卷积(Dilated convolution)组成,膨胀卷积不仅能够完成类似池化操作的特征提取功能,而且因为卷积的特性使得该模块可以不像池化操作一样降低图像分辨率,而是保留了图像的尺寸,从而保留更多的位置语义信息。最终通过双线性插值法将图片还原为原始大小,得到最终的分类评定模型。分割流程如图1所示。
图1 Deeplabv3分割流程Fig.1 Deeplabv3 segmentation process
Deeplab v3算法的权重是基于MS-COCO数据集训练所得,MS-COCO数据集具有车辆、人体、家具等80种类别。该数据集在语义方面与遥感图像差距较大,因此原Deeplabv3算法不适用于语义丰富的遥感图像场景。
故本文在以下两方面进行改进:一是修改上采样模块,将单一的双线性插值上采样修改为一个类似Decoder的上采样模式,融合主干网络中池化操作丢失的空间位置信息,减少语义信息的丢失。二是修改ASPP模块中四层膨胀卷积的膨胀率,加强网络对小目标的分割能力。
2.2.1修改上采样模块
如图2所示,在Deeplabv3原始网络结构的最后上采样阶段,仅仅使用了1×1卷积和单一暴力的双线性插值使特征图还原到图像原尺度得到最终的分类评定模型。这种做法虽然降低了网络的深度具有较少的参数量,具有较低的运算成本,但其拥有的语义信息较为单薄,存在着因为下采样而损失图像精度的问题;且双线性插值法上采样参数不可学习,不利于得到较为精细的分割结果。同时,虽然网络使用了ASPP模块避免了部分由于池化造成的空间位置信息损失,但是Resnet-50作为网络的主干网络,对池化模块的使用会不可避免地导致图像分辨率降低和语义信息损失。因此,本文提出在Deeplabv3的基础上,结合Resnet-50第一层7×7卷积得到的特征图仅经过一次最大值池化,具有较大的分辨率以及较为完整的空间位置信息等特点,将ASPP之后的特征图与上述经过Resnet-50第一层的特征图进行通道维度上的合并,构建一个类似Decoder的模块[17],利用低层中含有丰富空间位置信息的特征图使得分割结果有更加精细的像素位置恢复。之后利用两个3×3的卷积深化特征,再通过双线性插值上采样得到分割结果。改进后的上采样模块相较于原网络仅增加了256+256×3×3×2=4 864个参数,对整个网络运算成本影响较小。
图2 原始网络结构Fig.2 Original network structure
改进后的网络模型结构如图3所示,将原网络的上采样部分进行扩展,改进的网络结构能够在深层网络中保持较高分辨率从而获得更多的空间位置语义信息,以获得较为精细的分割结果。
图3 改进的网络结构Fig.3 Improved network structure
2.2.2调整ASPP模块各层膨胀率
深度卷积神经网络对于分割任务也存在一定的缺陷。由于池化层参数不可学习和分辨率降低导致空间层级化信息丢失、小物体信息无法重建等问题的存在,使得语义分割一直处于瓶颈期,无法很好地提高分割精度。故而,Deeplab系列提出了膨胀卷积的设计[18],很好地避免了这些问题。膨胀卷积的结构如图4所示。
图4 具有不同膨胀率的膨胀卷积Fig.4 Dilated convolution with different dilated rate
膨胀卷积从字面意义上就很好理解,即在标准的卷积核中注入膨胀,以此来增加卷积的感受野。相比原来正常的卷积,膨胀卷积增加了一个超参数称之为膨胀率,指的是卷积核之间的间隔数量(正常的卷积膨胀率为1)。空间膨胀卷积池化金字塔作为Deeplabv3的核心模块,其结构借鉴了著名的SPP(spatial pyramid pooling),它将SPP中的池化窗口分别替换为原始卷积与膨胀率为6、12、18的膨胀卷积。由于发现膨胀率过大后卷积核中有效的权重变小,当膨胀率足够大之后,卷积仅剩最中间的卷积核即退化成了1×1的卷积。因此最后一个特征使用了全局平均池化进行采样,同时使用双线性插值上采样还原到对应尺度。最终将这5个特征在通道的维度上进行合并得到分类评定模型。由于Deeplabv3给出的ASPP模块四层膨胀率为1、6、12、18,是对MS-COCO数据集进行实验分析得到的,这样的设计目的是为了获得更大范围的信息,对一些大物体有较好的分割效果,而对于小物体来说可能是有弊无利了。并且由于膨胀卷积较大的膨胀率导致稀疏的采样输入信号,使得远距离卷积得到的信息之间没有相关性,影响分类结果。对于遥感图像,这样的膨胀率过大,较大的感受野反而不利于遥感图像中微小物体的分割。所以,如何调整ASPP模块中膨胀率,同时处理好大小物体的关系是设计膨胀卷积网络的关键。因此本文将ASPP模块的四层膨胀卷积的膨胀率设置为1、3、6、9,修改后的ASPP模块如图5所示。
图5 改进后的ASPP模块Fig.5 Improved ASPP module
经修改后的膨胀率从一定程度上降低了ASPP模块的感受野,平衡了网络对于大小物体的敏感度。同时,降低膨胀率使采样输入信号较为密集,缓解了膨胀率过大导致卷积失效的问题。最终使得网络能够得到对小物体更精细的分割结果。
2.2.3改进算法在复杂环境下的分割能力分析
该改进算法以DeeplabV3算法为核心,其能够从复杂环境中较好地分割出小物体,主要原因为:
(1)Resnet-50中使用的残差模块通过一个直连通道将输入信息传到输出,保护了输入场景的完整性,使得整个网络只需要学习输入与输出的差别部分。
(2)Resnet-50中block3和block4的步幅stride从2变成1,且在block4中采用multi-grid的结构,简化了对复杂场景的解析,保留了更多的原始场景的语义信息。
(3)改进后的ASPP可以很好地平衡复杂场景中大物体与小物体的语义信息获取,有助于小物体的精准分割。
(4)改进后的上采样过程,完成了对改进的ASPP模块输出信息与Resnet-50中残差的融合,能够在复杂场景中恢复小物体更加完整的空间位置信息,提升分割精度。
本文使用的数据集来自我国北方某城市的卫星遥感图像,使用谷歌地图下载,图像尺寸为10 km×10 km,对图片进行八等分裁剪,使用标注工具labelme进行标注,制作本文的数据集。
labelme是专门为语义分割算法的网络训练准备数据的工具,利用该标注工具,手动完成建筑物、道路、植被、水系四种类别的标注,最后得到json文件,操作界面如图6所示。经过数据增强后,一共得到66 666张训练集和33 333张测试集。
图6 标注界面Fig.6 Marking interface
本文采用计算机为台式电脑,配置为Intel i7-9900k,64 GB内存,Titan RTX×2,64位Ubuntu 20.04.1 LTS操作系统;开发环境为Tensorflow1.14、Opencv4.1和Python3.7。
原Deeplabv3及本文改进算法都是在tensorflow环境下运行,以66 666张遥感图像为训练集,33 333张做测试集,batch size为48,学习率为2×10-4,权重衰减使用l2正则化,权重衰减率为5×10-4。最终,平均并交比(mIou)稳定在94.92%左右,迭代至48 000次停止,如图7所示。
图7 mIou曲线Fig.7 Line chart of mIou
3.3.1本文模型检测结果
本文网络模型基于Deeplabv3,通过修改上采样模块,调整ASPP模块中膨胀率大小,使得网络对遥感图像的分割能得到更精细的结果。经过本文网络模型分割,选取了尺寸较大、场景较为复杂的真实地形进行测试,结果如图8所示。
3.3.2评价指标
本文采用平均并交比(mIou)建筑物、植被、水系、道路并交比(Iou)、像素精确度(Pixel Accuracy)作为检测评价指标。其中平均并交比和像素精确度分别定义如公式(1)和(2)所示:
对于遥感图像语义分割,说到底还是一个分类任务,预测的结果也就是四种情况:true positive(TP)、false positive(FP)、true negative(TN)和false negative(FN)。Iou是计算真实值和预测值两个集合的交集和并集之比,即公式中的k+1为类别数量(包含背景类)。pii为被正确预测的像素数量,Pij与Pji均表示被误检的像素数量。mIou则是对所有类的一个考量,将每一个类别的Iou进行相加之后平均,得到的即是基于全局的评价。像素精确度则是标记正确的像素数占总像素数的比例。pii为被正确预测的像素数量,Pij则为图片中所有的像素数量。
3.3.3ASPP模块膨胀率选择实验
本文针对环境较为复杂的城市遥感图像作为研究对象,对植被、水系、建筑物、道路进行分割。在2.2.1小节的改进下,对ASPP中膨胀率进行调整实验。实验中分别选用了膨胀率为1、2、4、8,1、3、6、9,1、4、8、12和1、6、12、18四类进行实验。实验结果如图9所示,效率分析如表1所示。
图9 不同膨胀率分割结果对比Fig.9 Comparison of segmentation results of different dilated rate
表1 不同膨胀率效率分析Table 1 Efficiency analysis of different dilated rate
对比实验结果可以看出,图9(a)、(b)在mIou与Accuracy上差距并不大,但是随着膨胀率的加大,图9(c)、(d)mIou与Accuracy明显降低。在实验结果图中也可以发现在微小建筑物与植被的分割细节上甚至是在道路的分割完整性上图9(c)、(d)是不如(a)、(b)的。且由于图9(b)mIou与Accuracy稍高,因此最终选择膨胀率为1、3、6、9的ASPP模块。
3.3.4主流分割算法对比实验
为验证本文改进网络的优越性,故与主流算法进行对比分析。因此,本文设计实验:以本文自制遥感建筑物数据集为实验数据集,6 666张作为测试集,通过本文改进网络结构(Article method)与原Deeplabv3算法、使用了Encoder、Decoder结构的U-net算法、使用了记忆池化的SegNet算法,保留高分辨率语义的HR-Net,使用双注意力机制的DANet在平均并交比(mIou)及像素准确度(Accuracy)以及能表达微小物体分割效果的植被、建筑物Iou进行比较,分割结果对比如图10所示。效率分析如表2所示。
从表2可以看出,在平均并交比(mIou)方面,原Deeplabv3算法的平均并交比为91.15%,U-net算法的平均并交比为87.95%,SegNet算法的平均并交比为86.88%,HR-Net的平均并交比为92.88%,DANet的平均并交比为95.16%,本文改进方法平均并交比为94.92%,比DANet算法略低,较原Deeplabv3算法和HR-Net算法提高了3.77个百分点和2.04个百分点;在植被并交比(Iou)方面,原Deeplabv3算法的并交比为85.25%,DANet算法的植被并交比为86.76%,HR-Net算法的植被并交比为82.83%,本文方法的植被并交比为88.66%,较原Deeplabv3算法及DANet算法提高了3.41个百分点和1.9个百分点。在建筑物并交比(Iou)方面,原Deeplabv3算法的并交比为90.06%,DANet算法的建筑物并交比为90.50%,HR-Net算法的建筑物并交比为91.64%,本文改进方法的建筑物并交比为93.83%,较原Deeplabv3算法及DANet算法提高了3.77个百分点和3.33个百分点。对于像素准确率(Pixel Accuracy)本文改进方法(Article method)达到了98.01%,较原Deeplabv3算法,DANet算法,分割效果最差的SegNet算法分别提高了2.40个百分点、0.67个百分点和4.16个百分点。
故本文方法在保持了原算法大物体分割精度的基础上,提高了平均并交比和像素准确率,对微小物体有着更好的分割精度,对遥感图像的语义分割效果更好。
本文针对遥感图像的语义分割,对复杂环境下的微小物体分割难度大的问题进行研究,提出了基于深度学习的Deeplabv3改进算法,以修改上采样模块,调整ASPP模块膨胀率构建了一个适合遥感图像分割的网络模型,加强了对复杂环境下小物体的分割能力。实验结果表明:本文所提出的网络模型有效地解决了对植被、建筑物等小物体的分割能力差的问题,提升了分割精度,具有很好的分割效果。