基于场景上下文编码的图像语义分割*

2020-12-18 07:44王华锋
北方工业大学学报 2020年5期
关键词:语义编码卷积

王华锋 王 琦

(北方工业大学信息学院,100144,北京)

近年来图像语义分割(Semantic Segmentation)领域中,研究方法可分为基于区域的分割方法和基于像素的分割方法. 2017年何凯明提出了基于区域的分割方法Mask-RCNN网络,该模型首先提取目标对象的候选区域,随后再对区域内的物体进行分割.[1]虽然这种方法能够同时完成图像的检测与分割两项任务,但是对候选区域分割时缺少了全局的语义信息,对小尺度物体进行分割时容易出错导致分割准确率较低.

在基于像素的分割方法中,Shelhamer等人于2015年提出全卷积网络 (Fully Convolutional Networks,简称FCN),该模型在结构中丢弃了传统卷积神经网络中的全连接层,并且在网络中全部使用卷积层进行处理以实现整张图像的逐像素理解.[2]FCN网络通过特征提取后通过直接上采样的方法恢复图像尺寸,但由于直接上采样方法丢失了像素的空间信息,导致该方法的分割效果比较粗糙. 为解决上述FCN中的问题,研究学者提出基于编码器- 解码器结构的语义分割模型. 其中,剑桥大学团队提出了SegNet网络,该模型利用保存池化中的索引来恢复卷积过程中减少的空间信息.[3]Ronneberger提出U- Net网络,该模型使用了跳跃连接,携带类别信息的高级特征不断融合携带位置信息的低级特征,通过这种方式实现了特征维度的不断加深.[4]RefineNet对网络的解码器部分实施改进,将来自于编码器的图像高分辨率特征和来自于RefineNet模块的低分辨率特征进行融合,将融合后的输出作为输入送至下一个解码结构中,以叠加的方式融合不同阶段的特征完成恢复图像分辨率.[5]编码器- 解码器结构模型虽在分割效果上获得了改善,但以牺牲部分效率为代价.

为了使语义分割模型能够保留尽量多的有用信息,研究者们提出了两种策略:一是注意力方法,该方法模拟人类将视线聚焦于突出对象的机制,将特征提取的重点集中在对图像有突出贡献的部分. Hu的研究工作中设计了通道注意力模块,对不同通道卷积中所获得的特征关系进行了建模,实现了网络表达能力的目的.[6]Woo提出除了考虑通道维度外还考虑了空间维度,网络沿着这两个维度依次推断各自的注意力映射关系的提高,然后将注意力图与输入特征图矩阵元素相乘以进行自身特征调整.[7]二是融合相邻像素特征的策略,2015年Yu等人提出“扩张卷积”的概念,通过在卷积操作中注入空洞的方式来增加感受野.[8]此方法由于训练网络时减少了图像像素的压缩率,产生了密集预测,细化了分割图像. 但只采用同样空洞率的卷积核会出现图像中小物体被大物体吞噬的现象. 为了解决此类问题,2018年Wang提出了采用混合扩张卷积叠加的结构[9],通过叠加不同膨胀率的扩张卷积使小物体也能够获得关注. 此类方法将信息的获取范围限制为相邻像素,计算上下文时存在难以区分不同类别像素的问题,这种缺点在对象具有相似特征时表现得更加明显.

综上,目前的文献及研究中多通过融合相邻像素之间的信息进行图像像素的分类判断,但这些方法仅获取了相邻像素之间的联系忽略了像素与整体场景的关系,在对目标对象进行分割对象时会对分割的连贯性和像素准确率造成极大的影响. 针对上述问题,本文提出一种基于场景上下文编码模块,像素分类与场景信息相结合的解决思路.

2 方法

针对以往图像语义分割模型进行图像分割时其往往忽略了图像整体信息的问题,本文提出了一种基于场景上下文编码的多任务网络,算法流程如图1所示.

在该结构中,输入为RGB图像,CNN对图像进行特征提取后送入PPM(Pyramid Pooling Moudle)模块对特征进行多尺度聚合,随后聚合后的特征作为输入进入场景上下文编码模块进行编码学习,获得编码后的特征,输出最终的场景分类预测和图像分割预测.

