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

文章目录

  • 前言
  • 论文引入
  • 模型结构
    • CAM & Auxillary classifier
    • AdaLIN
    • 判别器
    • 损失函数
    • Trick 和 AdaLIN 实现代码
  • 实验
  • 总结

前言

生成对抗网络(GAN)在这几年的发展下已经渐渐沉淀下来,在网络的架构、训练的稳定性控制、模型参数设计上都有了指导性的研究成果。我们可以看出 17、18 年大部分关于 GAN 的有影响力的文章多集中在模型自身的理论改进上,如 PGGAN、SNGAN、SAGAN、BigGAN、StyleGAN 等,这些模型都还在强调如何通过随机采样生成高质量图像。19 年关于 GAN 的有影响力的文章则更加关注 GAN 的应用上,如 FUNIT、SPADE 等已经将注意力放在了应用层,也就是如何利用 GAN 做好图像翻译等实际应用任务。

学术上的一致性也暗示了 GAN 研究的成熟,本文主要介绍一篇利用 GAN 的新型无监督图像转换论文。

论文引入

图像到图像转换可以应用在很多计算机视觉任务,图像分割、图像修复、图像着色、图像超分辨率、图像风格(场景)变换等都是图像到图像转换的范畴。生成对抗网络 [1] 不仅仅在模型训练的收敛速度上,同时在图像转换质量上展示了优越的结果。

这些优越性能相比 Pixel CNN、VAE、Glow 都是具有很大竞争力的。所以近年来的围绕 GAN 实现图像翻译的研究是很多的,例如 CycleGAN、UNIT、MUNIT、DRIT、FUNIT、SPADE。图像翻译是 GAN 铺开应用的第一步,跨模态间的转换,文本到图像、文本到视频、语音到视频等,凡是这种端到端,希望实现一个分布到另一个分布转换的过程,GAN 都是可以发挥一定的作用的。

回归到现实,图像到图像的转换到目前为止还是具有一定挑战性的,大多数的工作都围绕着局部纹理间的转换展开的,例如人脸属性变换、画作的风格变换、图像分割等,但是在图像差异性较大的情况下,在猫到狗或者是仅仅是语义联系的图像转换上的表现则不佳的。

这就是图像转换模型的适用域问题了,实现一个具有多任务下鲁棒的图像转换模型是十分有必要的。本文将要介绍的 U-GAT-IT 正是为了实现这种鲁棒性能设计的,我们先宏观的看一下文章采用何种方式去实现这种鲁棒性能。

首先是引入注意力机制,这里的注意力机制并不传统的 Attention 或者 Self-Attention 的计算全图的权重作为关注,而是采用全局和平均池化下的类激活图(Class Activation Map-CAM)[2] 来实现的,CAM 对于做分类和检测的应该很熟悉,通过 CNN 确定分类依据的位置,这个思想和注意力是一致的,同时这对于无监督下语义信息的一致性判断也是有作用的,这块我们后续再进行展开。

有了这个注意力图,文章再加上自适应图层实例归一化(AdaLIN),其作用是帮助注意力引导模型灵活控制形状和纹理的变化量。有了上述的两项作用,使得 U-GAT-IT 实现了鲁棒下的图像转换。总结一下 U-GAT-IT 的优势:

  • 提出了一种新的无监督图像到图像转换方法,它具有新的注意模块和新的归一化函数 AdaLIN。
  • 注意模块通过基于辅助分类器获得的注意力图区分源域和目标域,帮助模型知道在何处进行密集转换。
  • AdaLIN功能帮助注意力引导模型灵活地控制形状和纹理的变化量,增强模型鲁棒性。

模型结构

端到端模型最直观的展示就是模型结构图,我们看一下 U-GAT-IT 实现结构:


我们先把我们能直观看懂的部分做一个介绍,模型分为生成器和判别器,可以看到生成器和判别器的结构几乎相同,生成器好像多了一点操作(这多的这点就是 AdaLIN 和 Decoder部分),我们分析生成器,首先是对端的输入端进行图像的下采样,配合残差块增强图像特征提取,接下来就是注意力模块(这部分乍一看,看不出具体细节,后续分析),接着就是对注意力模块通过 AdaLIN 引导下残差块,最后通过上采样得到转换后的图像。对于判别器相对于生成器而言,就是将解码过程换成判别输出。

重点来了,就是如何实现图像编码后注意力模块以及 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 的优点。

判别器

文章的源码中,判别器的设计采用一个全局判别器(Global Discriminator)以及一个局部判别器(Local Discriminator)结合实现,所谓的全局判别器和局部判别器的区别就在于全局判别器对输入的图像进行了更深层次的特征压缩,最后输出的前一层,feature map 的尺寸达到了图片。

