语义发割

1 绪论
1.1 研究背景及意义
语义分割是指将像素按照图像中表达语义含义的不同进行分割,如图1.1所示,左边图像为待分割的原始图像,右边为相应的语义分割图,语义分割即将原始图像中不同类别的像素分配相应的标签。语义分割是图像理解中最重要的基础性技术之一,是计算机视觉领域的研究重点,在自动驾驶系统、无人机以及可穿戴式设备的应用中占有非常重要的地位。

                    图1.1.1 原始图像   图1.1.2 语义分割图

图1.1 语义分割示意图
近几年,深度学习的迅速发展为许多难以推进的计算机视觉任务带来了新的曙光。深度学习相比于传统方法,能够针对当前问题自动学习合适的特征表示。深度学习的应用很大程度上提高了语义分割的准确率,然而,相比于其他视觉分析任务,语义分割具有更大的挑战性。若直接使用深度学习中的图像分类模型进行语义分割,存在着一定的局限性:(1)一幅图像中庞大的像素点数量会增加计算复杂度;(2)尽管图像分类模型在提取图像的高层次语义特征方面优势明显,但会损失低层次的位置、边缘轮廓等细节信息,从而降低语义分割的精度。因此,如何针对语义分割任务本身的特点设计深度学习算法,是当前研究的热点。
1.2 国内外研究现状及发展趋势
1.2.1 语义分割技术研究现状
传统的语义分割方法大多采用概率图模型条件随机场对像素进行分类,这种基于手工特征提取的传统方法无法满足复杂场景的图像处理要求。近年来,研究者将基于深度学习的图像分类模型加以改进,应用于语义分割领域,大大提高了分割准确率。
传统的语义分割方法大多采用基于图像像素点的条件随机场,Philipp等人结合全局语义信息提出的全连接条件随机场[1](fcCRF)对一幅图像中的每对像素点进行建模,其模型的能量函数包括基于单个像素点的一元势能函数和基于相邻像素的点对势能函数,并通过高效的平均场近似推理算法求解模型。实验证明fcCRF得到比较理想的分割准确率,但一元势能需要手工设计特征提取器来得到,对场景复杂的数据集表现不佳。
近年来,VGGNet[2]和ResNet[3]在图像分类领域取得了巨大的成功,但将分类模型运用在语义分割领域存在以下困难:(1)图像分类模型输出为一维向量,无法得到与原图尺寸大小一致的分割图;(2)分类模型中的下采样(max pooling)过程损失了很多细节信息,无法得到准确的分割图。为此,Long等人将VGGNet的全连接层改为卷积层,提出全卷积神经网络FCN[4],利用FCN得到二维的特征图后,再利用转置卷积[5]将得分图恢复为与输入图像尺寸大小相同的分割图。针对下采样过程导致的细节损失问题,作者采用将深层语义信息与浅层位置信息融合的方式,得到更加准确的分割图。
FCN是深度学习应用在语义分割领域的开山之作,但还存在几点问题:通过CNN得到的特征图太稀疏,丢失了很多的细节信息;只能处理包含单一尺度物体的图像,无法获取原始图像中的多尺度信息。针对FCN存在的问题,Liang-Chieh Chen在DeepLab[6]一文中进行了改进,将全卷积神经网络和概率图模型进行了融合,DeepLab的主要贡献有:(1)使用了空洞卷积。空洞卷积在不增加参数数量的情况下增大了感受野,从而在减小池化层步长得到更加密集的得分图的情况下,保证足够的分类准确率;(2)提出了在空间维度上实现金字塔型的空洞池化 (ASPP)。采用不同采样率的并行空洞卷积层,可以实现对图像的多尺度处理;(3)后端使用全连接条件随机场对边缘轮廓等细节信息进行优化。前端利用改进后的FCN得到原始的分割图,后端加入fcCRF进行优化,得到了更精细的分割图。由于fcCRF的存在,DeepLab无法实现端到端的训练,因此,CRF-RNN[7]将FCN和fcCRF融合到一个网络中,实现了端到端的训练。DPN[8]通过神经网络来近似MRF模型中的一元势能和点对势能,同样可以实现端到端的训练。
为了更好地恢复细节信息,Vijay Badrinarayanan等人提出SegNet[9],SegNet采用对称的编解码器结构,将FCN的全连接层去掉构成编码器,并将FCN中的转置卷积层换成与编码器对称的解码器,解码器由池化层和卷积层组成,其作用为利用编码器产生的特征图得到分割图。相比于FCN,去掉全连接层以及在最大池化层记录位置索引用于解码器减少了参数数量,节省了大量的存储空间,解码器层数的增多进一步增加了分割的准确率。Deconvnet[10]结构与SegNet相似,Deconvnet通过与编码器对称的转置卷积层逐步提高分辨率,获得语义分割图。
在残差网络ResNet提出后,其在图像分类领域的准确率远远超过了VGGNet,因此,当前取得较高分割准确率的网络模型都是基于ResNet进行改进。语义分割的主要问题出现在FCN不能对场景之间的关系和全局信息进行有效地处理。Parsenet[11]在FCN的基础上,通过平均池化来结合全局语义信息可以优化分割结果,但无法满足复杂场景需求。因此,Zhao H等人提出能够获取全局场景的深度网络PSPNet[12],PSPNet能够融合原始图像中的全局特征和局部特征,提高了分割的准确率,并提出了一个适度监督损失的优化策略,减少了网络的训练时间,在多个数据集上表现优异。RefineNet[13]提出了多条路径细化网络来获取下采样过程中的所有信息,它采用残差长连接,通过RefineNet将高精度的特征图逐步融合低精度的特征图,减少了下采样过程中细节信息的损失,进一步提高了分割的准确率。
基于残差网络的语义分割模型在当前主流的数据集上取得了最高的分割准确率,在此基础上,采用特征图逐层融合的方式来减少下采样过程损失的细节信息以及结合多尺度语义信息,进一步改善了模型分割的效果。
1.2.2 语义分割技术发展趋势
图像语义分割技术发展迅速,取得了丰硕的研究成果,但还存在很多问题,如模型过于复杂,无法满足实时性等。综合上述深度学习在语义分割领域的应用,未来的发展和研究方向主要体现在以下几方面:
(1)实时分割[14]。降低模型的复杂度,在保证分割准确率的同时,减少图像分割所需的时间,从而满足实际应用中对实时性的要求;
(2)半监督或弱监督的标注[15]。采用半监督或弱监督的标注的方法,可以节省像素级标注的成本,并且能够更好地定位和分割物体;
(3)三维数据的有效分割[16]。现有的语义分割模型大多用于处理二维图像,而在现实生活中,包含许多三维场景图像,因此,如何根据三维数据的特点设计有效的深度学习算法是未来的一个发展方向。

