[semantic segmentation] using Adversarial Networks 论文学习
论文地址:
Semantic Segmentation using Adversarial Networks NIPS 2016
https://arxiv.org/abs/1611.08408
1. 网络结构
这篇论文是首次将GAN思想用于semantic segmentation.
在GAN中,有生成器和判别器,生成器生成fake样本然后判别器进行鉴别,随着训练的进行,生成器的fake样本越接近与数据真实分布,判别器也越难分辨真伪。
将GAN用于分割,实际上,基本的分割网络(FCN, DeepLab, PSPNet……)就是GAN中的生成器。换句话说,GAN用于分割不需要另外再构造一个生成网络,传统分割网络就是生成网络。然后在生成网络之后加一个判别网络结构,如图所示:
左边Segmentor就是传统的CNN-based分割网络,Convnet中可以看到有convolution和deconvolution过程;右边Adversarial network是GAN中的判别器,最后用sigmoid activation进行二分类。
Segmentor这个部分会有两种训练图片输入到右边的Adversarial network中:
组合1:原始训练图片+ground truth, 这时候判别器判别为 1 标签;
组合2:原始训练图片+Segmentor分割结果, 这时候判别器判别为0标签。
然后训练过程就是经典的博弈思想,相互提高网络的ability, 提高分割精度,提高鉴别能力。
2. 对抗训练
论文提出了混合损失函数,讲cross entropy和GAN的损失结合起来了
对抗训练分成两个步骤迭代,训练思想与EM算法有点像,需要找到两个参数最优相互调整,先固定一个参数,调整另一个参数,再循环迭代。
步骤1:训练对抗模型
相当于训练GAN辨别真伪的能力
步骤2:训练分割模型
这时候,(2)式是(1)总loss中的对抗网络部分,所以在训练分割模型的时候必须加上每个pixel的相互熵损失,也就是(1)中第一项,但是同时分割模型需要对抗网络的反馈,需要朝哪个方向训练作为训练方向
可以看到(3)式中的正则化项就是来自于(2)中的第二项,这也是论文中提到的参数共享的思想。
3. 实验结果分析
论文用了 Stanford background 和 Pascal VOC 2012 数据集
在Stanford的实验结果比较好,可能是因为数据集也小,但在Pascal的效果不明显,精度和原模型差异不大~
Stanford结构
Pascal结构
参考资源链接:
[1]博客1:http://blog.csdn.net/diligent_321/article/details/55224631
[2]知乎:https://zhuanlan.zhihu.com/p/25201511