论文理解:Self-Ensembing with GAN-based Data Augmentation for Domain Adaption in Sematic Segmentation

1. Abstract

  • 基于深度学习的语义分割有着固有的缺陷:需要大量的数据
  • 本文引入self-ensembling,想基于无监督下的领域自适应来解决数据问题,但通过self-ensembling中微调过的人工数据难以缩减语义分割中巨大的领域距离(Domain Gap)
  • 为此,本文提出一个由两部分组成的框架
    • 首先,基于GAN提出一个数据增强方法,能有效促进领域的对齐(Domain Alignment)
    • 其次,基于增强后的数据,将self-ensembling运用到分割网络中以提升模型的能力

2. Introduction

  • 语义分割的任务:给图像中的每个像素点都分类。

  • 大量基于深度学习的算法能够获得较好的效果,但过于依赖数据。为避免人工标注的繁琐和耗时,研究人员利用计算机图形学得到合成数据及所对应的分割标签。而合成数据训练得到的分割模型难以媲美使用真实数据训练得到的,因为存在了称之为领域迁移(Domain Shift)的分布不同(Distribution Difference)。

  • Unsupervised domain adaptation通过将标记过的数据集中的知识迁移到未标记过的数据集,来解决Domain Shift的问题。

    • 最近的方法多集中在对齐源数据和目标数据中抽取到的特征。如基于对抗训练,通过域混肴(Domain Confusion)来最小化领域之间的差异(Domain Discrepancy)。
    • 然而,对抗方法也有缺陷,为了对齐两个不同领域的全局分布可能会造成负迁移(Negative Transfer),即将目标特征对齐到了源特征中错误的语义分类。通俗点说,就是将天空的特征或者风格,迁移到了马路上。特别是,数据集中的某个类别比较稀少,更容易产生负迁移。
  • 为解决负迁移,本文引入了self-ensembling

    • self-ensembling由学生网络和教师网络组成
      • 学生网络被迫基于老师提供的目标数据,做出协同的预测
      • 教师网络的参数是学生网络的均值,所以教师在目标数据上做的预测可以看作是学生的伪标签
    • 虽然self-ensembling在图像分类上有很好的效果,若想用于成功对齐领域,它需要大力调节过的人工增强数据。此外,虽然self-ensembling得到的几何变化较大的数据能有效用于分类,它并不适合于语义分割中的Domain Shift。
  • 为改进self-ensembling,本文设计了新的数据增强方法

    • 基于GAN,生成能够保留语义内容的增强图像。因为未保留语义内容的图像,将会破坏分割的性能,由于增强后的图像和作为源标签的图像在像素上的不匹配
    • 为解决上述问题,该方法于生成器中加入了语义约束(Semantic Constraint),来保留全局和局部的结构。
    • 此外,本文提出了目标导向的生成器,能够基于目标领域抽取的风格信息来生成图片。这样,该方法生成的图像又能保留语义信息,又能只迁移目标图像的风格。
  • 大多数Image-to-Image Translation都是依赖于不同形式的Cycle-Consistency

    • 有两个限制
      • 需要多余的模块,比如两个生成器
      • 若是数据不平衡的话,源领域和目标领域的约束过于强烈。也就是说,不管怎么生成,就那几种图像,类似于Model Collapse吧
    • 而本文的方法由于它的设计,就不需要考虑Cycle-consistency了
  • 整个模型的框架如下图所示
    在这里插入图片描述

    • 步骤一,给定有标签的合成数据及无标签的真实数据,生成带有标签的增强数据(我认为,这里的标签就是源标签)
    • 步骤二,作者将关键信息写到了这里,使用两个分割网络作为教师和学生,以使用Self-ensembling算法。这两个网络都使用了合成数据、增强后的数据以及真实数据。在训练过程中,教师网络会将知识迁移到学生网络中。

3. Proposed Method

​ 提升self-ensembling用于语义分割的兼容性的方法是,基于GAN增强后的数据来对齐源领域和目标领域之间的表达,而不是self-ensembling用于分类中的几何转变。为了这个目的,本文设计了以下的模型。