1.3 本文主要研究内容及结构安排
1.3.1 主要研究内容
对于语义分割任务,图像分类模型中的池化等下采样操作,导致了细节信息的损失;原始图像中存在不同尺度物体的问题也会导致分割准确率的下降。为解决上述问题,本文在实现基于残差网络的多路径优化分割算法的基础上,提出一种基于编解码器与多尺度特征融合的语义分割模型。编码器由特征提取网络和多尺度池化模块组成,用于获取原始图像中不同尺度的语义信息;解码器将不同层次的特征图进行融合,减少下采样过程中细节信息的损失。融合后的特征图通过一个链式池化模块后作为解码器的输出,并上采样到原始图像大小,从而得到最终的语义分割图。
1.3.2 全文结构安排
全文由五章组成,每章具体结构如下:
(1)第一章,绪论。主要介绍语义分割的研究背景及意义,阐述语义分割技术的国内外研究现状、发展趋势以及本文的研究内容和结构安排;
(2)第二章,卷积神经网络相关理论知识。介绍采用深度学习方法解决语义分割问题所涉及到的卷积神经网络的相关知识;
(3)第三章,实现基于残差网络的多路径优化语义分割,并具体介绍该算法网络结构中的各部分组成;
(4)第四章,提出基于编解码器与多尺度特征融合的图像语义分割。阐述该模型中编解码器结构的设计思想;
(5)第五章,模型评估。将第三章和第四章的模型进行验证,并对实验结果进行对比分析;
最后为结论,对全文进行总结。

2 深度学习中卷积神经网络相关理论
在深度学习中,卷积神经网络是一种前馈神经网络,卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法,其在计算机视觉领域的成功应用,极大地促进了传统图像处理领域的发展。
2.1 卷积神经网络的基本概念
卷积神经网络(CNN)最早由Yann Lecun提出,用于手写体数字的识别[17],并取得了很高的识别准确率,近年来,卷积神经网络在物体检测与识别、语义分割等多个传统方向上实现了很大的突破。
CNN与普通神经网络的区别在于,CNN包含一个由卷积层和池化层构成的特征提取器。在CNN的每个卷积层中,通常包含若干个特征平面(feature map),每个特征平面由数量不等的神经元组成,一个神经元只与相邻层的部分神经元连接,同一特征平面的神经元共享权值,即共享卷积核,一般以随机小数矩阵的形式对卷积核进行初始化。在网络的训练过程中,通过梯度反向传播算法,卷积核将学习到合理的权值。共享权值带来的直接好处是在减少了网络参数数量的同时,又降低了模型过拟合的风险。池化(pooling)操作通常包含平均池化(mean pooling)和最大值池化(max pooling)两种形式。池化可以看作一种特殊的卷积操作。卷积和池化操作大大简化了模型复杂度,从而可以更加有效地训练模型。
2.2 卷积神经网络中的批归一化
像激活函数层、卷积层、全连接层以及池化层一样,批归一化[18](BN)也属于网络中的一层,用于对输入网络中每一层的数据做归一化处理。
深度神经网络训练过程中的每一个细节都有可能影响模型训练的有效性,一旦网络中某一层的输入数据分布发生改变,那么这一层.网络就需要去适应学习新的数据分布,所以,如果在训练的过程中,训练数据的分布一直在发生变化,那么将会影响网络的训练速度。因此,训练数据在通过网络中的各层之前,先经过BN层进行归一化处理,将输入数据转化成相同的分布,从而加快模型的训练。
BN算法具体如下:

