作者丨洪佳鹏

学校丨北京大学

研究方向丨生成式对抗网络

本文经授权转载自公众号「学术兴趣小组」。

如今,随着 GAN 在生成清晰图像(sharp images)上的成功,GAN 在图像翻译任务上的方法越来越多,pix2pix,CycleGAN,UNIT,DTN,FaderNets,DistanceGAN,GeneGAN,pix2pixHD,StarGAN 等等。现在的方法太多了,图像质量也从 64x64 分辨率一路做到了 1024x2048。

我关注这个方向已经超过半年了,在这里总结一点小经验:

关于生成高质量图像

这里不谈怎么调参能够得到更好的结果,这里谈两个不用经过调参就能获得不错效果的方法。

有三个可以借鉴的经验,其一来自于 pix2pixHD,采用 multi-scale 的 Discriminator 和 coarse2fine 的 Generator 能够有效帮助提升生成的质量

所谓 multi-scale 的 Discriminator 是指多个 D,分别判别不同分辨率的真假图像。比如采用 3 个 scale 的判别器,分别判别 256x256,128x128,64x64 分辨率的图像。至于获得不同分辨率的图像,直接经过 pooling 下采样即可。

Coarse2fine 的 Generator 是指先训一个低分辨率的网络,训好了再接一个高分辨率的网络,高分辨率网络融合低分辨率网络的特征得到更精细的生成结果。具体介绍可以参考 pix2pixHD [1]。

下图以及题图是 CelebA 数据上交换属性的实验,图像分辨率 256x256,如果单个 Discriminator,生成质量很差,加上 multi-scale 之后生成质量有了很大提升,并且没有经过调参哦。

△ 图1:交换刘海

△ 图2:交换眼镜

其二是采用 progressive growing 的训练方式,先训小分辨率,再逐渐增加网络层数以增大分辨率,这个跟 coarse2fine 有点像。具体可以参看 PGGAN [2],或者这里。

其三则是借鉴 LAPGAN 的做法,从低分辨率起步,通过不断生成高分辨率下的残差,累加得到高分辨率。图中 z1,z2,z3 是不同分辨率的输入。这个做法还没有尝试过,不知道生成质量怎样,图中的虚线是我认为可能不必要的连接。

关于生成样本多样性

这里其实有两个问题,一个是多模态多样性,一个是属性强弱的多样性。

对于多模态多样性,现有的技术不多,总结起来有三种。

其一,引入 noise,通过变分的方式让 noise 得到表达,获得多样性。这个方法来自于 BicycleGAN [3] 的 cVAE-GAN。

△ 图3:图片来自于 BicycleGAN [3]

其二,引入 noise,通过回归的方法在生成图像上预测所引入的 noise。这个方法失败率比较高。当然,它也可以跟第一种方法结合。具体介绍参考 BicycleGAN [3] 的 cLR-GAN。

△ 图4:图片来自于 BicycleGAN [3]

前两种方法都比较容易想到。在文章出来以前,我也曾经尝试过第二种方法,但是没有 work。这也印证了它失败率高。

第三种方法是通过交换来实现多模态。交换的图像可以是多种多样,一个不带属性的图,可以通过跟具有不同类型的刘海(眼镜、帽子等)的图片进行交换,以给目标人物加上不同类型的刘海(眼镜、帽子等)。这个方法可以参考 GeneGAN [4] 或者 DNA-GAN [5]。题图就是一个交换属性的例子。

另一种多样性是属性强弱。对于需要输入 label 的生成方法(如 FaderNets,StarGAN),可以通过控制喂给生成器的 label 强弱来得到生成图像的属性强弱。

关于属性强弱,有一类方法比较特殊,它没有办法实现,那就是 CycleGAN,因为它只需要输入图像,并不需要输入 label,没有控制 label 强弱的操作。


下面介绍一种原创的方法,能够对 CycleGAN 引入属性强弱的控制(不打算写成论文,因为没有什么特别的贡献,不想灌水。如使用该方法请注明出处)。

我们通过精简 CycleGAN 来实现,以两个域为例,原始 CycleGAN 需要 2 个 Generator 和 2 个 Discriminator,我们不难发现,可以把域转换称 condition,这样只需要一个 Generator 和 Discriminator 了。

不妨给两个域 X = {x_i} 和 Y = {y_j} 分别编码为 -1 和 1:

这样就实现了 x -> y -> x 和 y -> x -> y 的 cycle。剩下的跟 CycleGAN 一样即可。在测试的时候,就可以通过调节编码的强度来控制属性的强弱了。

关于 inference

模型训练好了,测试的时候还有一道关要过。虽然现在很多图像翻译方法训练的时候都不需要配对数据,但是它们都需要弱监督,也就是需要提供 label。

