GAN Loss可以应用在语义分割上来提升性能吗?

关注者
95
被浏览
81,936

5 个回答

谢邀。


关于把GAN loss 应用在语义分割上的试探,在2016年就有研究人员做过了。 来自与facebook的研究人员,尝试结合GAN的loss和分割的训练:

全文主要致力于解决分割的gt是离散的one-hot label,而生成的语义分割结果是连续的概率分布,从而导致D对于这两种不同的数据分布非常容易区分这个问题。

虽然在经历了一系列操作之后,作者可以展示存在一些图片在GAN的训练下可视化效果更好了,例如

但是最终在测试集上,加GAN和不加GAN的miou基本没有差别,

据笔者猜测,很大可能是由于判别器D学得真实分布real,是作者生成的连续分布,并非真实的连续分布。笔者也在FCN这个简单的结构上进行了一定的尝试,发现对于mIoU的提升并不明显。


后续也有一些工作follow这个方向,也有把GAN 应用在生成难以分割的边界样本这类的工作,取得了一定的进展。


2018年笔者在微软亚洲研究院实习的时候,开始研究语义分割和知识蒸馏结合的工作,通过训练一个大模型(教师模型),并且把大模型的输出进行一定的统计量提取,从而约束对应的小模型(学生模型)统计量。这种方法可以加速小模型的训练,不改变小模型的测试时间的情况下,一定程度上提升小模型的性能。


在尝试了像素级别的约束和像素对级别的约束后,笔者忽然想到两年前关于GAN的尝试,忽然发现,教师模型的输出是来源于真实数据的概率分布,正好可以解决利用GAN训练时没有real样本的问题。于是,进行了尝试让学生模型的输出分割图作为fake sample,教师模型的输出作为real sample,在蒸馏的基础上增加了GAN的约束,实验效果还不错。


方法和实验过程整理发表了2019年的cvpr, zpascal.net/cvpr2019/Li



我们利用多种网络结构在CamVid,Cityscapes和ADE20K上都进行了实验,取得了不错的效果。

可视化的结果也可以看出分割的效果提升明显,

后续我们也拓展了depth evaluation和基于FCOS的detection蒸馏实验: h ttps://arxiv.org/pdf/1903.04197.pdf


总的来说,在蒸馏的帮助下,GAN loss可以提升分割的性能,最主要的原因来源于真实分布是真是来源于数据的,而非基于人类先验生成的。

GAN直接拿来做分割肯定是不靠谱的,看pix2pix那篇文章, GAN会生成Grounf truth里完全没有的内容 。这个问题非常严重,比如自动驾驶场景,前面有一个人,拿GAN去做分割却得到一辆车!车就会继续开过去!

个人的理解是, 判别器的判别的是两个域的数据分布是否相同 。生成的分割图和Ground Truth的数据分布相差甚小,GAN Loss提供不了太多有益的信息。

但拿GAN来做弱监督/无监督倒是个思路,有这些文章:

  • [Semi and Weakly Supervised Semantic Segmentation Using Generative Adversarial Network]
  • [Unsupervised Object Segmentation by Redrawing]

这是一篇用GAN做Domain Adaptation分割的文章:

  • [Taking A Closer Look at Domain Shift Category-level Adversaries for Semantics Consistent Domain Adaptation]


GitHub上有个项目总结了GAN在医疗图像上的应用,其中分割有这么多: