Learning to Adapt Structured Output Space for Semantic Segmentation

2022-09-02 22:18:11 浏览数 (1)

摘要:

对语义分割来讲基于卷积神经网络的方法,依赖像素级ground-truth标记,但是对未知领域可能泛化效果并不好。因为标记过程是沉闷和耗时的,开发将源ground truth标记到目标域引起了很大的关注。本文我们提出一种对抗训练方法在语义分割的内容中进行域适配。考虑语义分割作为结构输出包含源域和目标域的空间相似性,在输出空间中,我们采用对抗训练。为了进一步增强适配模型,我们构建一个多层对抗网络,在不同特征级别上有效的执行输出空间域适配。一系列的实验和消融研究在不同域适配下进行,包括合成到真实和跨城市场景。我们表明提出的方法在精度是视觉质量方面,超过了现有的最先进的方法。

1、简介

语义分割旨在对每个像素分配一个标签,例如在一幅图像中的人、车、路和树。近年来,基于卷积神经网络的方法在语义分割上取得了显著的进步,应用到自动驾驶和图像编辑上面。基于CNN方法的难点是需要标注大量的数据集来包含可能的场景。但是训练的模型对未知的场景,泛化能力一般,特别是训练集和测试集之间有差别时。例如,目标外观的分布和场景的分布在不同城市间是不同的,甚至在同一城市中光照和天气是变化的。在这种情况下,仅仅依赖监督模型在不同场景下需要重新进行像素级的标注,这必然需要花费更多劳动力。

为了解决这个问题,我们提出了知识迁移和域适配技巧来缩小源域和目标域之间的差距,因为目标域中的标注无法获得。对图像分类来讲一个有效的方法是合并两个域的特征,这样适配特征在两个域都能进行泛化。在特征空间中通过对抗训练,在语义分割中提出了同样的方法。然而,与图像分类不同的是,语义分割的特征适配的适配会遭遇高维空间的复杂性,需要编码不同的视觉方法,包括外观形状和内容。这使得我们开发一个有效的方法来进行像素级的适配,而不是使用特征适配。在语义分割中,我们发现输出空间中包含丰富的语义信息,同时有空间上和本地上的。例如,尽管来自两个域的图像在外观上差异非常大,它们的语义输出具有明显的相似数量,例如空间布局和局部内容(如,图1所示)。基于这个观察,在输出空间中我们强调输出的像素级域适配问题。

在这篇文章中,对语义分割,我们提出了基于CNN的端对端的域适配。我们的方法基于输出空间上的对抗训练,直觉是直接使得源域和目标域的输出标签彼此接近。基于生成对抗网络,提出的模型由两部分组成:(1)、语义模型来预测输出结果。(2)鉴别器用来区分输入来自源域还是目标域。应用对抗训练,提出的语义模型旨在欺骗鉴别器,目标是对源域和目标域图像生成相似的分布。提出的方法也适配特征,作为作为输出标签反传到特征层的误差。然而,一个顾虑是可能适配的不太好,因为它们离高层输出标签太远。为了解决这个问题,我们开发了一个多层策略,在语义分割的不同特征层上合并对抗学习。例如,我们可以同时使用第五和第四卷积特征预测输出空间中的语义分割结果。对多层对抗训练两个鉴别器能够连接到各自的输出上。对语义分割和鉴别器,我们同时执行端对端的一阶段训练,在目标域中不使用任何先验信息。在测试阶段,我们可以简单丢弃鉴别器,并且在目标图像上使用适配的分割模型,不需要额外的计算消耗。由于语义ground truth标注很耗费劳动力,我们对大规模有标注的合成数据集很感兴趣。GTA5和SYNTHIA。结果是,一个关键的设置是在合成数据上适配模型到真实数据,例如Cityscape。我们依照这种设置,并且进行了广泛的实验来验证提出的域适配方法。首先,我们使用一个强baseline模型,能泛化到不同的域上。我们注意到强baseline模型能促进真实世界的应用,并且能够评估提出域适配方法的局限性。基于这baseline模型,在特征和输出空间上,我们展示使用对抗训练的比较。进一步的,我们发现多层对抗学习相比于单层能提升结果。除了真实到合成的设置,我们展示在跨城市数据集上结果,其中标注在作为源域的一个城市中提供,测试在作为目标域的未知城市上提供。在不同设置下相对于最先进的算法有很大的提升。

