CycleGan实现图像转换

做者:王镇 前端

引言

1873年的一个春日,在阿让特伊的塞纳河畔,莫奈用纤细的笔触和明亮的调色板记录下了眼前塞纳河畔美丽的田园风光。咱们难免想象若是当时有相机的话,会留下一张怎样的照片呢。在一个凉爽的夏日傍晚,面对卡西斯港口的美丽景色,咱们拿起相机时是否又会想象莫奈会如何来记录眼前的此番景象呢。
尽管咱们没有看到莫奈画做的场景照片,在有了一组莫奈风格画做和真实风景照片后,利用 CycleGan,咱们可以将其中一组转换为另外一组。换言之,咱们可以从一幅莫奈画做中尽量真实地还原莫奈眼中的 19 世纪法国风光,也能从一张真实的照片看到莫奈画笔下的世界。
除了实现画与照片的转换,CycleGan 还能够实现斑马与马,猫与狗,苹果与橘子,夏天与冬天,男人与女人,卫星地图与行政地图等图片之间的转换。
git

1.PNG
       
2.PNG

图 1

CycleGan原理

初识Gan

Gan(Generative Adversarial Network) 又称做“生成对抗网络”,用于生成与训练集风格相似的图片,其主要由两部分结构组成,即生成器(Generator)和判别器(Discrimator)。
github

小狗.png

图 2
以生成小狗的假图片为例。如上图所示,输入一个随机噪声,送入生成器模型将产生一张小狗的假图片,而后将假图与真图配对,打上标签(假图为0,真图为1),用于训练判别器,经初步训练,判别器已有了必定的精度。此后,保持判别器参数不变,不断调整生成器参数直至判别器没法区分生成器生成的假图与真图;而后,保持生成器参数不变,调整判别器参数直至判别器能最大程度地区分生成器生成的假图与真图。如此重复上述两个步骤,最终生成器将能产生人眼没法分辨的图片。
公式1.PNG

公式(1)
上式中 G( ) 表示生成器,输出一张生成图片,D( ) 表示判别器,输出判别为真图的几率,x 为真图,z 为噪声。即咱们训练 D 使其有最大的判别精度(使上式中第一项和第二项都最大),又训练 G 使其能生成最容易骗过判别器的图片(使上式第二项最小)。

初识CycleGan

Gan 能生成与训练集风格相似的图片,但没法指定具体的图片。以上文生成小狗图片为例,生成器可能一直输出同一张最像小狗的图片,而没法针对输入图片输出对应的小狗图片。CycleGan 有效解决了这个问题。网络

图2.PNG

图 3
上图是 CycleGan 的原理图解。图(a)中 X,Y 对应两个领域,咱们但愿将 X 领域中的图片转换为 Y 领域中的图片;G,F 分别对应正向和逆向 Gan 中的两个生成器,即 G 将 X 领域中的图片 x 转换为 Y 领域中的图片 G(x),而后用判别器 DY 判别是否属于 Y 领域的图片,以此构成生成对抗网络,此即为 Gan 的基本结构。图(b)相较图(a)增长了部分结构,即要求 G(x) 再通过逆向 Gan 中的生成器 F 生成 F(G(x)),使之与原输入 x 尽量接近,即 cycle-consistency loss 尽可能小,由此便可解决 Gan 没法针对性地输出对应图片的问题。图(b)过程 x->G(x)->F(G(x))≈x,咱们将之称为 forward cycle consistency。为了提升训练效果,相似地,咱们又训练从 Y 领域到 X 领域的转换,如图(c)过程 y->F(y)->G(F(y))≈y, 咱们称之为 backward cycle consistency。

深刻CycleGan

公式2.PNG

公式 (2)
公式3.PNG

公式 (3)
公式4.PNG

公式 (4)
公式5.PNG

公式 (5)
经过上文对 CycleGan 的定性介绍,相信你们对 CycleGan 的工做原理已有了大体的理解,如下将经过公式定量地分析 CycleGan 的工做原理。公式(2)与公式(1)同样,是Gan的基本表述,须要训练的是生成器 G 和判别器D,X,Y 分别是两个领域;公式(3)指出经过训练 G,F 模型使 F(G(x))≈x,使 G(F(y))≈y;公式(4)是 CycleGan的完整表述,λ 做为参数调整分项的重要性;咱们最终的目的是经过训练获得最合适的 G,F 如公式(5)所示,用来完成图片从一个领域到另外一个领域的转换。如下是训练好后的 G,F 的变换效果。
part1.PNG

图 4

CycleGan应用

CycleGan 实现图片从一个领域转换到另外一个领域,与 pix2pix 模型相比,它无需成对数据进行训练,所以它具备更普遍的适用范围。
CycleGan 可实现图像风格转换,但它不一样于 neural style transfer 模型仅实现单幅做品风格(如星空)的转换,相反,它能学习到莫奈(或其余画家)所有做品的艺术风格,从而实现照片向莫奈艺术风格画的转换,如图5。它还可实现物体转换(Object transfiguration),如图6,7;季节转换,如图8;从油画生成照片,如图9。
app

艺术画.PNG

图 5
马斑马.PNG

图 6
水果.PNG

图 7
季节.PNG

图 8
油画.PNG

图 9

总结

对于 Unpaired 问题来讲,只是用普通 GAN 的话能够学到的模型有不少种。种类数目为领域 X 和领域 Y 之间的随机映射数目,因此只是用普通 GAN 损失函数没法保证输入 x 可以获得对应领域的 y。而 Cycle 一致性的出现,下降了随机映射的数目,从而保证获得的输出再也不是随机的,所以可以实现图片从一个领域到另外一个领域的转换。
项目源码地址:momodel.cn/explore/5d7… 机器学习

参考文献

  1. Generative Adversarial Networks,Ian J. Goodfellow, etc. arxiv.org/abs/1406.26…
  2. Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, Jun-yan Zhu, etc. arxiv.org/abs/1703.10…
  3. github.com/junyanz/pyt…
  4. GAN网络详解(从零入门)csdn博客。 blog.csdn.net/LEE18254290…
  5. CycleGAN-Unpaired图像翻译 csdn博客。blog.csdn.net/stdcoutzyx/…

关于咱们

Mo(网址:https://momodel.cn)是一个支持 Python 的人工智能在线建模平台,能帮助你快速开发、训练并部署模型。函数


Mo 人工智能俱乐部 是由人工智能在线建模平台(网址:momodel.cn)的研发与产品团队发起、致力于下降人工智能开发与使用门槛的俱乐部。团队具有大数据处理分析、可视化与数据建模经验,已承担多领域智能项目,具有从底层到前端的全线设计开发能力。主要研究方向为大数据管理分析与人工智能技术,并以此来促进数据驱动的科学研究。

目前团队每两周(周六)在杭州举办线下沙龙,进行机器学习相关论文分享与学术交流。但愿能汇聚来自各行各业对人工智能感兴趣的朋友,不断交流共同成长,推进人工智能民主化、应用普及化。学习

image.png