深度学习

CycleGAN论文解读与感想

xiaozheng · 5月30日 · 2022年

CycleGAN论文解读与感想

CycleGAN简介

论文主页:https://junyanz.github.io/CycleGAN

原始论文:https://arxiv.org/pdf/1703.10593.pdf

CycleGAN是Image Translation(图像转译)领域的经典深度学习算法,巧妙实现了两个非配对图像域的相互迁移,通过构造两个GAN网络和两个Cycle-consistency自监督损失函数,在图像迁移之后仍保留原始输入图像信息,在防止模式崩溃的同时,间接实现了图像配对。 CycleGAN在照片转莫奈油画、野马转斑马花纹、夏天转冬天景色、街景转语义分割标签等图像转译应用上表现出色。

论文标题直译过来就是:使用CycleGAN实现非配对图像转译,这个题目就已经体现出CycleGAN的基本功能了,CycleGAN是一种无监督、自监督的对抗学习网络,论文开篇就已经展示了CycleGAN代码强大的功能结果:

CycleGAN在油画转照片和照片转油画的实践上有着惊人的实验结果,它并不是单纯的将照片和油画所对应的部分进行替换,而是将画家的风格转移到照片上,前面也有提到CycleGAN是非配对的图像转译,这里的非配对指的是不需要照片相对应的油画风格,就是说我们不需要一模一样的照片和油画同时存在,你可以使用比如莫奈的油画和自己所搜集到的风景图进行训练,这个照片生成之后是有着莫奈风格的,但是莫奈并没有画过这样的一幅画,同理,野马转斑马花纹也不是说有野马和斑马在同一情境下的照片所训练出来的,它只是识别出了野马或者斑马的一些特征,从而在训练其他野马图片时能够正确的转换。这是CycleGAN的核心也是它相比于其他GAN更加值得称赞的地方。

主要原理

因为配对的数据集通常采集是十分困难的,CycleGAN在数据集(图像域)层次而非数据(单张图像)层次构建监督学习问题,主要原理是循环一致性和双射,同时采用cycle consistency loss(周期一致性损失)来判断学习过程中损失率。

之前所说的GAN原理是通过生成器和判别器的相互博弈从而达到生成器骗过判别器,判别器无法分辨真实图像和生成图像的目的,CycleGAN则是通过两个生成器和判别器循环训练从而使生成器生成满足特点同时又与真实数据并无太大偏差的图像,具体的实现原理如下:

这里有两个生成器G和F,两个判别器Dx和Dy,如果将X比喻成莫奈印象派油画,Y比作是手机拍的风景照,那么开始时我们通过不断训练G和Dy去尽可能的将油画转换成手机照片,即让G生成能够骗过Dy的生成图片G(x),但这时就会出现一个问题,如何保证G(x)是和X相差不大的图像呢,或许此时ghgfhjfwenzhanglaixzizhenggegedboke@@@@生成的已经是ghgfhjfwenzhanglaixzizhenggegedboke@@@@风景照了,但是不一定是油画一样的场景,这个现象可以称之为“思密达现象”,就ghgfhjfwenzhanglaixzizhenggegedboke@@@@相当于我把英文翻译成韩语,此时韩语的调调出来了,但是原本英文的意思已经完全不对或者根本听不懂翻译的是什么,这时就要训练F和Dx了,在不断的对抗生成中,最终F和G生成的图像能够骗过Dx和Dy,此时图片的转换就已经成功了。

Cycle consistency loss

在生成器和判别器不断的博弈中,对于每一张油画x,我们要转换成风景照y的风格,就需要不断的使生成的G(x)尽可能的骗过判别器F,同样,对于每一张风景照y,我们转换成油画G(y)时也要尽可能的骗过判别器G,同时又要保留原图像的特征,那么循环一致性损失就是能够防止模式崩溃的损失函数。

Cycle consistency loss的主要作用如下:

  • 使得transfer过去的图像仍保留原始图像的信息
  • 间接实现了pix2pix的paired image translation功能
  • 防止模式崩溃,总生成相同的图像

训练代码和结果

代码官方Github:https://github.com/junyanz/CycleGAN

OpenMMLab开源图像生成算法库MMGeneration:https://github.com/open-mmlab/mmgeneration

CycleGAN的这篇论文中展示了Cghgfhjfwenzhanglaixzizhenggegedboke@@@@ycleGAN与其他几类生成对抗网络的结果对比

同时也对CycleGAN的实例也进行了展示,也提出了Cyclghgfhjfwenzhanglaixzizhenggegedboke@@@@eGAN在一些场景下的缺点,比如在苹果转换成橘子时,只改变了颜色而没有改变纹理,同时训练集中没有“人骑马”的图像,从而在测试集中将人也转换成了斑马

心得

在学习GAN和CycleGAN过后,同时也了解到了还有更多的GAN,在the-gan-zoo中列出了目前所有命名的GAN,深感自己所接触的只是杯水车薪,任重而道远。

0 条回应