其中,为每一层的输入,公式(2.1)首先计算输入数据的平均值,然后利用公式(2.2)计算输入的方差。得到均值和方差后,通过公式(2.3)计算归一化后的值,为保证的稳定性,需在方差后加入一个常数。为了让网络可以学习复杂的特征分布,引入可学习参数和,通过与的线性组合,作为BN层最后的输出。
BN算法主要具有以下作用:
(1)有利于梯度的反向传播,避免梯度消失;
(2)允许更大的学习率,大幅度提高训练速度;
(3)减小对初始化的强烈依赖;
(4)改善正则化策略,作为正则化的一种形式,减少了对Dropout[19]的需求,提高了网络的泛化能力。
2.3 卷积神经网络的经典结构
2.3.1 VGGNet
VGGNet[2]由牛津大学的视觉几何组提出,是ILSVRC-2014中分类任务第二名,
VGGNet的主要贡献在于证明使用很小的卷积核(3×3),增加网络深度可以有效提升模型的效果。
VGGNet及其全卷积化结构如图2.1所示。VGGNet中的卷积层不改变特征图的大小,但特征图每经过一个池化层,尺寸变为原来的1/2,VGGNet总共包含5个池化层,当输入图像经过一系列的卷积层和池化层后,输出特征图为输入图像大小的1/32,最后通过三层全连接层,输出该图像中物体所对应每一类别的概率。将全连接层改为卷积层所构成的全卷积网络可应用到语义分割领域中去。

图2.1 VGGNet及其全卷积化结构图
2.3.2 ResNet
ResNet[3]由何凯明等人提出,在ImageNet比赛分类任务上获得了第一名,大幅度提高了分类准确率。由理论可知,随着网络层数的增加,模型拟合非线性数据的能力越强,分类准确率越高,但在实验的过程中,随着网络的加深,出现了验证集准确率下降的现象,可以确定这不是由于模型过拟合造成的,何凯明针对这个问题提出了一种全新的网络,叫深度残差网络,它允许网络的层数尽可能的增多,提高分类准确率。
残差网络的核心思想是计算层到层的残差,即,残差网络由一系列的残差单元组成,残差单元结构如图2.2所示。在每一个残差单元中,令作为输入,以作为经过ReLU激活函数前的输出,即将作为需要多层神经网络去拟合的目标函数。如果假设多个非线层可以逐渐近似一个复杂的函数,那么等价于假设这些非线层可以逐渐近似残差函数,即。因此,与其让这些层近似,不如让这些层直接近似这个残差函数。实验证明,采用残差结构有利于梯度的反向传播,在层数增多的情况下,有效避免了梯度消失的问题,加快了模型的收敛速度,提高了分类的准确率。

图2.2 残差单元
残差单元所采用的激活函数为ReLU(The Rectified Linear Unit)函数,如图2.3所示。ReLU函数可以避免参数更新过程中的梯度饱和问题,加快了模型的收敛速度。ReLU函数表达式如下:
f(x) = max(0,x) (2.5)
其中,x为ReLU函数的输入,f(x)为ReLU函数输出的值。

图2.3 ReLU激活函数
在 ResNet的原始形式中,根据输出特征图分辨率的大小将其分为四个模块,每个模块包含不同数量的残差单元。这些残差单元执行一系列的卷积运算,同时,每个模块都夹杂了最大值池化操作来减少空间维度。连续的下采样操作的主要作用有以下两点:(1)下采样操作可以增大卷积核的感受野。对于高层次的分类任务,可以获取更多的全局语义信息,有利于提高分类准确率;(2)有利于更加高效地训练模型。网络模型中大量的卷积核在每一层卷积层都会产生相应通道数的输出,因此,必须通过下采样操作降低特征图的分辨率来加快模型的训练。
在当前物体分类领域采用的残差网络中,大多使用了预激活残差单元[20](pre-activation Residual Unit),预激活残差单元与图2.2所示的残差单元的唯一区别在于批归一化和ReLU激活函数的放置顺序。如图2.4所示,对于预激活残差单元,批归一化和ReLU激活函数出现在卷积层之前,与此同时,在预激活残差单元中使用BN能够提高模型的正则化,减少过拟合的影响。实验证明,采用预激活残差单元的网络结构可以获得更高的分类准确率。
2.4 卷积神经网络在语义分割中的应用
经典的卷积神经网络如AlexNet[21] 、VGGNet和ResNet在传统的图像分类领域取得的巨大成功促进了语义分割技术的发展,但将分类模型运用在语义分割领域存在以下困难:

图2.4.1原始残差单元 图2.4.2 预激活残差单元
图2.4 不同结构的残差单元
(1)图像分类模型的输出为一维的各类别物体所对应的概率,选取概率大的为该图像中物体所对应的类别,而语义分割要得到一幅与原始图像大小相同的分割图,因此全连接层须舍弃;
(2)分类模型中的下采样(max pooling)过程损失了很多边缘轮廓等细节信息,无法得到准确的分割图。
针对图像分类模型在语义分割任务中的局限性,Jonathan Long等人将VGGNet的全连接层改为卷积层,提出了全卷积神经网络FCN,得到二维的特征图后,再利用转置卷积将得分图恢复为与输入图像尺寸大小相同的分割图,FCN模型见图2.5。针对下采样过程导致的细节信息损失问题,将深层语义信息与浅层位置信息融合,可以得到更加准确的分割图。将不同尺度的原始图像[22]输入FCN,再将输出结果融合,同样可以提高分割准确率。

