融合多尺度特征的改进Deeplab v3+图像语义分割算法
2022-11-22张文博王庆力
张文博, 瞿 珏, 王 崴, 胡 俊, 王庆力
(空军工程大学,西安 710000)
0 引言
图像的语义分割结合了图像分类、目标检测和图像分割,是计算机视觉系统中一个基础且长期存在的问题。深度卷积神经网络(Deep Convolution Neural Network,DCNN[1])在语义分割方面是非常有效的,即用一类目标或非目标标记每个区域或像素。语义分割在图像理解中起着重要作用,是图像分析任务的基础。深度卷积神经网络的优势在于具有比传统的手工表示学习更强的学习能力,它在计算机视觉和人工智能——自动驾驶[2-3]、机器人导航[4]、工业检测[5]、遥感[6]、军事[7]和医学影像分析等领域均具有较高的实用价值和发展前景。
Deeplab系列在基于深度神经网络的语义分割模型中是成功且非常流行的。CHEN等[8]提出的Deeplab v1模型,首次提出并采用了空洞卷积,在增加图像感受野的同时保证了特征图尺寸不变,从而替代上采样和下采样;还采用了条件随机场(Conditional Random Field,CRF)平滑分割边界,以此来减小边缘噪声。Deeplab v2[9]在Deeplab v1的基础上增加了空洞空间金字塔池化(Atrous Spatial Pyramid Pooling,ASPP),保持特征图不变,结合扩张卷积、ASPP和全连接CRF,利用到了多尺度信息,通过不同的空洞率获取图像多尺度特征,增强了对图像不同尺度的预测能力。Deeplab v3[10]在Deeplab v2的基础上,将主干网络替换成了残差网络ResNet,串行的空洞卷积加深,并去除了条件随机场(Conditional Random Field,CRF),模型更加简洁、易懂,融合了改进的ASPP、批归一化和更好的多尺度上下文编码方法,从而进一步提高了模型的分割性能。但是Deeplab v3只是通过对深度神经网络提取到的图像浅层特征和ASPP聚合上下文信息得到的深层特征拼接,对得到的融合特征进行分类直接得到分类结果,而这种方法得到的最终结果,由于获取的浅层特征只是主干网络多层浅层特征中的一个,导致部分有效信息的丢失,出现分割不连续和分割边界粗糙等现象。在Deeplab v3+的众多改进算法中,文献[11]提出增加边界提取模块缓解边界模糊问题,且在实验结果上实现了算法的提升,缓解了边界模糊问题,提高远距离目标边界预测的准确性。
针对语义分割出现的图像边缘部分信息的“丢失”,甚至出现的错误分割、遗漏分割等现象,本文借鉴Deeplab v3+语义分割框架并针对其不足之处提出改进:1) 针对主干网络ResNet引入多尺度卷积,集合多尺度信息,增加感受野,结合注意力机制,用来自动学习注意力权重,获取编码器隐藏状态(候选状态)和解码器隐藏状态(查询状态)之间的相关性,丰富语义信息;2) 在空洞空间池化卷积金字塔中,引入深度可分离卷积,在对结果影响不大的前提下可减小模型大小,减少模型参数量,提高训练效率,甚至可使模型在较低配置的服务器上运行;3) 在解码器设计多尺度特征提取结构,有助于获取全局和局部环境,通过将多个尺度的特征融合,获取更丰富的全局语义信息,在与浅层特征合并前,使用注意力机制,在较少干扰的同时,获取更多的通道权重,增强模型的学习能力。
1 改进的Deeplab v3+算法
改进的Deeplab v3+网络结构如图1所示,主要结构依然是编码器-解码器结构,原始算法所采用的主干网络为ResNet[12],改进网络目的在于改善在语义分割任务中出现的信息“丢失”,错误分割、遗漏分割等现象。
图1 改进的Deeplab v3+网络结构图Fig.1 The improved Deeplab v3+ network structure
主要改进点如下:
1) 在编码层,对主干网络进行改进,引入PyConv[13],可以在主干网络不同层使用不同深度的卷积核,将输入特征划分为不同的组并独立地进行卷积计算;
2) 将空洞空间卷积池化金字塔(Atrous Spatial Pyramid Pooling,ASPP)中的普通卷积替换为深度可分离卷积,即将所有3×3的卷积层变为3×3的深度可分离卷积,减少网络层的参数,在对运行结果影响不大的前提下加快训练效率;
3) 在解码层,主要通过合并主干残差网络不同阶段的输出,对原先算法进行改进。
由于主干网络每一层产生的特征图都对最后的分割图起到关键的作用,而原始分割网络Deeplab v3+只使用了第1层的高分辨率特征,即使用1/4大小的特征图。本文利用第2层和第3层输出的特征图,特征图大小分别为1/8,1/16和1/16,其通道数分别为512,1024和2048,先将各个特征层输出的结果进行双线性插值操作并上采样;利用1×1的卷积将其通道数都降为64,将输出的3个特征图进行通道叠加变成1/4大小、通道数为128的特征图,将其通过注意力机制模块CBAM[14],使网络更容易关注到提取特征的关键位置,增加网络对边缘特征的提取度;将注意力机制处理后的特征图和浅层特征、4倍上采样后的深层特征叠加,通过3×3的卷积调整通道数为256;最后通过上采样将特征图恢复原始图片大小,通过分类器将特征图分为预先设定的类别输出。
1.1 引入金字塔卷积的残差网络
Deeplab v3+使用的主干网络为ResNet,原始残差块采用3×3的卷积核。
由于在ResNet中增加卷积核的大小会带来参数量和计算复杂度的巨大成本,针对此,本文使用文献[12]提出了金字塔卷积(PyConv),它包含不同大小和深度的不同级别的卷积核。除此之外,PyConv非常高效,它可以保持与标准卷积相似的参数数量和计算成本,在不影响计算效率的同时增加模型的表现效果。
本文使用了引入金字塔卷积的残差块,新残差块如图2所示,其中,金字塔卷积核结构如图2上部所示,金字塔卷积过程在图中也已经给出。
图2 引入金字塔卷积的残差块Fig.2 The residual block introduced with pyramidal convolution
引入PyConv的主要思想是对金字塔卷积(PyConv)将输入特征划分为不同的组并独立地进行卷积计算,与主干网络结合时,考虑到特征图的空间尺寸减小,分支数逐渐减少。最初阶段特征图通过4个分支,最后阶段特征图通过1个分支。与标准卷积相比,PyConv可以在不增加计算成本的情况下扩大核的接受域,它还可以并行应用不同类型的核处理输入,具有不同的空间分辨率和深度,因此,新的残差块可以捕获更详细的信息。金字塔卷积核在网络第1层将输出的通道分为4组,每组使用卷积核大小分别为3×3,5×5,7×7,9×9,输出通道数分别为64,64,64,64,对应的分组卷积组数分别为1,4,8,16;第2层将输出的通道分为3组,每组使用卷积核大小分别为3×3,5×5,7×7,输出通道数分别为128,128,256,对应的分组卷积组数分别为1,4,8;第3层将输出的通道分为2组,每组使用卷积核大小分别为3×3,5×5,输出通道数分别为512,512,对应的分组卷积组数分别为1,4;第4层使用3×3卷积核对所有通道进行卷积,分组数为1。
1.2 改进的ASPP模块
深度可分离卷积[15]分为两步,通过其操作可以在仅损失少量精度的前提下,大幅减少模型参数量,提高所应用模型的训练效率。深度可分离卷积将传统卷积分解为一个深度卷积和一个1×1卷积。
在空洞空间池化金字塔中,将普通卷积替换为深度可分离卷积。先对输入特征图进行逐通道3×3卷积,使其通道分离,之后通过1×1卷积进行特征拼接,改进的ASPP模块在图1的ASPP模块中体现,最后将输出的特征图拼接,通过深度可分离卷积降低其通道数,去除无用特征。替换深度可分离卷积的ASPP模块可以减少模型参数,并可在对模型精度影响不大的前提下,提高模型的训练效率。
1.3 多尺度特征融合
近年来,改进模型鉴别能力、提升图像边缘分割能力的手段包括采用多尺度融合的方法。一个典型例子就是ZHAO等[16]提出的一种金字塔网络,通过聚合多个膨胀卷积块生成的特征图,充分利用不同尺度的语义信息。
(1)
图3所示为神经网络再融合不同层特征对模型进行预测时的作用展示。由于图像通过神经网络处理输出后图像的通道数不一致,比如图3(b),浅层特征通道数为64,即共有64张和图3(b)类似的图片,本文展示部分特征图像。可以看出神经网络特征层数越深,图像越抽象。
图3 神经网络部分特征层效果
2 实验设计
2.1 实验数据集和实验环境
为了确保实验的有效性,本文实验分别使用公共数据集CityScapes的验证集完成实验并验证模型的泛化能力。
公共数据集CityScapes为城市景观数据集,其中包含从50个不同城市的街景中记录的各种立体视频序列,除了更大的20 000个弱注释帧之外,还有高质量的5000帧像素级注释。CityScapes数据集中的训练集、验证集和测试集总共有5000张精细注释,2975张训练图,500张验证图和1525张测试图,每张图片大小都是1024 像素×2048 像素。
实验所用设备CPU为Intel®CoreTMi7-10870H CPU@2.20 GHz,GPU为NVIDIA Geforce GTX 3080,所用操作系统为Windows10,基于Pytorch网络框架使用Python3.7编写实现,采用Cuda11.1库加速。
2.2 训练策略
由于设备性能的限制,在CityScapes数据集训练时,使用随机梯度下降(SGD)优化算法,动量(momentum)设置为0.9,权重衰减(weight decay)设置为0.000 1,基础学习率设置为0.1,学习率衰减使用“Poly”衰减策略,通过反向传播进行端到端的训练。在CityScapes训练集上训练时,最大迭代步数设置为50 000。
本文通过迁移学习的方式,使用PyConvResNet-50在ImageNet训练好的预训练模型权重,对其进行微调。通过迁移学习,可以有效地预防梯度消失和梯度爆炸问题,并使自己的网络训练速度和收敛速度更快,节省了学习的时间,提高了学习效率。
训练损失函数采用交叉熵函数(Cross-Entropy),主要用于度量两个概率分布间的差异性。多分类交叉熵损失函数算式为
(2)
式中:M为类别的数量;yic为指示变量,如果该类别和样本i的类别相同就是1,否则就是0;pic为对于观测样本i属于类别c的预测概率。
本文采用的评估方法是平均交并比(Mean Intersection over Union,MIoU),其算式为
(3)
式中:pi i为像素实际类别是i类、真正类别是i类的像素总数;pj i为实际类别是j类、预测类别是i类的像素总数;pi j为像素实际类别是i类、预测类别是j类的像素总数。
2.3 实验结果和模型性能分析
2.3.1 模型性能对比
为了衡量所提出改进方法的性能,验证其有效性,将本文提出的Z_Deeplab v3+和Deeplab v3,Deeplab v3+这些原始算法比较之外,还与HRNet[18]和CCNet[19]这些最新、最优模型在CityScapes验证集上进行实验验证,预测结果如表1所示,表2为模型参数和详细量化信息。
表1 不同模型在CityScapes验证集上的性能对比
表2 模型参数和详细量化信息
结合表3、表4可以看出,尽管Deeplab v3+相比于其他语义分割模型有较为优异的结果,但是本文构建的模型获得了更具有竞争力的结果,MIoU为74.76%,相较于Deeplab v3+高出了2.20%,且由于其改进ASPP模块的原因,减少了模型参数量。
相比于Deeplab v3+而言,本文模型参数量更少,尽管延长了训练时间,但是本文模型仍获得了更好的训练效果。
2.3.2 融合不同尺度效果对比
融合多尺度特征是语义分割中提高准确率的有效方法。由于低层特征分辨率更高,包含更多位置、细节信息,但是由于经过的卷积更少,其语义性更低,噪声更多。高层特征具有更强的语义信息,但是分辨率很低,对细节的感知能力较差。因此,本文探究如何将两者高效融合,并进行实验。
本文为了验证融合不同层的特征对模型预测结果的影响,使用控制变量法验证各个方案改进后的效果,测试结果如表3所示。
表3 融合不同尺度效果对比
从表3可以看出,采用主干网络3个Block的特征融合比采用2层Block的特征融合表现效果好,因此,手动设置网络选取主干网络Block2,Block3,Block4的特征进行融合的方法是可取的,并且取得了较好的效果。
2.3.3 采用深度可分离卷积的ASPP模块训练时间和模型参数对比
为了验证改进的ASPP模块对实验结果的影响和对训练时间、训练效率的提升程度,本文对ASPP模块改进之前和改进后的效果做了比较,实验结果如表4所示。
表4 改进ASPP模块的影响
从表4可以看出,改进的ASPP模块对减少参数量和加快模型训练效率有效果,可以缩短整体模型的训练时间,并且对实验最终精度的影响不大。因此,本文选择引入深度可分离卷积进行模型设计。
2.3.4 本文算法与其他模型方法对比
本文算法与Deeplab v3+模型在CityScapes验证集上的分割结果进行对比,如图4所示。
图4 CityScapes验证集分割结果对比Table 4 Comparison of segmentation results on CityScapes dataset
由图4可看出,改进的算法精度的高低与模型分割结果的效果呈现正相关,可用模型精度的高低判断模型分割结果的效果。对比第1列图片,本文算法模型边界明显清晰于其他模型,识别出了第1列电线杆上的交通灯并将其分割出来。除此之外,在本文算法模型分割结果右侧方框内没有出现路标标志,没有出现错误分割和分割模糊的现象。对比第2列,本文算法模型对路牌和路标等图像信息分割结果清晰,其余模型错误分割了右侧方框内的路标,本文算法模型避免了此类分割错误,预测结果更加准确全面。
3 结束语
本文针对Deeplab v3+模型错误分割、边界模糊等现象,提出了相应的改进方案。通过融合多尺度特征和注意力机制,有效地提取了图像的多尺度特征信息;并通过引入深度可分离卷积,减少了模型参数,提高了模型训练效率。通过实验本文提出的模型在公开的数据集CityScapes验证集上的MIoU达到了74.76%,同时,分割结果也证明了模型对边界信息提取的有效性。本文算法虽然较之前的算法在精度上有所提升,但是采用的多尺度组合方式为手动设置,没有探究最优的多尺度融合方式,在后续的工作中,会深入研究如何进一步增强模型表现力,并进一步提升模型在实际数据集中的分割效果。