2.1 金字塔池化模块

针对语义分割中缺乏上下文信息这一问题,本模型在特征提取后增加了PPM结构,其层次结构能够聚合不同区域上下文信息.[10]如图2所示.

本模型中,输入图像首先通过一个卷积网络提取图像特征,为了避免池化过程造成丢失图像细节信息,特征提取中采用了融入膨胀卷积的残差网络(Residual Net,简称ResNet).[11]从而增加卷积核的感受野. 提取后的特征作为金字塔池化模块的输入,该特征金字塔模块融合了1×1、2×2、3×3、6×6这4种不同尺度的特征,每个尺度的特征由一个不同尺度的池化操作获取. 池化后的特征通过1×1的卷积将特征维度减少为原始维度的1/4,最后将所得4个尺度的金字塔特征通过双线性插值法进行上采样恢复到图像的原始尺寸,将所有特征进行合并,实现了目标的浅层特征与深层特征的融合,得到最后的特征图.

PPM模块中虽然融合了多尺度的信息,但多尺度的信息并不等于对图像的场景语义的理解,粗略的整体全局上下文信息缺乏对物与物之间关系的学习,不足以对场景中的模糊对象进行分类,这导致了难以确定像素属于哪个类别的问题. 因此,在模型的设计中需将PPM与能够对特征图进行场景学习的模块进行融合.

2.2 上下文编码模块

与其他工作中通过增大感受野和多尺度融合来捕获上下文信息的方法不同,上下文编码模块(Context Encoding Module,简称CEM)以编码的方式将特征统计信息作为图像场景语义进行捕获[12],模块的输出称之为上下文语义编码.

传统的分类方法的步骤为提取图像特征、字典学习或聚类获得特征编码、使用分类器进行分类. 这样的方法虽然字典和编码中携带了空间域信息,但局限在于其只有前向过程缺少反馈过程,无法对提取的特征和获得的特征编码进行迭代寻找最优解. 上下文编码模块将传统的分步过程融合成了端到端的模型. 模块结构如图3所示.

输入图像通过CNN网络提取特征后,得到了C×H×W形状的特征映射,特征编码模块以该特征映射作为输入并将其视作一组C维的向量,每个向量中由大小为H×W的特征图确定了数量为N的特征描述符. 对N个特征描述符定义一个集合x={x1,x2,…,xn},其中的每个子描述符xn通过字典学习,从提取的特征图中学习一组语义编码字典D={d1,d2,…,dk}以及相对应的视觉特征系数α={α1,α2,…,αk},其中K表示每个子特征描述符中包含的语义词信息.

将每个特征描述符xn分别与字典学习获得的语义词dk计算残差,将残差表示为rnk=xn-dk,赋值权重根据描述符和编码之间的距离将特征系数分配给每个残差. 对加权后的残差进行归一化处理,获得该点像素上针对第K个语义词的编码信息enk,其中K=1,2,…,K.

(1)

将特征图中包含的N个特征的语义编码信息进行加和,获得整张图像相对于第K个语义词的信息ek. 其中N=1,2,…,N.

(2)

将K个ek进行融合以获得整张图像相对于第K个语义词的全部信息. 模块选择采用特征聚合的融合方式保留空间信息,避免了串联方法特征被排序从而丢失空间信息. 图像获得对第K个语义词的信息ek后使用ReLU激活函数进行批归一化,最终求和得到图像的语义编码信息.

(3)

2.3 语义分割网络结构

本研究在PPM模块的基础上融合了能够对图像信息进行编码的上下文编码模块,在多尺度特征提取的基础上再次对特征图中的全部信息进行编码,使得图像中的每个像素的分类分割更加紧密地与图像场景信息联系起来,并且每幅图像的特征只包含其场景相关类别.

场景分类是对图像中的物体进行分析后推断出合理的物体存在场景,语义分割则是对图像中所有的物体进行分类后加上对象物体的空间信息,从而分割物体. 这两个任务看似是对图像两种层次的理解,但其实质上都依赖于场景上下文信息. 在场景分类中,网络学习通常不需要图像的高级特征,也不需要空间信息,但需要物体中整体的对象信息. 本文认为获得的场景语义编码信息不仅仅能改善语义分割结果,并对场景的分类也能有所贡献,因此本文将网络设计为多任务结构,该网络可同时完成对图像的语义分割及场景分类任务. 具体结构如图4所示.