图2.5 全卷积网络语义分割模型
2.5 本章小结
本章首先介绍了卷积神经网络的基本概念,卷积神经网络通常包含卷积和池化两种操作,并采用权值共享的方式减少了模型的参数数量,简化了模型复杂度。BN层作为正则化的一种方法,加快了模型的训练。在此基础上,介绍了两种经典的卷积神经网络:VGGNet和ResNet,这两种网络作为基本的特征提取网络,已广泛应用于其它计算机视觉任务中。最后,针对传统图像分类模型在语义分割任务中的局限性,简要介绍了全卷积神经网络的基本结构及其改进方法。

3 基于残差网络的多路径优化语义分割
本章实现基于残差网络的多路径优化语义分割。下采样的过程中,不同层次的特征图所包含的信息都有助于获得高精度的分割图,其中,高层次低分辨率的特征图主要包含语义信息,低层次高分辨率的特征图主要包含图像的边缘轮廓等细节信息,为结合不同层次的特征图,本算法基于预训练的残差网络,采用残差长连接的方式,高分辨率的特征图通过特殊设计的RefineNet结构逐步融合低分辨率的特征图,从而减少了下采样过程中细节信息的损失,极大地提高了语义分割的准确率。
3.1 构建多路径优化网络模型
如上所述,多路径优化分割算法主要通过特殊设计的RefineNet将不同层次的特征图进行融合。RefineNet提供了一种通用的方法将高层次的稀疏语义特征和低层次的细节特征进行融合,并产生高分辨率的特征图。该模型的关键是采用残差长连接的方式,以确保梯度的有效传播,从而使模型可以进行端到端的训练。
基于残差网络的多路径优化分割算法的总体网络结构如图3.1所示。将预训练的残差网络ResNet分为四部分,并命名为Block-1, Block-2, Block-3, Block-4,每部分产生相应分辨率的特征图,分别为原始图像大小的1/4,1/8,1/16,1/32,同时,采用四个RefineNet,命名为RefineNet-1,RefineNet-2,RefineNet-3,RefineNet-4,分别与ResNet Block相对应,用于融合不同分辨率的特征图,尽管所有的RefineNet都采用相同的结构,但它们各自的网络参数是独立的,使其可灵活的应用于不同层次的特征图。
从残差网络的最后一个模块开始融合,首先将ResNet每个模块输出的特征图通过一个卷积层进行维度的调整,将ResNet Block-4经维度调整后输出的特征图作为RefineNet-4的输入,并输出相同分辨率的特征图,不同于其它三个RefineNet,RefineNet-4只有ResNet Block-4的输入,所以不进行特征图的融合,只是对ResNet Block-4输出的特征图做额外的卷积。
接下来,将RefineNet-4与ResNet Block-3输出的特征图作为RefineNet-3的输入,RefineNet-3的作用是将ResNet Block-3产生的高分辨率的特征图和RefineNet-4产生的低分辨率的特征图进行融合。
RefineNet-2和RefineNet-1重复上一步,将相应残差模块产生的高分辨率特征图和RefineNet产生的低分辨率特征图进行融合,并得到最终的特征图。通过softmax层,将最终的高分辨率特征图转化为每个像素点的类别得分图,并通过双线性插值,将得分图上采样到与输入图像相同的尺寸,从而得到最终的语义分割图。
整个网络可以有效的进行端到端地训练,主要原因是在ResNet和RefineNet之间引入了残差长连接。在前向传播的过程中,可以通过RefineNet采用残差长链接的方式,将低层次的细节信息和高层次的语义信息相融合。在模型训练的过程中,梯度可以通过残差长连接直接传递到浅层中,有利于模型参数地更新,使模型更加有效的进行端到端地训练。

图3.1 基于残差网络的多路径优化算法网络结构

图3.2 RefineNet网络结构
3.2 RefineNet网络结构
多路径优化分割算法中的RefineNet的网络结构如图3.2所示,包含了基本的残差单元(RCU)、多分辨率融合单元(Multi-resolution Fusion)、链式残差池化单元(Chained Residual Pooling)以及输出单元。
3.2.1 残差单元
每个RefineNet模块前端由两个级联的残差单元RCU组成,RCU单元结构见图3.3.1,该单元主要用于微调预训练残差网络的参数,使该网络可用于语义分割任务中去。其中,将RefineNet-4中RCU的卷积核数设为512,其余的RefineNet中RCU的卷积核数设为256。
3.2.2 多分辨率融合单元
不同分辨率的特征图经过两个级联的RCU单元后,通过Multi-resolution Fusion单元融合成一幅高分辨率的特征图,Multi-resolution fusion单元结构见图3.3.2,该单元首先通过3×3的卷积层将不同分辨率的特征图转换成相同的维度(输入特征图中最小的维度),然后将低分辨率的特征图通过双线性差值上采样到与高分辨率特征图相同的大小,最后通过相加做融合。通过此单元,可以将下采样过程中不同分辨率的特征图进行融合,从而减少了边缘轮廓等细节信息的损失,提高分割准确率。由于RefineNet-4只有一个输入,所以其输入的特征图直接通过该模块,无需进行上采样或相加融合等操作。