根据感受野的传递,这个尺度卷积下的感受野是作用在全局的(感受野超过了图像尺寸),读者可以自行按照论文给出的网络设计参数进行计算(kernel 全为 4),(我算的结果是 286×286 比输入图像 256×256 要大)对于局部判别器,最后输出的前一层,feature map 的尺寸达到了图片,此时感受野是达不到图像尺寸(我算的结果是 70×70),这部分称为局部判别器。

最后通过 extend 将全局和局部判别结果进行连接,此处要提一下,在判别器中也加入了 CAM 模块,虽然在判别器下 CAM 并没有做域的分类,但是加入注意力模块对于判别图像真伪是有益的,文中给出的解释是注意力图通过关注目标域中的真实图像和伪图像之间的差异来帮助进行微调。

损失函数

对于利用 GAN 实现图像到图像转换的损失函数其实也就那几个,首先是 GAN 的对抗损失图片,循环一致性损失,以及身份损失(相同域之间不希望进行转换)图片,最后说一下 CAM 的损失。CAM 的损失主要是生成器中对图像域进行分类,希望源域和目标域尽可能分开,这部分利用交叉熵损失:

在判别器中,也对真假图像的 CAM 进行了对抗损失优化,主要是为了在注意图上进一步区分真假图像,最后得到完整的目标函数:

Trick 和 AdaLIN 实现代码

作者公布的源码如果大家尝试运行可能会参数爆内存,这里的罪魁祸首发生在计算自适应图层实例归一化下的 MLP 直接从卷积展平送到全连接层中参数过大,大致计算一下,从 1×64×64×256 直接展平的尺寸是 1×1048576 再进行全连接操作,这个计算量是很大的,为了减小计算量,可以在这一步先对 map 进行 global average pooling 再进行全连接操作。

对于生成器 Encoder 部分的归一化采用 IN,Decoder 采用 LIN,判别器网络加上谱归一化限制(生成器并没有加),我们接下来放上论文的核心 AdaLIN 的 tensorflow 下代码实现:

def adaptive_instance_layer_norm(x, gamma, beta, smoothing=True, scope='instance_layer_norm'):with tf.variable_scope(scope):ch = x.shape[-1]eps = 1e-5# 计算Instance mean,sigma and insins_mean, ins_sigma = tf.nn.moments(x, axes=[1, 2], keep_dims=True)x_ins = (x - ins_mean) / (tf.sqrt(ins_sigma + eps))# 计算Layer mean,sigma and lnln_mean, ln_sigma = tf.nn.moments(x, axes=[1, 2, 3], keep_dims=True)x_ln = (x - ln_mean) / (tf.sqrt(ln_sigma + eps))# 给定rho的范围,smoothing控制rho的弹性范围if smoothing:rho = tf.get_variable("rho", [ch], initializer=tf.constant_initializer(0.9),constraint=lambda x: tf.clip_by_value(x, clip_value_min=0.0, clip_value_max=0.9))else:rho = tf.get_variable("rho", [ch], initializer=tf.constant_initializer(1.0),constraint=lambda x: tf.clip_by_value(x,clip_value_min=0.0, clip_value_max=1.0))# rho = tf.clip_by_value(rho - tf.constant(0.1), 0.0, 1.0)x_hat = rho * x_ins + (1 - rho) * x_lnx_hat = x_hat * gamma + betareturn x_hat

实验

作者在五个不成对的图像数据集评估了方法的性能,有比较熟悉的马和斑马,猫到狗,人脸到油画,风格场景还有就是最让我感兴趣的作者团队创建的女性到动漫的数据集,不过可惜的是这个数据集作者并没有公布。

在定性和定量上,U-GAT-IT 都展示了优越的结果:

总结

论文提出了无监督的图像到图像转换(U-GAT-IT),其中注意模块和 AdaLIN 可以在具有固定网络架构和超参数的各种数据集中产生更加视觉上令人愉悦的结果。辅助分类器获得的关注图可以指导生成器更多地关注源域和目标域之间的不同区域,从而进行有效的密集转换。此外,自适应图层实例规范化(AdaLIN)可以进一步增强模型在不同数据集下的鲁棒性。

