CycleGan实现图像转换作者:王震简介1873年的一个春日,在阿让特伊的塞纳河畔,莫奈用纤细的笔触和明亮的田园色彩记录下了眼前塞纳河的美景风景。我们不禁想象,如果当时有照相机,会留下怎样的照片。在一个凉爽的夏日傍晚,面对卡西斯港的美景,当我们拿起相机时,想象一下莫奈会如何记录眼前的一幕?虽然我们没有看到一张莫奈绘画场景的照片,但有一组莫奈风格的绘画和真实的风景照片,使用CycleGan,我们能够将一组转换成另一组。也就是说,我们可以从一张莫奈的画作中尽可能真实地还原莫奈眼中的19世纪法国风光,也可以从一张真实的照片中看到莫奈笔下的世界。CycleGan除了可以实现绘画和照片的转换,还可以实现斑马和马、猫和狗、苹果和橘子、夏天和冬天、男人和女人、卫星地图和行政地图之间的转换。图1初步了解CycleGan的原理GanGan(GenerativeAdversarialNetwork)又称“生成对抗网络”,用于生成与训练集风格相似的图片。它主要由两部分组成,即生成器(Generator)和鉴别器(Discrimator))。图2以生成小狗假图片为例。如上图,输入一个随机噪声,送入生成器模型生成小狗的假图片,然后将假图片与真图片配对,并标注(假图片为0,真图片为1),用于训练和判别,经过初步训练,判别器具有一定的准确率。之后,保持判别器的参数不变,调整生成器的参数,直到判别器无法区分生成器生成的假图像和真实图像;然后,保持生成器的参数不变,调整判别器的参数,直到判别器能够区分出生成器生成的最假图和真实图。如此重复以上两个步骤,最终的生成器将能够产生人眼无法分辨的图片。公式(1)上式中,G(·)代表生成器,输出生成的图像,D(·)代表鉴别器,输出识别真实图像的概率,x为真实图像,z为噪音。即我们训练D有最大的判别准确率(使上式中的第一项和第二项最大),训练G使其生成最有可能骗过判别器的图片(使上式中的第二项最大)上式最小)。初识CycleGanGan可以生成类似训练集风格的图片,但是不能指定具体的图片。以上面小狗图片的生成为例,生成器可能总是输出同一张最像小狗的图片,而不能为输入图片输出对应的小狗图片。CycleGan有效地解决了这个问题。上图3是CycleGan的示意图。在图(a)中,X和Y对应两个域。我们希望将X域的图片转换为Y域的图片;G和F分别对应正向和反向Gan中的两个生成器,即G变换X域的图片x,转换为Y域的图片G(x),然后利用判别器DY来判断是否属于Y域的图片,从而形成生成对抗网络,这是Gan的基本结构。图(b)相对于图(a)增加了一些结构,即在反向Gan中需要G(x)通过生成器F生成F(G(x)),使其尽可能接近于原始输入x,即cycle-consistencyloss越小越好,可以解决Gan不能有针对性的输出对应图片的问题。图(b)过程x->G(x)->F(G(x))≈x,我们称之为前向循环一致性。为了提高训练效果,类似的,我们还训练了从Y域到X域的转换,如(c)过程y->F(y)->G(F(y))≈y,我们称之为后向循环一致性。深入CycleGan公式(2)公式(3)公式(4)公式(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的变换效果。图4CycleGan应用CycleGan实现了图片从一个领域到另一个领域的转换。与pix2pix模型相比,它不需要配对数据进行训练,因此适用范围更广。CycleGan可以实现图像风格迁移,但不同于神经风格迁移模型只实现单一工作风格(如星空)的转换。反之,它可以学习莫奈(或其他画家)所有作品的艺术风格,实现photo到莫奈艺术风格绘画的转换,如图5所示。它还可以实现Objecttransformation,如图6和图7所示;季节变换,如图8所示;从油画中生成照片,如图9所示。图5图6图7图8图9总结对于Unpaired问题,有很多模型可以用普通GAN学习。类别数是域X和域Y之间的随机映射数,所以仅仅使用普通的GAN损失函数并不能保证输入x能得到对应的域y。Cycleconsistency的出现减少了随机映射的次数,从而保证得到的输出不再是随机的,从而可以实现图片从一个领域到另一个领域的转换。项目源码地址:https://momodel.cn/explore/5d76cd483ca4fc49fa06f9e1?type=app参考GenerativeAdversarialNetworks,IanJ.Goodfellow等https://arxiv.org/abs/1406.2661UnpairedImage-to-ImageTranslationusingCycle-ConsistentAdversarialNetworks,Jun-yanZhu等https://arxiv.org/abs/1703.10593https://github.com/junyanz/pytorch-CycleGAN-and-pix2pixGAN网络详解(从零开始)csdn博客。https://blog.csdn.net/LEE18254290736/article/details/97371930CycleGAN-Unpaired图像翻译csdn博客。https://blog.csdn.net/stdcoutzyx/article/details/78823249关于我们Mo(网址:https://momodel.cn)是一个支持Python的人工智能在线建模平台,可以帮助您快速开发训练和部署模型。Mo人工智能俱乐部是由人工智能在线建模平台(网址:https://momodel.cn)的研发和产品团队发起,致力于降低人工智能开发和使用门槛的俱乐部。团队拥有大数据处理分析、可视化和数据建模经验,承接过多领域智能化项目,具备从底层到前端的全线设计开发能力。主要研究方向为大数据管理分析和人工智能技术,并以此促进数据驱动的科学研究。目前团队每两周(周六)在杭州举办一次线下沙龙,分享机器学习相关的论文和学术交流。我们希望把对人工智能感兴趣的各界朋友聚集在一起,继续交流,共同成长,推动人工智能的大众化和普及化。