图3.3.1 残差单元结构图 图3.3.2 多分辨率融合单元结构图

图3.3.3 链式残差池化单元结构图
图3.3 RefineNet模块结构
3.2.3 链式残差池化单元
通过Multi-resolution Fusion单元融合后的特征图经过Chained residual pooling单元进一步提高分割准确率,Chained residual pooling结构如图3.3.3所示。该单元通过链式的池化操作增大感受野,从而可以得到更多的语义信息,提高像素的分类准确率,同时采用残差结构有利于梯度的反向传播。
3.2.4 输出单元
每个RefineNet模块最后又接一个残差单元RCU,所以每个RefineNet模块中包含3个残差单元RCU。为了增加模型拟合非线性问题的能力,在softmax层之前又添加了两个额外的残差单元RCU。所有的特征图通过该单元通道数不变。
3.3 RefineNet中的恒等映射
受到残差连接的启发,RefineNet中各模块的设计思想都遵循残差连接中的恒等映射[20]。采用恒等映射的连接方式可以使梯度有效地通过RefineNet进行反向传播,有利于该多路径优化分割网络进行端到端的训练。
采用带有恒等映射的残差连接的方式构建网络模型使得梯度可以从一个模块直接传递到其它模块,所以在设计各个模块时,残差连接中的恒等映射尽量不要包含其它非线性层。在设计RefineNet中的各模块时也遵循了这种思想。在链式残差池化模块中,特征图在输入的过程中首先会通过非线性激活ReLU函数,该ReLU函数有利于接下来的池化操作,并且降低模型对学习率变化的敏感程度。尽管加入了一个非线性激活函数,但不会明显的降低梯度传播的有效性。
RefineNet中既包含残差短连接又包含残差长连接。RCU和链式残差池化模块中为残差短连接,ResNet各模块和RefineNet单元之间为残差长连接。由于残差长连接的存在,梯度可以直接传递到ResNet的浅层中进行网络参数的更新,使得网络中的各模块都可以进行端到端地训练。
3.4 本章小结
本算法基于预训练的残差网络,通过多路径优化模块RefineNet将不同层次的特征图进行融合,减少了下采样过程中细节信息的损失。其中,RefineNet主要包含四部分,残差单元RCU用于微调预训练的残差网络,多分辨率融合单元用于将不同层次的特征图进行融合,链式残差池化单元用于增大感受野,提高像素的分类准确率,输出单元用于增强模型拟合非线性数据的能力。本算法整体采用残差连接的方式,有利于梯度的反向传播,加快了模型的训练。

4 基于编解码器与多尺度特征融合的语义分割
本章提出基于编解码器与多尺度特征融合的语义分割。本章模型的网络结构主要包含由特征提取网络和多尺度池化模块组成的编码器以及一个简单有效的解码器。编码器用于获取原始图像中不同尺度的语义信息;解码器将不同层次的特征图进行融合,减少下采样过程中细节信息的损失。最后,将融合后的特征图通过一个链式池化模块,并上采样到原始图像大小,从而得到最终的语义分割图。相比于多路径优化分割算法,该算法在将深层与浅层特征图进行融合的同时,还通过多尺度池化模块提取原始图像中的多尺度语义信息,进一步提高了分割准确率。
4.1 基于空洞卷积的特征提取网络
全卷积神经网络(FCN)在语义分割任务中取得了良好的效果,但是,由于池化层的存在,FCN输出的特征图被下采样为原始图像大小的1/32;下采样在扩大感受野、保证像素分类准确率的同时,也导致了分辨率的下降和细节信息的损失。为了平衡两者之间的矛盾,编码器采用空洞卷积[23]提取特征,从而在获取更高分辨率特征图的同时,保证感受野的大小,提高分割准确率。
空洞卷积是具有一个扩张因子的常规卷积,其主要作用是扩展滤波器的感受野。在二维信号中,对输出信号中位置i处的值和滤波器w,空洞卷积对输入信号的处理可用公式表示为:

其中,r为扩张因子,表示对输入信号的采样步长,k为滤波器的大小。
以3×3卷积滤波器为例。当扩张因子等于1时,空洞卷积操作与标准卷积类似,如果将扩张因子设置为2,则具有扩大卷积核的效果。理论上,空洞卷积的工作原理如下:(1)根据扩张因子对卷积滤波器进行扩张,并用零填充空白空间,创建稀疏的卷积滤波器;(2)使用扩张后的卷积滤波器对图像进行常规卷积操作。图4.1所示为不同扩张因子下卷积滤波器的大小,当扩张因子为n时,在卷积滤波器内部两个相邻的值之间插入n-1个零作为新的卷积滤波器对图像进行卷积。例如,大小为3×3、扩张因子为2的卷积能够覆盖5×5的区域,大小为3×3、扩张因子为3的卷积能够覆盖7×7的区域。因此,空洞卷积可以在不增加参数数量或计算量的情况下增大感受野,提高像素的分类准确率。

