【百度顶会论文复现营】【飞桨PaddlePaddle】U-GAT-IT论文阅读笔记
U-GAT-IT提出了一种新的无监督图像到图像转换方法,是一个端到端的网络。加入了注意力模块和自适应Layer-Instance Normalization(AdaLIN)。
注意力机制
采用全局和平均池化下的类**图(CAM)。它能找出对于判断一张图的真假最重要的区域。
算法由两个GAN组成。一个GAN(下文称为GAN1)负责源域到目标域的转换,另一个GAN(下文称为GAN2)负责目标域到源域的转换。以selfie2anime为例:
GAN1的判别器需要判别一张图片是否和数据集中的漫画人物形象属于一个类别。如果不是,就判定是生成器生成的图片。这个判别器中有一个辅助分类器CAM,会找出对判定类别更重要的区域,同时引导生成器将注意力集中在这部分区域。
GAN1生成器中的辅助分类器则会找出属于人物自拍照中的重要区域。将这两个域中的重要区域作比对,注意力图通过关注目标域中的真实图像和伪图像之间的差异来帮助微调。
GAN2的辅助分类器同理,与GAN1的区别是生成方向相反。
具体的attention步骤如下:
- 通过网络的编码器得到特征图,例如B×C×H×W
- 对特征图的最大池化成B×C×1×1
- 经过全连接层输出一个节点的预测logits(B×1),然后将这个全连接层的参数(B×C个w权重),和特征图相乘得到最大池化attention的特征图
- 同样对特征图均值池化然后同样的操作得到一个节点的预测logits和均值池化attention的特征图
- 将两个logits进行concat(维度B×2),送入辅助分类器,做源域和目标域的分类判断。这是个无监督过程,仅仅知道是源域和目标域。
- 将两个特征图concat得到B×(C×2)×H×W的特征图,将新的特征图经过1×1卷积将通道改变成C送入解码器,同时通过将特征图flatten经过全连接得到C通道的γ和β,作为AdaILN的参数。
- 同样的attention操作作用于判别器,区别是判别器中的CAM不做域的分类,但注意力机制有助于提高判断图像真伪的能力。
归一化方式
生成器的编码器使用IN,解码器的残差模块使用AdaLIN,解码器的上采样部分使用LIN。判别器使用SN(是为了解决GAN训练不稳定的问题,从“层参数”的角度用Spectral Normalization的方式施加正则化,从而使判别器D具备Lipschitz连续条件,其意义在于使得判别器D足够稳定,在输入发生少量变化时,输出不会有太巨大的变化)。
AdaLIN
AdaLIN就是instance normalization和layer normalization的结合。AdaLIN的前提要保证通道之间不相关。因为它仅仅对图像map做归一化。
图1 几种归一化方式的区别
IN与LN的异同:
相同点:都是对instance做归一化,与Batch无关;
不同点:IN进一步局限于单个通道之间,而LN则跨过所有通道。
IN假设不同特征图的不同通道之间是无关的,因此单独作用于每个通道可能会引入对原来语义的干扰;而LN尽管是对所有通道作权衡,但考虑到归一化的本质还是“平滑”,容易抹消一些语义信息。总的来说IN比LN更容易保持原图像的语义信息,但是风格转换不彻底;LN风格转换更彻底,但是语义信息保存不足,因此才有了自适应的LIN层,控制IN和LN的比例。
自适应的思想是寻找一个比率ρ,权衡IN与LN的关系:ρ·IN+(1-ρ)·LN。其中ρ经过训练得到。
具体步骤:
1、结合注意力图的输出a和参数γ、β,先分别以IN和LN的方式求出均值μI、μL,标准差σI、σL,对特征进行归一化
2、加权求和:
损失函数
包含了4个部分:
1、生成对抗损失,文中采用的是最小二乘GAN的目标函数
2、循环损失,保证目标域生成的图像还可转换到源域,给生成器一个循环一致性的约束
3、身份损失,保证输入图像和输出图像的色彩分布类似,给生成器一个身份一致性的约束;
4、CAM损失,生成器中对图像域分类,希望源域和目标域尽可能分开,这部分利用了交叉熵损失
优化目标
其中,λ1=1,λ2=10,λ3=10,λ4=1000。(其他损失以类似的方式定义)。
U-GAT-IT
U-GAT-IT的网络体系结构如图2-5所示。生成器的编码器由两个步长大小为2的卷积层(用于下采样)和四个残差模块组成。生成器的解码器由四个残差模块和两个步长为1的卷积层组成(用于上采样)。判别器由局部判别器和全局判别器组成,二者的区别是全局判别器对输入图像有更深层次的特征压缩。
图2 网络结构示意图
图3 生成器结构
图4 局部判别器结构
图5 全局判别器结构
实现
作者提了一些trick,如G用ReLU做**,D用Leaky ReLU(slope=0.2)**。采用multi-scale的PatchGAN。训练的时候,对lr前500k个iterations固定1e-4,然后线性衰减,共1000k个iterations。对权重的正则化项系数取0.02.
附录
最小二乘GAN
常规GAN存在训练不容易收敛和模式坍塌的问题。虽然Wasserstein 生成对抗网络(WGAN)的提出已经克服了模型崩溃难题并给生成对抗提供了十分强大的损失函数,但WGAN 背后的理论是十分困难且WGAN 的训练过程和收敛都要比常规 GAN 要慢。
最小二乘GAN是一个比 WGAN 运行得更稳定、收敛更快速、流程更简单更直接的生成对抗网络。
LSGAN 的主要思想就是在辨别器 D 中使用更加平滑和非饱和(non-saturating)梯度的损失函数。我们想要辨别器(discriminator)D 将生成器(generator)G 所生成的数据「拖」到真实数据流形(data manifold)Pdata(X),从而使得生成器 G 生成类似 Pdata(X) 的数据。
我们知道在常规 GAN 中,辨别器使用的是对数损失(log loss.)。而对数损失的决策边界就如下图所示:
因为辨别器 D 使用的是 sigmoid 函数,并且由于 sigmoid 函数饱和得十分迅速,所以即使是十分小的数据点 x,该函数也会迅速忽略 x 到决策边界 w 的距离。这也就意味着 sigmoid 函数本质上不会惩罚远离 w 的 x。这也就说明我们满足于将 x 标注正确,因此随着 x 变得越来越大,辨别器 D 的梯度就会很快地下降到 0。因此对数损失并不关心距离,它仅仅关注于是否正确分类。
为了学习 Pdata(X) 的流形(manifold),对数损失(log loss)就不再有效了。由于生成器 G 是使用辨别器 D 的梯度进行训练的,那么如果辨别器的梯度很快就饱和到 0,生成器 G 就不能获取足够学习 Pdata(X) 所需要的信息。
输入 L2 损失(L2 loss):
在 L2 损失(L2 loss)中,与 w(即上例图中 Pdata(X) 的回归线)相当远的数据将会获得与距离成比例的惩罚。因此梯度就只有在 w 完全拟合所有数据 x 的情况下才为 0。如果生成器 G 没有没有捕获数据流形(data manifold),那么这将能确保辨别器 D 服从多信息梯度(informative gradients)。
在优化过程中,辨别器 D 的 L2 损失想要减小的唯一方法就是使得生成器 G 生成的 x 尽可能地接近 w。只有这样,生成器 G 才能学会匹配 Pdata(X)。
最小二乘生成对抗网络(LSGAN)的整体训练目标可以用以下方程式表达:
在上面方程式中,我们选择 b=1 表明它为真实的数据,a=0 表明其为伪造数据。最后 c=1 表明我们想欺骗辨别器 D。
但是这些值并不是唯一有效的值。LSGAN 作者提供了一些优化上述损失的理论,即如果 b-c=1 并且 b-a=2,那么优化上述损失就等同于最小化 Pearson χ^2 散度(Pearson χ^2 divergence)。因此,选择 a=-1、b=1 和 c=0 也是同样有效的。
我们最终的训练目标就是以下方程式所表达的:
参考网址:
https://blog.****.net/syysyf99/article/details/100120952
https://blog.****.net/weixin_35576881/article/details/91563347
http://www.aieve.cn/article/1577673210965
https://www.sohu.com/a/127929329_465975
http://jialexu.com/index.php/archives/392/
https://blog.****.net/c9Yv2cf9I06K2A9E/article/details/99668764
https://www.cnblogs.com/fydeblog/p/11424404.html
论文复现课程链接:
https://aistudio.baidu.com/aistudio/education/group/info/1340