1.Semantic Segmentation using Adversarial Networks(NIPS2016)
论文地址:https://arxiv.org/abs/1611.08408
这篇论文是首次将GAN思想用于semantic segmentation.
基本的分割网络(FCN, DeepLab, PSPNet……)就是GAN中的生成器。然后在生成网络之后加一个判别网络结构,如图所示:
左边Segmentor就是传统的CNN-based分割网络,Convnet中可以看到有convolution和deconvolution过程;右边Adversarial network是GAN中的判别器,最后用sigmoid activation进行二分类。
Segmentor这个部分会有两种训练图片输入到右边的Adversarial network中:
组合1:原始训练图片+ground truth, 这时候判别器判别为 1 标签;
组合2:原始训练图片+Segmentor分割结果, 这时候判别器判别为0标签。
然后训练过程就是经典的博弈思想,相互提高网络的ability, 提高分割精度,提高鉴别能力
Loss如下:
第一项为多分类交叉熵loss,后面为对抗loss
训练对抗模型:
训练生成模型:
由于刚开始生成器比较弱,很容易判断为0,故像gan一样将其更换为判别为1的概率。
网络结构:
2:SegAN: Adversarial Network with Multi-scale L1 Loss for Medical Image (SegmentationNeuroinformatics (2018))
论文地址:https://arxiv.org/abs/1706.01805
代码:https://github.com/YuanXue1993/SegAN
作者设计了一个可以进行学习的loss函数(一个神经网络的输出作为loss)。此外,作者没有直接用预测图与ground truth二值图计算loss,而是分别利用它们对原图进行掩膜后再计算loss。
网络结构如下:
Loss:
最后的loss计算两个不同输出之间的MAE值(L1 loss)。其中Multi-scale体现在对critic部分每一个卷积层输出的特征图像都计算MAE值,最后的总loss取平均。
训练过程:
训练方式类似于GAN的min-max对抗学习过程。首先,固定S(segmentor),对C(critic)进行一轮训练;再固定C(critic),对S(segmentor)进行一轮训练,如此反复。对 critic 的训练想使loss变大(min),对 segmentor 训练想使loss变小(max)