图4.1 不同扩张因子的空洞卷积
在此,定义输出步长为输入图像和输出特征图大小的比值。在传统FCN中,输出步长为32。为获得分辨率更高的特征图,本文将残差网络最后一个池化层的步长由2设为1,则此时输出步长变为16,但感受野也会相应变小,所以将之后的卷积层都替换为扩张因子为2的空洞卷积来增大感受野。空洞卷积的应用在保证了感受野大小的同时,获得了分辨率更高的特征图,从而减少了下采样过程中细节信息的损失。如果将输出步长设为8,则可以获得分辨更高的特征图,但也加大了计算量,在增加训练时间的同时,提高了对内存的要求。因此,本模型以残差网络为基础,采用输出步长为16的特征提取网络。
4.2 多尺度池化模块及编码器设计
受到空间金字塔池化[24]的启发,特征提取网络输出的特征图通过一个多尺度池化模块来提取原始图像中的多尺度语义信息。特征提取网络和多尺度池化模块共同构成编码器,编码器结构见图4.2。
多尺度池化模块采用四个并行的不同尺度的池化层对特征提取网络输出的特征图进行平均池化操作。每个池化层分支分别得到1×1、3×3、4×4和6×6大小的特征图。其中,通过全局平均池化所得到的1×1大小的特征图用于捕获全局语义信息。经过池化操作所得到的不同大小的特征图,分别通过1×1的卷积操作进行降维处理,使其通道数均为256,再通过双线性差值上采样到与池化前原始特征图相同的分辨率。将这些特征图与降维后的原始特征图进行融合,最后通过1×1的卷积得到256维的特征图作为编码器的输出。

图4.2 融合多尺度语义信息的编解码网络结构
4.3 链式池化模块及解码器设计
在大多数语义分割模型中,编码器输出的特征图直接上采样到原始图像大小,此过程过会损失边缘轮廓等细节信息,因此,本文提出了一个能有效解决上述问题的解码网络,该网络具有简洁清晰的结构和较低的计算量。
将特征提取网络ResNet-101[3]的Conv2输出的特征图作为低层次的特征图,该特征图主要包含边缘轮廓等细节信息;将编码器输出的特征图作为高层次的特征图,该特征图主要包含深层次的语义信息。将二者上采样到相同分辨率并进行融合,从而实现了深层的语义信息和浅层细节信息的融合,减少了下采样过程中损失的细节信息,解码器具体结构见图4.2。
本算法借鉴RefineNet[13]中的链式残差池化模块,将融合后的特征图经过链式池化模块扩大感受野,提高分割准确率。链式池化模块(Chained pooling block)结构见图4.3。链式池化模块由两个池化模块组成,每一个池化模块包含一个最大值池化层和一个卷积层,前一个池化模块的输出作为后一个池化模块的输入,输入的特征图和所有池化模块的输出通过残差连接的方式求和作为最终解码器的输出。采用残差连接[20]的方式,有利于梯度的反向传播,便于模型的训练。

图4.3 链式池化模块
4.4 深度可分离卷积
随着模型复杂度的提升,对计算机内存提出了更高的要求,自动驾驶等移动终端受到的影响尤为明显。为此,该算法采用深度可分离卷积[25](Depthwise separable convolution)替换解码器中的标准卷积来对模型进行压缩,减少网络的参数数量,同时加快模型的训练速度,带有BN和ReLU的标准卷积和深度可分离卷积结构见图4.4。

图4.4.1 标准卷积 图4.4.2深度可分离卷积
图4.4 不同的卷积结构
由图4.4可知,深度可分离卷积将一个标准的卷积操作分解为一个Depthwise convolution后接1×1的卷积操作pointwise convolution,每种卷积操作后都会接BN和ReLU激活函数。深度可分离卷积的目标是减少网络的参数数量,降低网络模型的复杂度,使网络更加适合移动终端的使用。
Depthwise convolution对输入特征图的每一个通道做卷积但并不求和,pointwise convolution利用1×1的卷积对depthwise convolution的输出做融合,产生和标准卷积相同维度的输出,但参数数量约为标准卷积的1/9。实验证明,深度可分离卷积可以在不影响分类准确率的前提下大幅度减少网络的参数数量,在内存有限的情况下,更加有利于模型的训练。
4.5 采用Xception为特征提取网络
Xception模型[26]在ImageNet数据集[27]上取得了理想的分类准确率,由于采用了深度可分离卷积,相对于ResNet,Xception模型的训练速度更快。最近,微软亚洲团队[28]改进了Xception模型,进一步提高了模型的分类效果。在此基础上,为了使该模型可以应用到语义分割任务中去,Deeplab V3+[29]对模型做出进一步的改进。
简单来说,Xception模型是以残差连接的方式对深度可分离卷积进行线性堆叠。Deeplab V3+中改进的Xception模型总共包含三个模块,分别为输入模块、中间模块和输出模快,输入图像依次通过这三个模块,其中,输入模块结构见图4.5。在每个输入模块中,输入图像首先通过两个常规的卷积操作,输出特征图变为原始图像大

