基于生成对抗网络的半监督图像语义分割
2021-12-29刘其朋
朱 锋,刘其朋
(青岛大学复杂性科学研究所,山东 青岛 266071)
0 引言
图像语义分割是一种视觉场景理解任务,目的是为输入图像中的每个像素点分配类别标签,从而对图像中的物体进行语义层面上的划分,如某一区域的像素点属于车辆、行人、树木等。语义分割被广泛应用于自动驾驶、医学图像分析等领域[1-2]。图1展示了语义分割的示例。
图1 语义分割示例[3]
目前比较流行的语义分割方式大多是以全卷积神经网络(Fully Convolutional Network, FCN)为基础构造的[4]。FCN的特点是将普通卷积神经网络(Convolutional Neural Network,CNN)中的全连接层替换为卷积层,从而可以接受任意尺寸的输入图像,然后利用转置卷积操作对特征图进行上采样,得到与原图大小相同的语义分割图像。基于FCN的语义分割会随着网络层次的深入逐渐丢失原图中的空间结构信息而变为独立的单点像素分类预测,需要额外添加全局结构约束才能获得较好的分割效果。比较常用的方式是通过条件随机场(CRF)[5]或者马尔可夫随机场(MRF)[6]等捕捉远程像素点之间的依赖关系。
近年来随着生成对抗网络(Generative Adversarial Networks,GAN)[7]的提出和广泛应用,对抗式的训练模式为语义分割提供了新的解决方案。Luc等人首次将GAN框架引入语义分割任务中[8]。该框架包括一个分割网络和一个判别网络,前者用于完成语义分割任务,后者可以从全局层面评判语义分割的效果,从而为分割过程添加了像素点之间的依赖关系约束。
相比于物体识别和目标检测问题,语义分割要求的标签是像素级别的,因此人工标定训练数据集工作量很大。为了缓解这一问题,半监督训练方式逐渐引起了人们的关注。所谓的半监督,是指只有部分训练数据带有标签。文献[9]基于GAN框架设计了生成伪标签的半监督训练方法,使用完全无标签的训练数据改善了语义分割效果。文献[9]的分割网络中采用了空洞卷积,可以在不经过池化操作、不损失特征信息的情况下,扩大卷积核的感受野,卷积后输出特征图包含较大范围的丰富信息。但是在实际操作中空洞卷积可能会导致语义分割的栅格化问题,如图2所示。
图2 空洞卷积导致的语义分割栅格化问题
栅格化问题的可能原因是空洞卷积中卷积核插入太多零元素,导致卷积操作结果取值不连贯。在文献[9]的基础上,国内已有一些改进工作。例如,刘贝贝等人[10]采用了一种编码器—解码器分割网络,可以有效地融合浅层语义信息,优化目标分割细节。张桂梅等人[11]提出了一种学习率自适应调节的基于GAN的语义分割方法,提高了语义分割的精度。潘国峰[12]进一步提出了学习率和域自适应的生成对抗网络,并用于城市交通场景的分割,分割精度得到提升。本文在文献[9]的工作基础上加入了PSPNet(Pyramid Scene Parsing Network)[13],构造新的语义分割网络,利用其中的金字塔池化模块更好地聚合不同尺度上的空间结构信息,减轻了空洞卷积栅格化的问题。在PASCAL VOC 2012数据集[14]上通过全监督训练证明了改进网络语义分割效果的提升。同时,判别网络能够检测真实标签与分割图的空间结构层面的不一致,给出分割结果中的高可信度区域,并将其作为伪标签应用到半监督训练中。与文献[9]中的方法相比,本文提出的改进方法在全监督和半监督条件下的分割性能都得到了提升。
1 系统设计
1.1 整体框架
本文提出的语义分割模型整体框架如图3所示。模型参照GAN的框架包含两部分结构:分割网络和判别网络。分割网络输入H×W×3维度的训练图像,输出H×W×C维度的分类概率图,C表示需要分割的类别数目。具体地,分类概率图中(i,j,k)位置上的值表示的是原输入图像中(i,j)位置上的像素点属于类别k的概率。判别网络中输入的是来自分割网络的分类概率图或者是与输入的训练图像对应的经过one-hot编码的真实标签。不同于传统GAN中判别网络输出单一的分类概率值,用于语义分割的判别网络输出的是经过上采样得到的H×W×1的置信图,其中每一个位置(i,j)对应的值为该像素的分类来自真实标签的概率。在全监督训练过程中,分割网络优化的损失函数包括两项:分割结果与真实标签的交叉熵Lce,以及判别网络的判别结果Ladv;在半监督训练过程中,对于未标记数据,将判别网络对应的高信任度区域作为伪标签,替换全监督训练中的真实标签,相应地用分割结果与伪标签的交叉熵Lsemi替换全监督训练中的交叉熵Lce,再加上判别网络的判别结果Ladv,共同构成半监督条件下分割网络的损失函数。判别网络的训练则比较简单,只需要使用标记数据集基于二分类交叉熵损失函数LD进行全监督训练。
图3 基于GAN的语义分割模型框架图
1.2 分割网络
本文将PSPNet作为GAN中分割网络的基础框架。文献[13]中的研究表明,PSPNet中的金字塔池化可以有效保留卷积操作过程中的空间结构信息。本文采用这种结构以期进一步提升基于GAN的语义分割效果。另外,考虑到语义分割是一种高密度分类预测任务,即原图中每个像素点都需要进行分类,训练过程中对显卡内存要求很高,一般很难进行大批量训练,影响了训练速度。借鉴文献[15]中的解决方案,本文PSPNet中的批量标准化和非线性激活函数替换为InPlace-ABN(In-Place Activated Batch Normalization)模块。文献[15]研究表明,这种替换可以在稍微增加计算量的情况下减少大约50%的内存占用。
PSPNet的结构图如图4所示。输入图像经过多个卷积层(CNN)处理(包括3个卷积层、一个最大池化层和4个残差网络模块,并且在第三、四残差网络中使用空洞卷积,扩大卷积核的感受野),得到大小为原图1/8的特征图,再通过金字塔池化模块将输入的特征图分别进行4次池化操作,分别划分为1、4、9、和36个子区域,再对这些子区域进行平均池化,将得到的特征图经上采样与原特征图堆叠,融合具有不同分辨率的浅层语义信息,从而优化物体分割细节。最后运用双线性插值法进行上采样,将特征图恢复至原输入图像的尺寸。
金字塔池化具体结构如图5所示,上游网络输出维度为41×41×2 048的特征图,分别经过4次不同输出尺寸的平均池化,得到4个特征的尺寸分别为1×1、2×2、3×3和6×6,通道数保持为2 048,再分别经过1×1的卷积调整通道数为512,经过InPlace-ABN层处理后,再利用双线性插值法将4个特征图的尺寸还原,并将4个特征图堆叠后输出。
图4 PSPNet与金字塔池化结构示意图[10]
图5 金字塔池化模块具体结构图
1.3 判别网络
判别网络借鉴DCGAN[16]中的判别器结构,为了训练过程中损失函数的稳定性,判别网络不使用池化操作和批量标准化,激活函数使用Leaky ReLU,整个判别网络由5个卷积层组成,此外,为了将特征分辨率恢复至原输入图像的尺寸,使用双线性插值法进行上采样,最终输出维度H×W×1的置信图。
2 神经网络的训练
2.1 判别网络
判别网络本质上是一个二分类网络,将输入数据分类为真实标签或者由分割网络产生的分割图。本文采用与文献[9]完全相同的判别网络。
输入图像表示为Xn,维度为H×W×3,分别对应图像的高、宽和RGB三种颜色通道。S(·)表示分割网络,S(Xn)表示维度为H×W×C的分类概率图,其中C代表类别数。D(·)表示全卷积判别网络,其输入来自对真实标签进行one-hot编码得到的Yn或者分割网络S(Xn)的分割结果,输出为H×W×1的置信图。在本文中one-hot编码具体指:当(h,w)位置上的像素点Xn(h,w)属于c类时,Yn(h,w,c)的值为1;反之,值为0。在本文中只使用标记数据训练判别网络,在全监督和半监督实验中,判别网络的损失函数是相同的。
通过最小化损失函数LD的方式训练判别网络,表达式如式(1)。
(1)
基于上述损失函数LD可以通过梯度下降方式进行判别网络的训练。
2.2 分割网络
2.2.1 全监督训练
全监督训练只使用已标注好的数据进行训练。在固定判别网络的情况下,分割网络的训练目标是最大程度地减少多类交叉熵损失,同时增大式(1)中判别网络的损失函数,即鼓励分割网络产生与真实标签尽量相似的分割结果,从而欺骗判别网络。全监督训练通过最小化式(2)的Lseg损失函数来训练分割网络:
Lseg=Lce+λadvLadv
(2)
其中,Lce表示多分类交叉熵函数,Ladv表示对抗损失,λadv为可调权重参数。基于GAN的语义分割网络将对抗损失加入到分割网络的损失函数中。超参数λadv用来调节交叉熵损失和对抗损失在损失函数中的比重,λadv越大,对抗损失权重越大。
在全监督训练条件下,输入图像为Xn,给定图像真实标注对应的one-hot编码为Yn,分割网络的预测结果为S(Xn),对应的多分类交叉熵损失函数为
(3)
对抗训练损失函数为
(4)
在具体实现时,借鉴文献[7]中的设定,用-lbce(D(S(Xn)(h,w)),1)代替式(4)中的lbce(D(S(Xn)(h,w)),0),这一改变可以加快训练速度。
2.2.2 半监督训练
在半监督训练方式下,前5 000个epoch只使用标注数据进行全监督训练,目的是使分割网络具备初步的分割能力,判别网络也具备了基本的判断能力。随后,使用已标注和未标注数据同时训练。在全监督训练时,已经证实判别网络能够在一定程度上识别分割网络生成的分割结果并生成置信度较高的可信任区域。这一特性可以被应用到半监督训练中,将未标注数据经分割网络得到的分类概率图输入判别网络,输出的置信图经过二值化生成伪标签用于自训练。由于伪标签的存在,无论是标记数据还是未标记数据,都可以计算出相应的分割损失和对抗损失。在更新分割网络参数时,固定判别网络参数不变,对于未标记数据通过半监督训练更新分割网络参数,对于有标记数据通过全监督方式更新网络参数。
半监督训练的目的是最小化式(5)的损失函数:
Lseg=Lce+λadvLadv+λsemiLsemi
(5)
其中,Lce,Ladv,Lsemi分别代表多分类交叉熵损失、对抗损失、半监督训练的多分类交叉熵损失。λadv与λsemi为调节各项权重的超参数。Lce,Ladv与全监督情况下表达式相同。在半监督训练时,判别网络生成的伪标签有时误差较大,乘上超参数λsemi可以适当减小错误标签的影响。
半监督多分类交叉熵损失函数为
(6)
构造伪标签的过程为:将未标记图像输入分割网络,得到该图片的分类概率图,然后输入判别网络,输出置信图。置信图中每一个像素位置的值表示该像素正确分类的概率。指示函数根据给定的阈值Tsemi将置信图中的像素值进行0、1二值化,生成伪标签。阈值可以用来权衡伪标签的精确性和规模。较大的阈值Tsemi可以提高伪标签的正确性,但是被采纳的伪标签会减少。
3 实验与分析
3.1 实验环境与参数设置
实验平台为:Intel Core i7-7820@2.9GHz CPU, NVIDIA 1080 GPU,系统内存32GB,显卡内存为8 GB,Ubuntu 18.04操作系统,使用CUDA 9.0和cudnn7.2深度神经网络加速库,PyTorch v0.4深度学习框架。
分割网络和判别网络的学习速率以及参数设置参考DCGAN等经典对抗生成网络。由于对抗生成网络在训练时很难平稳地优化,所以分割网络和判别网络均使用较小的学习速率10-4,并使用Adam优化器。另外,借鉴参考文献[8]和[9]的取值,已标记数据和未标记数据的超参数λadv分别设置为0.01和0.001,λsemi设置为0.1,Tsemi=0.25,模型共训练30 000个epoch。
为了评价语义分割的效果,参考已有研究工作,采用平均交并比(Mean Intersection Over Union,MIoU)作为度量指标,其定义为分割结果和真实值之间的交集与并集之比。
3.2 数据集及实验结果
本文采用标准的语义分割数据集PASCAL VOC 2012和文献[17]提供的带有额外标注的增强PASCAL VOC 2012数据集进行实验,共包括10 582个训练图像和1 449个验证图像。训练时会对数据进行随机裁剪、水平翻转等预处理,以增加训练样本的多样性,减少过拟合。PASCAL VOC 2012数据集包含20个物体类和1个背景类。
表1给出了多种语义分割算法在PASCAL VOC 2012验证集上全监督训练的效果。直观的分割效果如图6所示,结果证明本文提出的模型不仅能够提高网络的分割效果,还能减轻文献[9]中由于空洞卷积引起的栅格化问题。实验证实了对抗学习增强语义分割的可行性,同时验证了判别模块能够识别提取分割结果中的可信任区域,为接下来的半监督语义分割方法提供理论依据。
表1 PASCAL VOC2012验证集上全监督实验结果对比
模型进行半监督训练时,需要从训练集中分别随机抽取1/8、1/4、1/2的训练数据,这些数据参与半监督训练时需要提供人工标注,其余数据的标注采用伪标签。理论上来说,带有标签的数据越多,训练效果越好。实验表明,本文采用的半监督训练方法在该数据集上能够取得更优的分割效果,如表2所示。
表2中本文方法和文献[9]中的方法都分别采用了无对抗和有对抗两种训练方式。在无对抗条件下,由于无法获得伪标签,因此训练过程实际上等同于只采用1/8(或1/4、1/2)有标签数据进行有监督训练。表2中的结果一方面反映了本文方法相对于文献[9]方法的优越性,另外也反映了对抗训练产生伪标签的价值所在:即使原本的训练数据不带标签,我们依然可以通过对抗训练的方式获得伪标签,进而在一定程度上提升训练效果。
图6 全监督学习分割效果展示
表2 PASCAL VOC 2012验证集上半监督实验结果对比
图7给出了用1/8有标签数据训练之后在验证集上的分割效果,可以看出本文的半监督方法具有更好的分割性能。
图7 半监督学习分割效果展示
4 总结与展望
本文将PSPNet引入基于GAN的语义分割框架中,借助金字塔池化模块构造了分割网络。金字塔池化模块可以有效提取图像中的空间结构信息,提高了分割的精度。在PASCAL VOC 2012数据集上的实验表明,本文方法获得的语义分割精度在全监督和半监督条件下均超过现有的基于GAN的语义分割方法。
在未来工作中,一方面可以构造更加高效的分割网络和判别网络,提高基于GAN的语义分割的整体性能;另一方面,可以尝试采用动态阈值的方式获得半监督训练的伪标签,使其恰当地反映判别网络逐步提升的判别性能。