我们工作的贡献如下,首先我们提出一个利用对抗学习对像素级语义分割域适配的方法。第二,我们证明输出空间的域适配能有效合并源域和目标域图像中的场景分布和局部纹理。第三,我们开发了一个多层对抗学习方法来适配语义分割模型不同层的特征,这能有效的提升性能。

2、相关工作

语义分割:最先进的语义分割方法主要基于最近卷积神经网络的进步,Long提出了将分类CNN(例如,AlexNet、VGG、ResNet)语义分割全卷积网络的方法。从此以后有大量方法提出利用纹理信息或增大感受野的方法来提升这个模型。为了训练这些先进的模型,接下来需要收集大量密集的像素标签,来匹配深度CNN模型的能力。结果,结果近年来提出了许多弱监督和半监督方法来减少收集语义ground-truth的代价。然而,在多数真实视觉应用中,很难获得若监督标记,并且对未见的图像域,训练的模型泛化能力一般。

另一个解决这种方法的是使用基于渲染的合成数据集,例如GTA5和SYNTHIA。同时数据收集花费较少,因为像素级标注能用部分自动过程,这些数据集通常和真实世界的数据集联合起来学习来提升性能。然而当训练仅仅在合成数据集上进行时,模型泛化到真实世界的数据很不好,主要是由于在合成图像和真实图像之间有比较大的域漂移。尽管合成更多真实图像降低域漂移,有必要使用域适配来缩小性能差距。

域适配:对图像分类,在源域和目标域之间用来解决域漂移问题。在CNN分类器上开发了大量的方法,因此性能有很大的提升。这些方法背后的观点主要是处理源域和目标域之间,特征分布合并的问题。Ganin提出了域对抗神经域对抗神经网络来迁移特征分布。从那时起开始有大量的变体出现,如损失函数或分类器。最近PixelDA方法通过将源域图像迁移到目标域来解决图像分类的域适配问题,因此对目标域获得了一个模拟的训练集。

我们注意到对像素级的域适配方法,研究的并不广泛。Hoffman通过应用对抗训练介绍了语义分割中的域适配任务,在特征表达上以一个全卷积的方法,并且额外的类限制类似于限制的CNN。别的方法聚焦适配合成到真实或跨城市的图像,通过采用逐类对抗学习或标签迁移。类似于PixelDA方法,一个并发的工作,CyCADA使用CycleGAN,应用像素对齐将源域图像迁移到目标域,因此,产生的额外训练数据通过特征空间对抗学习得到。

尽管特征空间适配已经成功的应用到了图像分类,像素级的任务,例如语义分割,依然面临着基于特征适配方法的挑战。在这篇中,我们应用像素级的预测通过输出的空间和局部信息来构建这个性质,通过输出空间对抗学习提出一个有效的空间域适配算法。

3、算法概览

3.1、提出方法的概览

我们的域适配算法由两个模块组成:分割网络G和鉴别器Di,其中i指的是多层对抗学习中的鉴别器的层级。从源域和目标域的两个R^{H times W times 3} 的图像集合,分别表示为{Is}和{It}。我们首先将有标记的源域图像Is在分割网络中前传来优化G。然后对没有标签的目标图像It我们预测分割的softmax输出Pt。因为我们的目标是使得源域和目标域的分割预测P相近,例如Pt和Ps。我们将这两个输出送到鉴别器,来区分哪个输入来自源域,哪个输入来自目标域。使用目标域上的对抗损失,网络将梯度从Di传到G,这鼓励G在目标域上和源域预测产生相似的分割输出。图2提出了整个算法的概览。

3.2、域适配的目标函数

使用提出的网络,我们将域适配任务用来自两个模块的损失表示为:

mathcal{L}left(I_{s}, I_{t}right)=mathcal{L}_{text {seg }}left(I_{s}right) lambda_{a d v} mathcal{L}_{a d v}left(I_{t}right)

其中,mathcal{L}_{text {seg }}是源域中使用ground truth标注的交叉熵损失,mathcal{L}_{text {adv}}是对抗损失用来适配目标域图像的分割预测到源域预测的分布。