3.1 Target-guided generator

  • TGCF-DA的模型图如下所示
    在这里插入图片描述

    • 基于假设,图像表达可被分为两部分:内容和图像,设计了以上结构
      • 使用Souce Encoder来抽取源图像的内容表达
      • 再使用Target Encoder来抽取目标图像的风格表达
    • 为了结合源图像的内容和目标图像的风格,使用AdaIN算法
  • 根据上面的设计,生成器G得到的图像将会在保留源图像内容的同时,迁移目标图像的风格。也就是改变源图像,如GTA5的虚拟风格,变成现实风格。最后,将生成图像作为fake data,目标领域作为real data,输入判别器。

3.2 Semantic constraint

  • 由于没有使用Cycle-consistency,本文使用Semantic Constriant来约束生成图像的语义信息。具体的做法如下
    • 设定一个预训练好的分割模型,本文使用的是FCN-8s
    • 将生成的图像输入得到分割后的掩码
    • 分割后的掩码和源图像的标签做交叉熵
  • 这个做法类似于相当于风格迁移中,计算内容损失的做法。

3.3 Target-guided and cycle-free data augmentation

  • 本文对于GAN框架的构建如下

    • Discriminator的构建是基于Hpix2pix的,详见原文中的参考文献

    • 使用LSGAN的损失作为对抗损失,并基于spectral normalization的方法稳定GAN的训练

      L G A N ( G , D ) = E ( x s , s t ) ( P S , P T ) [ D ( G ( s s , s t ) ) 2 ] + E x t P t [ ( D ( x t ) 1 ) 2 ] . L_{GAN}(G, D) = E_{(x_s, s_t)\thicksim(P_S, P_T)}[D(G(s_s, s_t))^2] + E_{x_t\thicksim P_t}[(D(x_t) - 1)^2].

  • 对抗损失能够保证G生成的新图像在视觉上和目标图像相似。由于分割模型 f s e g f_{seg} 固定了,可以联合训练生成器和判别器来优化总损失

    L T G C F D A = L G A N + λ L s e m L_{TGCF-DA} = L_{GAN} + \lambda L_{sem}

  • 经过上述损失预训练后的生成器,将被用来合成增强数据,为后续的self-ensembling做准备。

3.4 Self-ensembling

  • 构建了教师网络 f T f_T 和学生网络 f S f_S 。步骤t中,教师网络的参数 t i t_i 由学生网络根据下列公式计算得到

    t i = α t i 1 + ( 1 α ) s i t_i = \alpha t_{i-1} + (1 - \alpha)s_i

  • 在训练的过程中,每个mini-batch都会包含以下数据

    • source samples 源样本
    • augmented samples 增强样本
    • target samples 目标样本
  • 源样本和增强样本将会被用来计算监督损失 L s u p L_{sup} ,即对于语义分割的交叉熵。这个损失函数能使得学生网络,对于源数据和增强数据,都产生语义上更加精准的预测。

  • 一致性损失 L c o n L_{con} 是学生网络和教师网络生成的预测图的均方差

    L c o n ( f S , f T ) = E x t P T [ σ ( f S ( x t ) ) σ ( f T ( x t ) ) 2 ] L_{con}(f_S, f_T) = E_{x_t \thicksim P_T}[||\sigma (f_S(x_t)) - \sigma (f_T(x_t))||^2]

    这里的 σ \sigma 是softmax函数,用来计算预测图的概率

  • 总体的损失如下

    L t o t a l = L s u p + δ c o n L c o n L_{total} = L_{sup} + \delta_{con} L_{con}

    这里的 δ c o n \delta_{con} 是一致性损失的权重

3.5 Data augmentation for target samples

​ 看到这一块内容,稍微有些迷糊,特别是作者的第一句话:这里的对于目标样本的数据增强和TGCF-DA并不相关,差点就被带偏了,不知道理解到什么地方了。不过仔细看了一下后面的内容,得到如下理解

  • 这里对target samples增强是为了在self-ensembling中计算consistency loss。对于目标样本的随机数据增强,是为了强迫学生网络针对相同的目标样本得到不同的预测,以更好的训练学生和教师网络。
  • 根据前文,常规self-ensembling中的几何变换对于像素级别的预测任务并无帮助。因此,本文在目标样本中注入高斯噪声,并分别喂给学生和教师网络。此外,对于网络参数还是用了Dropout。
  • 因此,学生网络在目标样本有扰动的情况下,还必须得产生和教师网络一致的预测,这也变相了提升了模型的性能。

4. Experiments