而测试集上我们不一定有 label,这其实是很常见的一个问题,用户上传的图像不会给你打好标签,况且还存在用户「故意」制造错误标签误导算法(测试算法性能)的可能。有什么解决方案呢?

我们很容易想到,加一个分类器,先分类具有什么属性,然后再转换属性。这个想法简单,但是需要额外的网络,会增加计算量。

有没有不引入分类器的方法呢?仍然以两个域互转的 CycleGAN 为例。训练的时候,我们强迫生成器具有分类器的功能。具体来说,生成器需要需要额外做两个任务(原创方法,没有发表,使用请注明出处):

这两项的 loss 为重构误差:

这可以说是一种自监督。这么做也就确保了生成器能够处理「故意误导」性的转换,也实现了 label-free 的 inference。

下图是季节转换的一个例子。图片从左到右依次为秋季原图、转成夏季图、夏季图转回秋季图、秋季原图转到秋季图。

△ 图5:label=0.5

△ 图6:label=1.0

注意到上图 checkerboard 效应很严重。怎么解决 checkerboard 呢?

关于 inference

生成模型很容易产生 checkerboard 效应,图像翻译任务尤为严重。据研究 [6],checkerboard 主要来自于反卷积(convolution transpose,通常也称 deconvolution)操作,而跟对抗训练关系不大。

[6] 指出,使用 nearest upsample + conv 替代 deconv 可以移除 checkerboard。在实验中我发现这个替换确实发现能够很好地解决问题。

△ 图7:反卷积带来了 overlap,从而引入了 checkerboard,图来自于[6]

替代 deconv 需要引入其他的上采样方法。上采样的方法除了 nearest upsample 和 bilinear upsample 等类型之外,还有一种不叫上采样,但是可以得到类似效果的操作:pixel shuffle [7]。它只改变了数据的摆放位置,(N, C*k^2, H, W) -> (N, C, kH, kW))。

这也是实现图像从小到大的方法,但是实验中我发现没有效果,可能是因为 channel 数太少。注意到 channel 数是增长是很快的,为了减少显存,减少卷积层数或者减少第一个卷积层的 channel 数都会影响网络的表达能力。

也就是说,目前比较好的解决方案还是使用 nearest upsample + conv 替代 deconv

参考文献

1. Wang T C, Liu M Y, Zhu J Y, et al. High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs[J]. arXiv preprint arXiv:1711.11585, 2017.

2. Karras T, Aila T, Laine S, et al. Progressive growing of gans for improved quality, stability, and variation[J]. arXiv preprint arXiv:1710.10196, 2017.

3. Zhu J Y, Zhang R, Pathak D, et al. Multimodal Image-to-Image Translation by Enforcing Bi-Cycle Consistency[C]//Advances in Neural Information Processing Systems. 2017: 465-476.

备注:文章发表时是这个名字,但是后来改名了,找原文请搜 Toward Multimodal Image-to-Image Translation

4. Zhou S, Xiao T, Yang Y, et al. GeneGAN: Learning Object Transfiguration and Attribute Subspace from Unpaired Data[J]. arXiv preprint arXiv:1705.04932, 2017.

5. Xiao T, Hong J, Ma J. DNA-GAN: Learning Disentangled Representations from Multi-Attribute Images[J]. arXiv preprint arXiv:1711.05415, 2017.

6. https://distill.pub/2016/deconv-checkerboard

7. Shi W, Caballero J, Huszár F, et al. Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 1874-1883.

  我是彩蛋 


解锁新功能:热门职位推荐!

PaperWeekly小程序升级啦

今日arXiv√猜你喜欢√热门职位

找全职找实习都不是问题

 解锁方式 

1. 识别下方二维码打开小程序

2. 用PaperWeekly社区账号进行登陆

3. 登陆后即可解锁所有功能

 职位发布 

请添加小助手微信(pwbot01)进行咨询

长按识别二维码,使用小程序

*点击阅读原文即可注册


关于PaperWeekly


PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