图4.5 Xception改进后的输入模块结构
小的一半。输入模块的组成类似于Resnet中的残差单元,每一个单元由三个深度可分离卷积组成,其中,最后一个深度可分离卷积的输出步长为2,使该单元输出特征图的分辨率变为输入的特征图的1/2,为满足相加求和时对特征图分辨率的要求,输入特征图需通过一个1×1大小、步长为2的卷积层。为了使用空洞卷积来控制输出特征图的分辨率,改进后的网络将原始Xception网络结构中的最大池化操作改为输出步长为2的深度可分离卷积,从而可以通过空洞卷积控制网络的输出步长。
中间模块由三个深度可分离卷积组成,并通过恒等映射的方式进行残差连接,特征图通过中间模块分辨率不变,中间模块结构见图4.6。改进后的Xception模型中总共有16个中间模块来提取图像的特征,相比于原始Xception模型中的8个中间模块,网络层数进一步加深。

图4.6 Xception改进后的中间模块结构

图4.7 Xception改进后的输出模块结构
改进Xception中的输出模块结构见图4.7,输出模块包含一个步长为2的深度可分离卷积,因此,改进后的Xception模型最终输出步长为32,通过修改深度可分离卷积
的步长,并将其改为空洞卷积,便可以在获得更加密集得分图的同时保证感受野的大小,从而提高语义分割的准确率。与MobileNet[25]类似,每个3×3的深度可分离卷积后都带有BN层和ReLU激活函数。
采用Xception作为编码器中的特征提取网络可以在保证分割准确率的前提下,对模型进行有效的压缩,降低了对内存的要求,在内存有限的情况下,可以选择尽可能大的批大小对模型进行训练,从而达到更高的分割准确率。
4.6 本章小结
本章提出了基于编解码器与多尺度特征融合的语义分割模型。该模型可以通过编码器中的多尺度池化模块获取原始图像中不同尺度的语义信息;解码器在获取最终语义分割图的同时,通过融合不同层次的特征图减少了下采样过程中损失的细节信息,并通过链式池化模块扩大了卷积核的感受野,进一步提高了分割准确。

5 算法评估
本文实现的算法采用在ImageNet数据集上预训练得到的ResNet-101和改进后的Xcepton作为特征提取网络,用于提取密集的特征图,本文实验基于tensorflow[30]实现。
为定量评价图像语义分割结果的精度,本文采用平均IOU(Mean Intersection Over Union,mIOU)作为评价标准。假设图像数据集中总共有个类别的物体,表示真实语义类别为i中被预测为语义类别j的像素数,用表示类别i的像素总数(正确预测的像素数与误预测为其他语义类别的像素数的总和)。则有:

5.1 模型训练准则
学习率准则:将初始学习率设为0.007,并采用“poly”学习率准则。每次迭代时的学习率为初始学习率乘以的衰减因子,其中iter为当前迭代次数,max_iter为最大迭代次数,power为0.9。
裁剪尺寸和批大小:由于GPU内存的限制,采用不同的裁剪尺寸和批大小进行训练,以此来评估裁剪尺寸和批大小对模型所得到的分割效果的影响。
批归一化:在基于残差网络的多路径优化分割算法中,ResNet-101和RefineNet模块都包含批归一化处理;基于编解码器与多尺度特征融合的语义分割,在ResNet-101和Xception的基础上所添加的多尺度语义信息提取模块和解码器也都包含批归一化处理,这样有利于模型的训练。由于批归一化的存在,在内存允许的条件下,更需要尽可能大的批大小。在实验中,将批归一化参数训练过程中的衰减因子设为0.9997。
数据集增强:在训练的过程中,对输入图像做随机比例的扩展(比例因子为0.5到2.0)并进行随机的翻折,从而达到增强数据集的目的,防止模型过拟合。
损失函数:通过反向传播算法更新网络参数时,采用交叉熵损失函数,交叉熵损失函数见公式(5.2),

其中,y为图像的真实标签,为网络模型输出的实际标签,l为损失函数值。
总损失函数如公式(5.3)所示,