​ 在做实验之前,作者略微详细的介绍了用到的数据集如:GTA5,Cityscapes等。对于实验的配置,作者说的很详细,建议详细阅读。比如TGCF-DA的具体构造,生成器和判别器都是挑了比较好的结构,一起一些超参数的设置。此外,还讲了self-ensembling中,对于分割网络的选择,选择哪一层计算损失等。

4.1 Experimental results

  • 作者将自己的方法与CycleGAN,MCD,DCAN等一堆方法进行比较。该实验首先在GTA5或者SYNTHIA数据集上,训练分割网络,并在Cityscapes的验证集上验证。实验得结果如下表所示
    在这里插入图片描述

    • 表中的Self-Ensembling,代表着由源数据和目标数据(未加入增强数据)训练得到的分割网络的性能
    • 表中的TGCF-DA表明由源数据、目标数据、TGCF-DA生成的增强数据,共同训练的分割网络
    • 表中的**Ours(TGCF-DA + SE)**表明结合了TGCF-DA和Self-Enembling方法,得到的分割网络
    • 表中的mIoU*代表的是,13个常见类别的mIoU,因为数据集中有些类别出现次数不多。但具体是哪13个类并没有讲,可能会在作者提供的附件里
    • 表中的Source Only声明了只在源数据集上训练的分割模型的效果
    • 表中的Target Only声明了在监督设定下训练的分割模型的效果
  • 作为刚接触Domain Adaption的小白,对于这个实验一直耿耿于怀。首先是对于表中的Baseline(Source Only)的不理解,其次是对Target Only的不了解。经反复思考后,理解如下

    • **Baseline(Source Only)**既然都说了是Source Only,而且文中又把增强后的数据叫做Augmented Data。对应上面的表格,Baseline应该指的就是GTA5和SYNTHIA中的原始训练集,训练得到的分割模型,那效果肯定差。

    • 接下来一系列的方法,CycleGAN,MCD,DCAN等,应该都是使用进行Domain Shift后的数据配合原始的mask标签,来训练分割网络,那为什么效果会差呢?根据文中的描述,原因有二

      • 首先是,经过Domain Shift图像的内容结构可能被破坏了,导致原始的mask标签不匹配,从而产生语义上的损失。如,车子经过domain shift之后形状变了,但对应的mask掩码标签却没变,那效果肯定差
      • 其次是,负迁移造成的影响,有些类别过于稀疏,在Domain Shift的时候导致转换有误,如,前面的例子,将马路的知识迁移到了天空上
    • 然后就是纯Self-Ensembling方法了,效果有一定提升,但是没本文方法提升的多。但作者在前文就指出原始的Self-Ensembling适用于分类网络,但却不太适用于分割网络。我理解是:由于Self-Ensembling是通过形变原始数据得到增强数据,来提升分类模型的性能;而在分割网络中,形变原始数据会导致其和mask标签不匹配,破坏了内容结构,所以效果变差

    • 最后就是文中提到的两个方法

      • 先是只使用了TGCF-DA,效果提升一般,和已有方法区别不大。这说明,抛弃Cycle Consistency,理想化的将图像分为content和style,并通过AdaIN方法进行结合等一系列操作,并没有达到作者预期的效果。我觉得作者可能一开始只提出了这个方法,做了实验之后发现效果居然没有好太多,再考虑将Self-ensembling的方法加入来提升网络的性能。不过,这个方法还是很有创意,巧妙地将任意风格迁移和GAN结合在了一起,值得我思考。

      • 然后就是TGCF-DA + Self-ensembling,效果简直超神,顺利毕业。原理就是,通过TGCF-DA预训练模型生成增强数据,然后配合学生、老师网络进行训练,最后得到一个更好的分割模型。如下图
        在这里插入图片描述

4.2 Ablation studies

  • 首先,做了Self-Ensembling的消融实验,如下图
    在这里插入图片描述

    • 在上一实验的表格中,就发现纯Self-Ensembling效果很差
    • 这就说明了,主要的功劳并不在Self-Ensembling的应用上,而是TGCF-DA + Self-Ensembling上
  • 其次,做了TGCF-DA的消融实验

    • 在上一实验表格中,发现TGCF-DA能有效提升分割模型的效果。
    • 其次,通过图示风格模型的mIOU,发现纯Self-Ensembling在第8个epoch就达到了极大值,继续训练效果变差,而TGCF-DA + Self-Ensembling效果持续上升,说明二者结合才是王道。也从侧面说明了TGCF-DA的重要性
  • **在消融实验中,作者想表明TGCF-DA + Self-Ensembling结合的重要性,并将主要功劳放在TGCF-DA上。但正如我前文所说,TGCF-DA的效果和其他方法相差不多,那是否将其他方法和Self-Ensembling结合,也会得到更好的效果呢?**不过,这也是我鸡蛋里挑骨头了,本文主要的贡献已经很多了,就比如TGCF-DA + Self-Ensembling结合训分割模型,提升性能,也是本文的卖点。