U-GAT-IT:基于GAN的新型无监督图像转换相关推荐

  1. Github大热论文 | U-GAT-IT:基于GAN的新型无监督图像转换

    作者丨武广 学校丨合肥工业大学硕士生 研究方向丨图像生成 生成对抗网络(GAN)在这几年的发展下已经渐渐沉淀下来,在网络的架构.训练的稳定性控制.模型参数设计上都有了指导性的研究成果.我们可以看出 1 ...

  2. CVPR 2021 | ShapeInversion: 基于GAN逆映射的无监督点云补全方法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 摘要 · 看点 在CVPR 2021上,商汤科技-南洋理工大学联合 AI 研究中心 S-Lab 提出了 ...

  3. 又一新框架 | 无监督图像转换任务新境界(附论文代码)

    关注并星标 从此不迷路 计算机视觉研究院 2020 IEEE国际计算机视觉与模式识别会议(IEEE Conference on Computer Vision and Pattern Recognit ...

  4. 英伟达新研究:“狗生猫,猫生万物”的多模态无监督图像转换

    林鳞 编译整理 量子位 出品 | 公众号 QbitAI 英伟达最近的一项研究看起来有点神奇. 一张普通的猫咪图像,可以被转换成一只老虎.一头狮子或一只美洲豹.  还是一张普通的猫咪图,还能被转换成 ...

  5. 四大指标超现有模型!少样本的无监督图像翻译效果逆天| 技术头条

    作者 | Ming-yu Liu, Xun Huang, Arun Mallya, Tero Karras, Timo Aila, Jaakko Lehtinen 译者 | linstancy 编辑 ...

  6. 登顶Github趋势榜,非监督GAN算法U-GAT-IT大幅改进图像转换效果

    点击我爱计算机视觉标星,更快获取CVML新技术 近日,GAN的大家族又出一位重量级新成员U-GAT-IT,图像转换效果提升明显,原作者开源代码这两天登顶Github趋势榜,引起极大关注. U-GAT- ...

  7. 基于图像重建损失的无监督变化检测

    阅读翻译:Unsupervised Change Detection Based on Image Reconstruction Loss Abstract: 为了训练变化检测器,使用在同一区域的不同 ...

  8. 基于模糊规则学习的无监督异构领域自适应

    摘要 异构领域自适应是一种借助源域知识为语义相关但特征空间不同的目标域建模的技术.现有的异构领域自适应方法大多属于半监督方法,这些方法要求目标域中存在一部分已标记样本,然而这种数据集在很多异构领域自适 ...

  9. “用于无监督图像生成解耦的正交雅可比正则化”论文解读

    Tikhonov regularization terms https://blog.csdn.net/jiejinquanil/article/details/50411617 本文是对博客http ...

  10. 论文Express | 英伟达最新:多模态无监督图像迁移网络框架

    不久前,文摘菌给大家分享了一篇Ian Goodfellow的论文,教大家如何把一张哈士奇的图像硬生生的AI成一只猫咪,论文的结果确实会让人傻傻分不清楚,点击这里查看相关内容. 然而,今天的这篇论文效果 ...

最新文章

  1. Java项目:校园外卖点餐系统(java+SSM+JSP+maven+mysql)
  2. JAVA学习绘图颜色及其笔画属性设置字体显示文字
  3. best,best,best ......何恺明开挂之路
  4. .Net 2.0中使用扩展方法
  5. linux 命令下删除字符,【Linux基础】tr命令替换和删除字符
  6. CSS中盒子模型、嵌套盒子中垂直外边距塌陷问题解决方案、标准盒模型、怪异盒模型
  7. mysql fixed数据类型_fixed数据类型
  8. hdu 1711 Number Sequence
  9. 文档图纸加密解决方案
  10. 书评 微权力下的成功项目管控(第2版)
  11. 计算机四级网络工程师(操作系统单选)- 知识点
  12. 信息系统项目管理师(高项)考试的论文怎么写,怎么背?经验分享
  13. 程序员会不会英语的差别
  14. 2017年第22届中国国际涂料、油墨及粘合剂展览会会刊(参展商名录)
  15. android sdcard下创建文件,android创建以及使用SDcard镜像文件
  16. 推导:从傅里叶级数展开到傅里叶变换
  17. 系统防火墙阻止了加密狗服务器,批处理利用Windows防火墙阻止程序和服务联网!...
  18. 详解机器学习中的熵、条件熵、相对熵、交叉熵
  19. java题目:振兴中华
  20. 蓝鲸平台单机部署增加一台 APPT (测试服务器)

热门文章

  1. 初创企业及中小型企业财务特点以及建议
  2. Python —— 数据科学的手段 (第2版)配套代码
  3. OMG,史上最全的37个APP推广渠道来啦!
  4. 电脑重装系统Win10关闭网速限制的方法
  5. [数据集][VOC]老鼠数据集voc格式3001张
  6. SSL/TLS 受诫礼攻击漏洞的问题的解决记录
  7. 一文带你了解SpringMVC框架的基本使用
  8. 三大裂变方案直接套用,百格活动教你如何成为裂变营销专家
  9. 智慧环保 | 云计算护航环保行业未来可期
  10. 算法注册机编写扫盲---第四课