本文在CNN提取特征时使用了ResNet作为骨干网络,ResNet第五阶段的最后一个卷积层进行特征提取之后,附加上了金字塔池化模块融合多尺度的特征. 这种方法对图像局部区域的关注度更高,网络能够对一定区域内的图像特征进行理解判断. CEM模块则是对整体图像的场景信息进行编码学习,增强图像场景中相关类别的特征. 本文算法将PPM处理后的特征信息与场景上下文编码信息进行融合,让场景的理解可以从两个层次获取信息,从而使得输出结果更准确.

2.4 损失函数

在深度学习中训练过程是一个通过迭代不断降低损失值并得到最优解的过程. 语义分割中常用的损失函数是像素的交叉熵损失(Pixel Wise Cross Entropy Loss). 该损失单独地检查每个像素点,将类别预测即深度方向的像素矢量与单热(One-Hot)编码的目标矢量进行比较. 本文算法同样采用交叉熵损失函数作为语义分割的损失函数,对图像中的对象类别一张样本图像的交叉熵损失表示为:

(4)

(5)

在语义分割的训练过程中,网络是在真实标签和原始图像中孤立的像素点中学习的. 缺少全局信息,限制了神经网络对语境的理解. 因此本文算法除了使用交叉熵训练最终分类器的主要分支外,在ResNet的第四阶段引入了辅助损失. 辅助损失对大目标和小目标都施以相同的权重,平等地考虑对象,改善小目标对象的分割结果. 两个函数使用不同的权重一起进行传播,共同实现参数的优化.

用lossaux表示辅助损失,则语义分割整体的损失函数可表示为:

Lseg=lossmain+lossaux

(6)

3 实验

3.1 数据准备

为了验证本文所提出的模型对分割结果的精度的提升效果,我们在ADE20K数据集上来进行训练和测试,该数据集不仅包括对图像分割的注释以外,还包括了场景分类的标签注释,相对于其他数据集,能更好的检验本文所提出的方法. ADE数据集为多标签数据库,即一张图片可能包括多种对象类别,并且图像背景、光照条件复杂,对象角度和尺寸都不固定,背景中均存在不同程度的其他干扰物,是一个非常具有挑战性的图像分割数据库. 数据集包含超过22 000张图像:其中训练集约20 000张,验证集和测试集分别为2 000和3 000张. 物体类别数量为150,涉及了生活中常见的物体类别,是语义分割领域中一个极具挑战性的数据集. ADE20K数据集在场景分类上涉及了1 038个标签,由于场景类别过多且某些场景类的数据量过小,本文在分类任务中将场景标签重新进行整理为356类.

3.2 评价指标

假定数据集中包含u个目标类和一个背景类,将pii表示将第i类正确预测为第i类的像素样本,pji、pij表示将第i预测错误的像素样本.

像素准确率(Pixel Accuracy,简称PiAcc),表示分类正确的像素点和所有的像素点的比例,定义为:

(7)

平均交并比(Mean Intersection over Union,简称MIoU),表示分割结果的预测值和真实标签值之间的交集和并集之比. MIoU是图像分割中最常用的评价指标,定义为:

(8)

在场景分类任务中,本文使用最佳准确率Top-1和Top- 5作为评价指标对本文的模型进行评价,Top-1是指输出结果中排名第一的类别与实际真实标签相符的准确率,Top- 5是指输出结果中排名前5的类别中包含真实标签的准确率.

3.3 训练过程

本文使用ADEChallenge20K数据集中的20 000张图像作为样本,2 000张图像作为验证集对分割结果进行验证. 训练时首先对图片进行数据增强:随机裁剪以及对数据进行标准化. 通过扩大样本容量操作,有助于模型准确率的提高及模型泛化能力的提升.