lambda_{adv}用来平衡两个损失。

4、输出空间适配

和基于利用图像全局视觉信息特征的图像分类任务不同,语义分割学习的高维特征编码了复杂的表示。结果是,特征空间的适配对语义分割来讲也许不是最佳的选择。另一方面,尽管语义分割的输出在低维特征空间,它们包含了丰富的语义信息,例如场景布局和纹理。我们的直觉是不管图像来自源域还是目标域,它们的语义应该有很强的相似性。因此,我们通过对抗学习方法利用这个性质来适配低维分割预测的softmax输出。

4.1、单层对抗学习

鉴别训练:在介绍如何通过对抗学习适配分割网络之前,我们描述鉴别器的训练目标函数。给定语义分割的softmax输出P=G(I) in R^{H times W times C} ,其中C是类别数,我们将P前传到一个全卷积的鉴别器D,对两个类(例如,源和目标),使用交叉熵损失L_d

损失可以写成:

begin{array}{r} mathcal{L}_{d}(P)=-sum_{h, w}(1-z) log left(mathbf{D}(P)^{(h, w, 0)}right) \ z log left(mathbf{D}(P)^{(h, w, 1)}right) end{array}

如果样本来自目标域z=0,如果样本来自源域z=1

分割网络训练:首先,对来自源域的图像,我们定义(1)中的分割损失为交叉熵损失:

mathcal{L}_{s e g}left(I_{s}right)=-sum_{h, w} sum_{c in C} Y_{s}^{(h, w, c)} log left(P_{s}^{(h, w, c)}right)

其中Y_s是源域图像的ground truth标签,并且P_s=G(I_s)是分割输出。

第二,对目标域的图像,我们将它们前传到G来获得预测P_t=G(I_t)。我们使P_t的分布和P_s的分布接近,我们使用(1)中的对抗损失为:

mathcal{L}_{a d v}left(I_{t}right)=-sum_{h, w} log left(mathbf{D}left(P_{t}right)^{(h, w, 1)}right)

损失设计用来训练分割网络,并且通过最大化可以作为源预测的目标预测的概率,来欺骗鉴别器。

4.2、多层对抗学习

尽管在输出空间中执行对抗学习直接适配预测,底层特征也许适配的并不好,因为它们远离输出。和使用语义分割辅助损失的深度监督方法类似,我们在底层特征空间中合并额外的对抗模块,来增强适配。对分割网络训练目标函数可以由(1)扩展为:

mathcal{L}left(I_{s}, I_{t}right)=sum_{i} lambda_{s e g}^{i} mathcal{L}_{s e g}^{i}left(I_{s}right) sum_{i} lambda_{a d v}^{i} mathcal{L}_{a d v}^{i}left(I_{t}right)

其中i指示了用来预测分割输出的层。我们注意到分割输出依然在每个特空间中进行预测,对对抗学习在通过当个鉴别器之前。因此,L_{text {seg }}^{i}left(I_{s}right)L_{a d v}^{i}left(I_{t}right) 依然分别与(3)和(4)的形式相同。基于(5),我们优化下面的最大最小准则:

max _{mathbf{D}} min _{mathbf{G}} mathcal{L}left(I_{s}, I_{t}right)

对源域图像,最终的目标是最小化G中的分割损失,同时最大化将目标预测考虑成源预测的概率。

5、网络结构和训练

鉴别器:对鉴别器,我们使用类似[31]的结构,但是利用全卷积层来保持空间信息。网络由5个卷积层构成,核为4x4,步幅为2,其中通道数分别是{64, 128, 256, 512, 1}。考虑最后一个卷积层,每个卷积层后面跟着一个leaky ReLU,参数是0.2。将上采样层加到最终的卷积层,对输入到输出的卷积层进行尺寸变换。我们不使用任何bn层,因为用分割网络联合训练鉴别器,使用一个小的batch size。

