飞桨PaddlePaddle之论文复现心得 U-GAT-IT

感谢百度飞桨提供的论文复现营的课程,本人对U-GAT-IT这篇论文很感兴趣。

论文复现课程链接:

https://aistudio.baidu.com/aistudio/education/group/info/1340

selfie2anime数据下载参考下面链接:

https://blog.csdn.net/KF_Guan/article/details/107859946

查阅一下资料以及百度大咖对这篇论文的解读,总结一下学习心得。

这篇论文的主要创新点是

1.提出了一种新的无监督图像到图像的翻译方法,该方法具有一个新的注意模块和一个新的归一化函数AdaLIN。
2.注意模块根据辅助分类器获得的注意图,通过区分源域和目标域,帮助模型知道在哪里进行集中转换。
3.AdaLIN 功能帮助注意力引导模型灵活地控制形状和纹理的变化量,增强模型鲁棒性。

U-GAT-IT的模型如下:

preview

生成器结构可以归结下来有以下几个点:

  • 编码器中没有采用AdaILN以及ILN,而且只采用了IN,原文给出了解释:在分类问题中,LN的性能并不比批规范化好,由于辅助分类器与生成器中的编码器连接,为了提高辅助分类器的精度,我们使用实例规范化(批规范化,小批量大小为1)代替AdaLIN;
  • 使用类别激活图(CAM)来得到注意力权重;
  • 通过注意力特征图得到解码器中AdaILN的gamma和beta;
  • 解码器中残差块使用的AdaILN,而其他块使用的是ILN;
  • 使用镜像填充,而不是0填充;
  • 所有激活函数使用的是RELU

而鉴别器具体结构与生成器类似,不过规范化使用的是谱规范化,使训练更加稳定,收敛得更好,激活函数使用的是leakyrelu

如何实现图像编码后注意力模块以及 AdaLIN 怎样引导解码得到目标域图像的呢?

CAM & Auxillary classifier

对于这部分计算 CAM,结合模型结构图做进一步理解:

由上图,我们可以看到对于图像经过下采样和残差块得到的 Encoder Feature map 经过 Global average pooling 和 Global max pooling 后得到依托通道数的特征向量。创建可学习参数 weight,经过全连接层压缩到 B×1 维,这里的 B 是 BatchSize,对于图像转换,通常取为 1。

对于学习参数 weight 和 Encoder Feature map 做 multiply(对应位想乘)也就是对于 Encoder Feature map 的每一个通道,我们赋予一个权重,这个权重决定了这一通道对应特征的重要性,这就实现了 Feature map 下的注意力机制。

对于经过全连接得到的 B×1 维,在 average 和 max pooling 下做 concat 后送入分类,做源域和目标域的分类判断,这是个无监督过程,仅仅知道的是源域和目标域,这种二分类问题在 CAM 全局和平均池化下可以实现很好的分类。

当生成器可以很好的区分出源域和目标域输入时在注意力模块下可以帮助模型知道在何处进行密集转换。将 average 和 max 得到的注意力图做 concat,经过一层卷积层还原为输入通道数,便送入 AdaLIN 下进行自适应归一化。

AdaLIN

由上图,完整的 AdaLIN 操作就是上图展示,对于经过 CAM 得到的输出,首先经过 MLP 多层感知机得到 γ,β,在 Adaptive Instance Layer resblock 中,中间就是 AdaLIN 归一化。

AdaLIN 正如图中展示的那样,就是 Instance Normalization 和 Layer Normalization 的结合,学习参数为 ρ,论文作者也是参考自 BIN [3]设计。AdaIN 的前提是保证通道之间不相关,因为它仅对图像 map 本身做归一化,文中说明 AdaIN 会保留稍多的内容结构,而 LN 则并没有假设通道相关性,它做了全局的归一化,却不能很好的保留内容结构,AdaLIN 的设计正是为了结合 AdaIN 和 LN 的优点。

 

参考链接:

https://github.com/FangYang970206/PaperNote/blob/master/GAN/UGATIT.md

https://www.sohu.com/a/333947112_500659

论文复现课程U-GAT-IT讲解链接:

https://aistudio.baidu.com/aistudio/education/lessonvideo/515097

pytorch代码

https://github.com/znxlwm/UGATIT-pytorch

tensorflow代码

https://github.com/taki0112/UGATIT

 


 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
U-GAT-IT是一种基于对抗生成网络(GAN)的图像翻译模型,它可以将一种风格的图像转换为另一种风格的图像。该模型的核心是利用生成器和判别器两个网络进行对抗训练。其中,生成器负责将输入图像转换为目标风格的图像,判别器则负责判断生成器生成的图像是否真实。 U-GAT-IT的损失函数主要由三部分组成: 1. 重构损失 重构损失用于保证生成器生成的图像与输入图像之间的相似性。具体来说,它是由输入图像和生成器生成的图像之间的L1范数差异和目标风格图像和生成器生成的目标风格图像之间的L1范数差异构成。 2. 判别器损失 判别器损失用于训练判别器,使其能够准确地区分生成器生成的图像和真实的目标风格图像。具体来说,它是由生成器生成的图像和真实目标风格图像之间的L1范数差异以及生成器生成的图像和目标风格图像之间的判别器损失构成。 3. 生成器损失 生成器损失用于训练生成器,使其能够生成更加逼真的目标风格图像。具体来说,它是由生成器生成的图像被判别器判定为真实图像的概率的负对数和生成器生成的目标风格图像和目标风格图像之间的L1范数差异构成。 以上三部分损失函数会同时作用于生成器和判别器,通过对抗训练,生成器会不断提高生成的图像的质量,判别器会不断提高判别生成的图像和真实图像的准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值