5. Analysis

​ 在这块内容,作者可视化了几个模块的结果,并进行进一步的分析。

5.1 Visualizaton

  • 首先是对于Self-Ensembling中间结果的可视化,如下图
    在这里插入图片描述

    • 图中表明,教师网络能够很好的指导学生网络进行训练。
    • 此外,根据热力图可以发现,consistency loss在训练中会逐渐关注到物体的轮廓,从而微调轮廓提升预测的效果。
  • 其次是,可视化自己的增强数据
    在这里插入图片描述

    • 根据作者的描述,大多数方法都扰乱了物体的轮廓
    • 甚至,有的方法发生了“负迁移”,就是将天空迁移到了马路上,但作者在这里没提“负迁移”,提了一个叫“spills over”的概念,我思索一下就是“负迁移”。
    • 从而,得出自己的方法计算得快,在视觉程度上效果还好。

5.2 Analysis of self-ensembling with per-class IoUs

  • 为了更好的理解self-ensembling,作者比较了在使用self-ensembling下,不同类别精度的提升情况,如下图
    在这里插入图片描述

  • 可以看到,每个类别提升的程度不同。作者人为原因是各个类别数据的不平衡。数据越多的类,提升的效果也越明显。在Self-ensembling中,这个效果会越明显。因为学生网络持续学习到教师网络的预测,那么将会不断的在稀少类别上做出错误的预测。这也印证了作者说的:教师网络的预测是学生网络的伪标签。

  • 这一块实验个人感觉精华就是:类别下拥有的数据越多,提升性能越大

6. Conclusion

  • 作者在文章的结尾,还解释了各种超参数的设计和原因,若是对文章感兴趣的朋友可以自行阅读。
  • 那么,我在看完这篇文章后,总结如下
    • Domain Adaption可以通过迁移真实数据的知识到虚拟数据中,获得增强后的数据,以缓解基于深度学习的语义分割任务中,对于大量标注数据的需求。
    • 但是,现有的Domain Adaption方法有以下问题
      • 生成的增强图像内容信息损失,如结构紊乱,和源数据的标签不匹配了
      • 生成的增强图像发生了“负迁移”,导致知识迁移的位置不正确,如“天空”迁移到“马路”上
      • 现有的Domain Shift方法大多基于Cycle-consistency,参数多耗时耗力
    • 故本文提出了基于GAN的数据增强方法TGCF-DA
      • 两个Encoder,一个抽取源数据的内容,另一个抽取目标数据的风格
      • 抽取到的内容和风格通过AdaIN结合在一起构成Generator,生成fake图像
      • fake图像,和目标数据集中的图像作为Discriminator的输入,更新Generator
    • 但仅用TGCF-DA生成的增强数据训练分割网络和其他的方法效果差不多,故本文又引入了Self-ensembling来训练分割网络。稍微不同的是,原始的Self-ensembling改变图像的形状,但本文是给图像注入高斯噪音。因为改变几何形状会破坏图像和mask标签的匹配性
    • 最后,TGCF-DA + Self-ensembling的结合,在实验上取得了令人瞩目的效果
  • 我认为本文的亮点如下
    • TGCF-DA网络的构造,结合了GAN+任意风格迁移,很新颖
    • TGCF-DA + Self-ensembling,说白了就是将Domain Shit方法和Self-ensembling方法结合在一起。
  • 我认为本文未解释清楚的就是,没有做实验证明, 其他的Domain Shift方法和Self-ensembling结合在一起,是否也会得到很好的效果

最后,感谢本文作者的贡献,respect! 本文的github.io版请走传送门

注:本文为作者原创,转载需注明出处!

发布了21 篇原创文章 · 获赞 60 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/GodWriter/article/details/103488959