分割网络:很必要构建一个好的baseline模型来达到高质量的分割结果。我们采用DeepLab-v2框架作为我们分割的baseline模型,这是利用ResNet-101模型在ImageNet上预训练的。但是由于内存问题,我们不使用多尺度融合策略。类似于最近的语义分割模型,我们去掉最后一个分类层,并且将最后两个卷积层的步幅由2调整为1,使得输出特征图的分辨率,是输入图像的1/8尺寸。为了扩大感受野,我们在第四和第五卷积层上使用空洞卷积,步幅分别是2和4。在最后一个卷积层后面,我们使用ASPP作为最后的分类器。最终,我们采用一个上采样层和softmax输出来匹配输入图像的尺寸。基于这个结构,我们的分割模型达到了65.1%的IoU,当在cityscape训练集上测试,验证集上测试。

多层适配模型:我们构筑上述的鉴别器和分割网络作为我们单层适配模型。对多层结构,我们从第4个卷积层提取特征,并且加入ASPP作为辅助的分类器。同样地,一个相同结构的鉴别器加上去用来进行对抗学习。图2给出了提出的多层适配模型。在这篇文章中,我们使用两个层,由于需要平衡效率和精度。

网络训练:为了训练提出的单层或多层适配模型,我们发现一起联合训练分割网络和鉴别器很有效。在每个训练batch中,我们首先前传源域图像Is来优化分割网络,对(3)中Lseg,并且产生输出Ps。对训练图像It,我们得到分割输出Pt,并且将它和Ps一起送入鉴别器来优化(2)中的Ld。此外,对目标预测Pt,我们计算(4)中的对抗损失。对(5)中的多层训练目标函数,我们仅仅重复每个适配模块的相同过程。

我们使用Pytorch toolbox来实现我们的网络,在单个12GB内存的泰坦GPU上实现我们的网络。为了训练分割网络,我们使用SGD优化器和Nesterov加速,其中momentum是0.9,weight decay是10^-4。初始的学习率设置为2.5x10^-4,并且使用多项式衰减,指数是0.9。对优化器的训练我们使用Adam优化器,学习率是10^-4,,并且相同的Adam优化器,学习率是10^-4,并且和分割网络的多项式衰减是一样的。动量是0.9和0.99。

6、实验结果

这节,在不同的设置下,我们展示一个实验结果来验证提出的域适配。首先,我们评估在合成数据集上训练(例如,GTA5和SYNTHIA)并且用来自真实世界的cityscape数据集来测试适配模型。广泛的实验,包括和最先进方法的比较和消融实验,例如,在特征或者输出空间的适配和单尺度和多尺度训练。第二,我们在跨城市数据集上进行实验,其中模型在一个城市训练,但是在没有标签的情况下在另一个城市适配。

6.1、GTA5

GTA5由24966张1914 × 1052分辨率基于洛杉矶的游戏视频合成。ground truth标注的cityscape数据集是兼容的,这包含19个目标类。我们使用GTA5的整个设置,并且用2975张来自cityscape数据集中图像来适配这个模型。在测试期间,我们用500张cityscape数据集的图像来测试。

整个结果:我们展示表1的适配结果,和最先进的域适配方法进行比较。对于这些方法,基础模型基于VGG结构进行训练。为了公平的评估我们的方法,我们首先使用相同的模型(VGG-16),并且用提出的单层适配模型来训练我们的模型。表1展示了我们的算法比其他算法的效果更好。

同时这些所有的方法都有特征适配模块,我们的结果展示了在输出空间中适配模型达到了更好的性能。我们注意到CyCADA有一个像素级的适配模块,通过将源域图像转换到目标域,因此得到了额外的训练样本。尽管这个方法达到了和我们类似的效果,一个人可以经常使用像素转换和我们的输出空间组合起来,适配来提升结果。

另一方面,我们证明使用一个强baseline模型对理解不同适配组件的重要性是很关键的。因此,我们使用基于ResNet-101网络的模型,并且训练提出的模型。表1显示baseline结果仅仅在源域图像上训练,无适配,和我们在不同设置下的适配模型进行比较,包括特征适配和输出空间中的单层和多层适配。图3展示了适配分割模型的一些例子。我们注意到,对一些小目标,例如极点和交通标志,它们很难适配,因为它们很容易淹没在背景中。