其中,loss为训练过程中总的损失函数,第二项为L2正则化项,用于防止模型的过拟合,为网络各层参数中的权重。
5.2 PASCAL VOC 2012数据集
将本文实现的算法在PASCAL VOC 2012[31]语义分割数据集上进行评估。PASCAL VOC 2012数据集包含20种物体的类别和背景。原始数据集包含1464张训练图片,1449张验证图片和1456张测试图片,每张图片都包含像素级的标注。本文采用B. Hariharan等人提供的更多的的标注[32]对数据集进行增强,最终得到了10582张训练集图片。
5.2.1 基于残差网络的多路径优化语义分割
采用ResNet-101为特征提取网络,由于算法的输出步长为32,残差网络得到的特征图分辨率比较小,对内存的占有率比较低,所以可以采用较大的裁剪尺寸和批大小,在本文实验中,将本算法的裁剪尺寸设为513×513,批大小设为15。本算法最终得到的平均IOU为77.31%,达到了较为理想的分割效果。
该算法虽然通过将深层和浅层信息相融合,减少了下采样过程中细节信息的损失,但未考虑原始图像中存在多尺度物体的问题,所以分割准确率可以得到进一步的提升。
5.2.2 基于编解码器与多尺度特征融合的语义分割
(1)采用ResNet-101作为特征提取网络
在模型的构建过程中,采用ResNet-101作为模型的特征提取网络时,空洞卷积可以在不增加模型需要训练的参数数量的情况下,控制特征提取网络的输出步长,虽然将输出步长设为8可以减少细节信息的损失,但由于GPU资源的限制,实验最终将特征提取网络的输出步长设为16。
为保证深层次的特征图在解码器所输出的特征图中所占的比例,需将编码器中的低层次特征图经过1×1的卷积操作进行降维,使其通道数变为48,再与通道数为256的深层次特征图进行融合,融合后的特征图经过链式池化模块后,上采样得到最终的语义分割图。为了进行模型的压缩,将解码器中链式池化模块的3×3标准卷积替换为深度可分离卷积,尽可能地降低网络模型的参数数量。
由于模型的输出步长为16,相对于多路径优化分割算法,需要更多的内存。根据数据集中原始图像的大小和内存的限制,在PASCAL VOC 2012数据集上采用两种不同的裁剪尺寸和批大小对该模型进行评估:(1)裁剪尺寸为385,批大小为15;(2)裁剪尺寸为513,批大小为10。实验结果见表5.1。
表5.1 不同裁剪尺寸和批大小下的平均IOU
裁剪尺寸 批大小 mIOU
385×385 15 73.8%
513×513 10 74.8%
裁剪尺寸为513×513,批大小为10的训练过程中loss值的变化见图5.1.1,由图可知,loss值在训练的过程中前期下降的比较快,30000次迭代后,loss值趋于稳定;平均IOU的变化如图5.1.2所示,平均IOU前期增长较快,30000次迭代后,趋于稳定,并达到最大值。

图5.1.1 loss值 图5.1.2 平均IOU值
图5.1 模型评估过程
实验证明,由于要捕获更多的语义信息,采用大的裁剪尺寸可以获得更好的效果。与此同时,在内存允许的条件下,为了更好地训练批归一化中的参数,采用合适的比较大的批大小分割效果更好。
(2)采用Xception作为特征提取网络
采用ResNet-101作为特征提取网络时,由于模型参数占有较大的内存,限制了裁剪尺寸和批大小的取值。如表5.1所示,大的裁剪尺寸、小的批大小或小的裁剪尺寸、大的批大小都无法得到较高的分割准确率。因此,需要对模型进行压缩,从而可以在训练的过程中采用理想的裁剪尺寸和批大小。
将改进后的Xception在ImageNet数据集上进行预训练并作为编码器中的特征提取网络,由于Xception采用深度可分离卷积作为网络模型的基础单元,所以模型得到了极大的压缩,从而可以采用较大的裁剪尺寸和批大小对模型进行训练,同样将裁减尺寸设为513×513,并将批大小设为16,最终得到的平均IOU为82.20%。
将本论文实现的模型与之前有良好分割效果的模型进行比较,结果见图5.2,由图可知,本文模型相比于之前模型,取得了更好的分割效果。

图5.2 各类语义分割模型在PASCAL VOC 2012上测试的平均IOU
基于编解码器与多尺度特征融合的语义分割当采用Xception作为特征提取网络时取得了最为理想的分割效果,该模型在PASCAL VOC 2012数据集上测试得到的部分语义分割结果见图5.3。
5.3 Cityscapes数据集
由于采用Xception作为特征提取网络时,基于编解码器与多尺度特征融合的语义分割效果最佳,所以将该模型在Cityscapes[33]数据集上进行测试。Cityscapes是最近发布的语义分割的数据集,主要用于城市场景的理解。Cityscapes数据集包含了不同季节50个城市的5000张高质量像素级别精细标注的图像,其中训练集包含2975张图片,验证集包含500张图片,测试集包含1525张图片。该数据集总共包含19个类别,类别对象多,场景复杂,挑战难度大。

图5.3 PASCAL VOC 2012数据集中部分图像及其语义分割图

图5.4.1 原始图像 图5.4.2 真实标签 图5.4.3 本文模型
图5.4 Cityscapes数据集上部分图像测试得到的语义分割图

与PASCAL VOC 2012数据集不同的是,在训练的过程中,需将裁减尺寸设769×769,批大小设为8,总共迭代90000次,在模型评估和测试的过程中,需将裁减尺寸设为1025×2049。通过验证,该模型最终得到的平均IOU为78.79%,取得了理想的分割效果,模型测试得到的分割结果如图5.4所示,由分割结果可以看出,由于多尺度池化模块的存在,原始图像中不同尺度的物体得到了很好的分割,各类物体的边缘轮廓较为清晰,对于复杂场景的图像,分割效果良好。
5.4 本章小结
本章首先简要介绍了本文算法的实验环境及评价指标,并对模型训练过程中所涉及到的训练准则进行了详细的说明。在此基础上,采用不同的裁剪尺寸和批大小对本文实现的模型进行评估并得出实验结果,由实验结果可知,采用较大的裁剪尺寸和批大小分割效果更好。最后,将基于编解码器与多尺度特征融合的语义分割中的特征提取网络由ResNet改为Xception进行压缩后的模型取得了最为理想的分割效果。

你可能感兴趣的:(python,基础)