实验利用Pytorch框架对本文所提出的算法进行训练,操作系统为Ubuntu16.04. 在8个GPU上进行卷积神经网络的训练,每个GPU上的批次设置为4,将网络的初始学习率设为1e-3,在学习率的调整上本研究使用Poly策略,即:

(9)

训练中网络使用随机梯度下降法进行迭代,动量设置为0.9,总共进行180轮训练.

3.4 实验及结果分析

在语义分割任务上与4种不同的算法进行了对比,FCN8s对传统FCN模型进行多尺度融合上采样,是全卷积网络中表现最好的一种结构,DilatedNet文章提出使用空洞卷积作为分类网络的卷积,并通过实验证明了空洞残差网络的性能与普通残差网络的性能相比具有优越性;SegNet是经典的编解码结构网络,算法设计在池化时记录位置,反池化时进行恢复;各算法在ADE20K测试集上的表现对比如表1所示.

实验结果显示,在语义分割任务上,本文算法在PiAcc和MioU两个指标上达到了82.15%和41.22%,相较于FCN8s等算法有显著提高. 本实验还对算法测试的时间进行了记录,以分析本文方法对算法复杂度的影响,表1中第4列即为训练完成的模型在对测试集进行分割时,对一张图像进行处理时所需要的时间. 结果表明,本网络同时完成场景分类和语义分割两项任务,但相对于表中列出的经典网络,本文算法在提高网络分割的精度,只牺牲了部分速率.

表1 各算法在ADE20K测试集上结果

由于本算法中使用了场景上下文编码模块,为了证明了该方法能够提高网络的分割性能,本文设置了对比实验,实验1设计为辅助损失取值为0.2时只融合了PPM模块的网络,实验2为辅助损失函数取值为0.2时融合了PPM与CEM模块的网络. 最终的指标对比结果如表2所示.

表2 各算法在ADE20K测试集上结果

如图5所示,实验2在分割的结果上相对于实验1有效的去除了干扰,像素连贯性更加流畅,图像中分割目标对象“台灯”的分割更完整.

如图6所示,实验2在分割的结果上相对于实验1对场景的理解和分割更加优异,分割结果中目标对象“建筑”之间的“天空”被准确地分割了出来.

由于本网络是多任务网络,除语义分割还对图像进行了场景的分类. 2019年由旷世科技所提出的多任务卷积神经网络,该方法在场景分类任务上与本研究采用同样的方法将分类标签从1 038映射到356类. 由于采用相同的数据集,且同为多任务网络,本研究在场景分类任务上与该方法进行对比,表3列出本研究算法与UPerNet在ADE20K数据集在场景分类任务上的对比.

本文算法在ADE28类场景分类任务上Top-1获得了68.84%准确率. 最终结果显示本网络结构能够同时完成图像的场景分类和像素的分割预测任务. 本文算法语义分割部分可视化结果如图7所示. 其中第1行表示输入图像,第2行为真实值标签,第3行为本文网络的分割结果,第4行为本文网络所输出的场景分类TOP-1标签.

表3 各分类算法在不同数据集上的表现

4 结语

通过研究今年来的深度学习图像语义分割算法,可知场景全局信息对图像语义分割的重要性. 由于在语义分割中,不同的对象常常在局部之间具有相似性,从而混淆像素点的分类. 为了尽可能减少这种不良影响, 本文从场景全局上下文信息对图像语义分割的重要性上考虑,在卷积神经网络中融入学习场景信息的编码模块,将图像的特征进行编码,突出图像中与场景相关的类别特征,降低了相似但非相关的类别特征对像素分类的影响. 在ADE20K数据上的实验结果表明:

1)利用图像的整体编码信息指导图像进行语义分割可以提高了分割结果的场景合理性和像素连续性,提升图像的分割结果.

2)图像的语义编码信息可以作为场景分类任务上的一种有效方法.

3)本文结构为多任务的网络结构,在效率上有所欠缺. 在未来工作中,如何提高效率是研究的重点.

猜你喜欢
语义编码卷积
真实场景水下语义分割方法及数据集
生活中的编码
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
从滤波器理解卷积
Genome and healthcare
基于傅里叶域卷积表示的目标跟踪算法
“吃+NP”的语义生成机制研究