GAN做图像翻译的一点总结相关推荐

  1. 综述:基于GAN的图像翻译模型盘点

    作者丨薛洁婷 学校丨北京交通大学硕士生 研究方向丨图像翻译 图像翻译(Image translation)是将一个物体的图像表征转换为该物体的另一种图像表征,也就是找到一个函数能让 A 域图像映射到 ...

  2. GAN网络图像翻译机:图像复原、模糊变清晰、素描变彩图

    贴个文章,记录学习历程 http://www.sohu.com/a/169212360_473283 本文介绍深度学习方法在图像翻译领域的应用,通过实现一个编码解码"图像翻译机"进 ...

  3. GAN眼中的图像翻译(附神奇歌单)

    这是一篇总结文,总结我看过的几篇用GAN做图像翻译的文章的"套路". 首先,什么是图像翻译? 为了说清楚这个问题,下面我给出一个不严谨的形式化定义.我们先来看两个概念.第一个概念是 ...

  4. 【阿里云课程】图像翻译GAN结构与应用

    大家好,继续更新有三AI与阿里天池联合推出的深度学习系列课程,本次更新内容为第11课中的一节,介绍如下: 图像翻译GAN结构与应用 本次课程是阿里天池联合有三AI推出的深度学习系列课程第11期,深度生 ...

  5. 【图像翻译GAN】我家那只蠢猫更像狗子还是更像虎哥?让AI模型来看看

    前言 当忠诚的狗狗与凶猛的大老虎进行身份交换 老虎看起来也并没有那么凶残 甚至多了几分可爱 当可爱的猫咪与大老虎发生变换 猫猫的眼神里也多了几分坚定 而且充满了凶猛的气息 这是什么神仙操作? 它叫图像 ...

  6. DCT-Net 水记(用于 人脸风格化 的 小样本 图像翻译,无需反演,无需构造配对图片)

    DCT-Net 水记(用于 人脸风格化 的 小样本 图像翻译,无需反演,无需构造配对图片) <DCT-Net: Domain-Calibrated Translation for Portrai ...

  7. CVPR 2019 开源论文 | 基于翻译向量的图像翻译

    作者丨薛洁婷 学校丨北京交通大学硕士生 研究方向丨图像翻译 图像翻译通常要解决两个问题:将原域图像翻译至目标域并且翻译后的图像和原域图像保持相似性.我们利用 GAN 可以很好的解决第一个问题,而针对第 ...

  8. 解读最早的草图-图像翻译工作SketchyGAN

    前言:虽然2018年之前的Pix2Pix GAN和CycleGAN把GAN在图像翻译这方面的天赋展现的淋漓尽致,在edge-to-image的任务上表现不错,但是在sketch-to-image的表现 ...

  9. GAN生成对抗网络-PIX2PIXGAN原理与基本实现-图像翻译09

    什么是pix2pix Gan 普通的GAN接收的G部分的输入是随机向量,输出是图像 :D部分接收的输入是图像(生成的或是真实的),输出是对或 者错.这样G和D联手就能输出真实的图像. 对于图像翻译任务 ...

最新文章

  1. “90后”变“韭零后”,大数据告诉你谁是基民主力军?
  2. macbook 下载时睡眠_MacBook进入睡眠状态时如何自动使其静音
  3. 【C语言】用指针作为形参完成数据的升序排列
  4. linux下svn的常用代码【转】
  5. Redis缓存持久化:RDB持久化和AOF持久化
  6. 对比Windows 8模拟器(Simulator)和Windows Phone仿真器(Emulator)
  7. python的输入来源包括文件输入_【python】文件的输入和输出
  8. 通过lan从服务器启动系统,OPNsense启用LAN网桥
  9. [转载]Geronimo 叛逆者,第 8 部分: 未来的 Apache Geronimo
  10. 内容创业,真的是“唯快不破”么?
  11. SVN服务器下载与安装
  12. 图片由模糊变清晰的效果实现
  13. 微信定位真的泄露了你的精确位置
  14. java cookie能存到服务器_Cookie技术用于将会话过程中的数据保存到( )中,从而使浏览器和服务器可以更好地进行数据交互。(5.0分)_学小易找答案...
  15. 怎么保护地球生物多样性
  16. vns基本的变邻域搜索算法
  17. iPhone内存比Android手机小,iPhone内存为什么一直这么小
  18. debian修改源的方法
  19. AV/EDR 免杀逃避技术汇总
  20. 7.设计模式--抽象工厂模式(AbstractFactory模式)

热门文章

  1. 团队成员之间的对抗与互助的鼓励
  2. ThinkPHP5路由图解
  3. --------------springMVC的开篇,以及底层执行流程,配置视图解析器,静态资源的访问,流程图,工作原理...
  4. html加javascript和canvas类似超级玛丽游戏
  5. PAT:1019. 数字黑洞 (20) AC(同甲级1069)
  6. DirectSound学习笔记(3):协作级别
  7. 如何生成WebPart的部署文件(wsp文件)
  8. java jbutton 禁用_java – 如何禁用JButton在禁用时变灰?
  9. python基本随机生成函数_Python学习笔记(三):随机生成函数方法
  10. PHP常量常用的格式用什么定义,PHP | 常量 知识梳理与运用详析