除此之外,另外的因素来衡量适配表现是衡量适配模型和全卷积模型之间的差距有多窄。因此,我们使用cityscape数据集中标注的ground truth来训练这个模型来作为标准结果。我们注意到,尽管标准结果在基于VGG-16和ResNet-101模型有很大不同。建议缩小差距,使用一个更深的模型更加实用。

参数分析:在优化分割网络G期间,平衡分割和对抗损失之间的权重很关键。我们首先考虑(1)中的单层情况,并且执行实验来观察lambda_{a d v} 变化的影响。表3展示了一个更小的lambda_{a d v} ,在训练过程中明显不使用。

特征层和输出空间适配:在(1)的单层设置中,我们比较通过使用特征或输出空间适配的结果,通过对抗训练。从表1可以看出,本文提出的自适应方法在输出空间的性能要优于特征层的自适应方法。

此外,表3展示了特征空间的适配对lambda_{a d v} 更敏感,这导致训练过程更难,同时输出空间适配允许一个更加宽泛的lambda_{a d v} 。一个原因是特征适配在高维空间中执行,鉴别器的问题变得很简单。因此,这个适配模型很难有效地通过对抗训练来适配源域和目标域之间的分布。

单层和多层对抗学习:我们已经展示了在输出空间中采用对抗学习准则。除此之外,我们在表1展示了使用多层对抗训练的结果。这里,我们使用一个额外的对抗模块,如图2所示,并且对两层联合优化(5)。为了合适地平衡lambda_{text {seg }}^{i}lambda_{text {adv}}^{i} ,我们在单层设置中使用相同的权重,对高层输出空间(例如,lambda_{text {seg }}^{1} =1和lambda_{text {adv}}^{1} =0.001)。因为底层信息执行很少的输出来预测分割,我们对分割和对抗损失使用相同的权重,(例如,lambda_{text {seg }}^{2} =1和lambda_{text {adv}}^{2} =0.001)。评估结果展示我们的多层对抗训练进一步提升分割精度。更多的结果和分析在补充材料中展示。

6.2、SYNTHIA

为了将SYNTHIA适配到Cityscape数据集,我们使用SYNTHIA-RAND-CITYSCAPES设置作为源域,包含9400张图像,和cityscape标注的类别是一致的。和[3]相似,我们在cityscape验证集的图像上评估,有13个目标类别。对(1)和(5)的权重,我们使用相同的一个作为GTA5数据集的情况。

表4给出了提出的算法在使用特征适配时和最先进方法的比较。和GTA5数据集类似,我们首先使用类似的基于VGG的模型,并且训练我们的单层适配模型,这样做比较公平。实验结果表明,在输出空间上适配模型效果更好。第二,我们比较了提出方法不同组价的结果,基于ResNet模型。我们展示了,多层适配模型能够在baseline上提升结果,特征空间适配和单层适配模型。除此之外,我们展示了适配和标准结果IoU之间的差距,如表5所示。

我们的结果差距最小,是仅有的能将差距缩小到30%以下的方法。

6.3、跨城市数据集

对比较大的域差距,除了合成到真实适配外,我们也在跨城市数据集上进行实验。数据集由不同的四个城市构成:力拓、罗马、东京和台北。和[3]相似,我们使用cityscape训练集作为源域,并且将它适配到每个目标城市,使用3200张图像。同时,标注100张用来评估。因为更小的与差距使得输出的差距更小,我们使用更小的权重用来进行对抗训练。同时分割权重,依然和之前实验的设置一样。表[6]展示了我们的方法和[3]的比较,我们的baseline模型在不同的设置下。对不同的城市,我们最终的多层适配模型再一次达到了连续的提升,这证明了我们在输出空间中提出方法的有效性。注意最先进的方法[3]使用了不同的baseline模型,我们给出了一个参考来分析我们的方法提升了多少。

7、结论和评论

这片文章中,我们研究发现语义分割由输出构建,并且在源域和目标域有许多相似性。在输出空间上通过对抗学习来解决语义分割的域适配问题。为了进一步增强适配模型,在不同层上我们构建了一个多层对抗网络来有效的适配输出空间。实验结果展示了提出的方法比许多baseline模型都要好,并且达到了最佳效果。希望我们提出的域适配,对广泛的像素级预测任务,能称为一个通用的方法。

0 人点赞