CycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

Unpaired Image-to-Image Translation
using Cycle-Consistent Adversarial Network
使用循环一致的对抗网络进行非配对的图片-图片迁移

from 伯克利人工智能实验室 ICCV2017


代码



原文



Project Page


# Abstract



图像-图像转换是计算机视觉和图形学的一类常见人物,需要学习输入图像与输出图像的映射关系,但在许多任务中获取成对的训练图像并不现实,因此本文就是基于没有成对训练图像的基础上,实现图像从源域到目标域的域迁移问题。通过adversarial loss学习一个从X到Y的映射关系,二者具有几乎一样的分布,这一过程通过引入一个循环一致的loss计算完成Y->X的映射。
最终在风格迁移、季节变换、图像增强任务中均测试了效果。


# Section I Introduction



在1873年一个暖春,莫奈把画架放在阿根廷附近的塞纳河畔时看到了什么? 晴朗的蓝天和波光粼粼的河流。 莫奈通过柔和的笔触和明亮的色调传达了他对这一场景的印象。


 如果莫奈在一个凉爽的夏日夜晚徜徉在卡西斯的小港口,他会如何渲染这一场景呢?


 也许依旧会通过柔和的色调和笔触来描绘。
尽管莫奈从未真正描绘过,我们依旧可以想象这一切,因此我们知道莫奈的一幅绘画和一张风景照片,就可以根据这两组之间的风格差异进行推理,从而想象如果我们把它从一组风格“翻译”到另一组,场景会是什么样子,这就是image-ti-image translation。


 CycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks_第1张图片本文就可以解决图片的域迁移问题,在不用成对图像训练的技术上,将某一集合提取到的图像特征迁移至另一集合,比如从灰度图到彩图,从普通彩图到语义标签,从边缘图到照片。在计算机视觉、图像处理、计算机图形学等领域已经开展了很多基于图像对的监督算法的研究。


 但图像对的获取费时费力,只有一些小型的分割数据集,而用于图像的风格化迁移则更为困难,因为输出的图像更为复杂不固定,比如Fig1中将斑马风格化为马,这一具体的输出就很难定义。



 本文就致力于寻求这样一种方法,无需训练对就可以完成图像的域迁移,首先假定两个域之间存在潜在的联系,虽然缺少监督信息的参与,但可以借助两个域中图像数据提供的关联性。
通过训练一个映射G:X->Y,并且通过一个对抗网络使得输出的y=G(x),x∈X无法与Y中的y区分。理论上来说,这个目标函数能够使得输出分布与目标分布尽可能接近,最优化的G可是最终的目标。但这样的translation不能保证输入和输出一定从语义上严格对应或有关联,因为G有无穷种方式使得Y的分布靠近Y,以及对抗网络的优化还可能会导致模式崩溃(mode collapse),即所有输入图像映射到相同的输出图像。


 
因此,需要对网络结构增加其他约束,比如本文引入了“循环一致性”(cycle consistent).也就是训练X->Y的映射与其逆过程Y->X的映射F二者应该是一致的,因此训练中将G,F同时优化训练,将这种循环一致性损失与前面提到的对抗损失结合起来作为最终的loss,最终完成image-to-image translation.
CycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks_第2张图片

Section II Related Work

GANs


GAN已成功用于图像生成、图像编辑等,近期研究向条件化图像生成发展,如text2image,图像修复等。GAN的成功之处在于利用生成器和判别器的对抗损失使得生成图片与原始图片难以区分,这也是计算机图形学中一直在追求优化的问题,本文也采用对抗损失使得生成图像与目标域的图像难以区分。


Image -to-image Translation



图像到图像的迁移已有很多成功的探索,如[8]基于非参数的纹理提取模型完成图像对的变换,[29]则是一种参数化的学习方法,借助CNN来优化一个转换损失函数,本文则是基于pix2pix的CGAN框架来学习源域到目标域的映射问题,但并不需要配对的图像。




Upaired Image-to-Image Translation





在非配对图像到图像的迁移中,[37]通过MRF计算源域与目标域图像的相似度,而CoupledGAN[28]则是通过一个权重共享的框架来学习两个域通用的特征表述;[27]则结合了VAE和GAN。而本文与前面的方法都不同,并不认为输入和输出之间有任何相似性,也不假定输入和输出必须投射在同一个低维空间中。






Cycle Consistency






循环一致性在目标跟踪、语言翻译、3D形状配准和分割任务中均有使用,作为trick也好作为辅助也好,本文也引入一个循环一致性损失来确保G和F的一致性。







Neural Style Transfer







风格迁移也是图图转换的一种实现方式,通过预训练网络提取到的特征计算出Gram Matrix代表的风格信息,从而使得生成图兼具风格图的style和内容图的content,与风格迁移相比,本文关注点落在域迁移,通过提取到的高阶特征来学习两个域之间的映射关系,因此适用场合更多:如图片->照片,外形变换等。







# Section III Formulation








本文的目标在于学习两个域X和Y之间的映射函数G和F,使用了两个判别器Dy和Dx,Dy用于判别y和G(x),Dx用于判别x和F(y).对应也有两部分损失:adversarial loss和循环一致性损失。







CycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks_第3张图片

Part A Adversarial Loss








对抗损失使得生成图像与目标图像的分布一致,比如映射函数G致力于使得生成图像G(x)尽可能靠近Y域图像,判别器Dy计算的就是G(x)与真实样本y之间的差距;另一个对抗损失也有同样的定义。








CycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks_第4张图片

Part B Cycle Consistency Loss










循环一致性损失也是很有必要的,因为对抗网络理论上可以学习到X和Y具有相同分布的映射函数G和F,但鉴于网络的学习能力可以将源域图像映射到目标域中的任意图像,产生于目标域相同的分布。










为了尽可能压缩映射函数的映射空间,本文认为这一转换应满足循环一致,即x->G(x)->F(G(x))->x,经转换后产生的G(x)经F映射回源域后依旧是x,这一过程称为前向循环一致性(forward sysle consistency);










类似的y->F(y)->G(F(y))->y被称为反向循环一致性(backward cycle consistency)











二者组成循环一致性损失:










在这里插入图片描述

Part C Full Objective












因此,完整的损失函数为:













CycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks_第5张图片

其中lambda用于调控对抗损失和循环一致性损失二者的比重













值得注意的是,可以将本文的模型看做是训练两个自编码器,只不过这两个自编码结构上有点特殊之处,通过中间学到的特征表达完成自身到自身的映射,或者叫做“对抗式自编码器”结构,使用对抗损失训练自编码器的bottleneck部分来匹配任意的图像分布,比如X->X的自编码器,bottleneck部分学习的是Y域的分布,反之亦然。












# Section IV Implementation













网络结构采用Johnson,Feifei Li的style transfer框架,前面也有介绍过[Perceptual losses
for real-time style transfer and super-resolution]
在[21]中可以看到有两部分网络,其中由残差块组成的特征提取网络以及定义损失函数的损失网络;对于判别网络本文使用PatchGANs,用来判别70*70的patch是真的还是生成的,好处就是参数量较少而且可用于任意大小的图像。













Training details














为了让训练过程更加稳定,首先将对抗损失的负log项替换为最小平方差,从而Lgan变为:
在这里插入图片描述

其次为了减少模型振荡,并不是使用生成网络最新生成的图片而是设置一个buffer存储50张历史图像。












# Section V Results













实验结果主要与其他基于配对图像的算法进行了图像转换的对比,随后分析了对抗损失和循环一致性损失各自的作用,最后探究了一下本文模型:CycleGAN的泛化性能。













Part A Evaluation













对比了以下模型:














CoGAN:以权重共享的方式分别学习两个域的判别器,通过找到一个X的latent representation后再渲染成Y的风格。















Pixel loss+GAN:[42]的方法与本文较为相似,也是使用对抗损失来学习X到Y的映射,但引入了L1正则化项抑制pixel较大的变化。
















Feature Loss+GAN:与pixel loss的区别在于L1损失函数是基于预训练的VGG提取出的特征计算的,而不再是基于像素值。

















pix2pix:p2p是基于paired image训练的,本文可以将其作为upperbound.

















CycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks_第6张图片

Fig4,Fig5分别展示了从segmentation map->photo和photo->map的实现结果。测试项目有:“real vs fake”,‘photo->label"和“label->photo",CycleGAN均取得了较好的转换结果。
















Part B Ablation Study
















消融实验探究了对抗损失和循环一致性损失的重要作用,通过单独使用cycle loss,adversarial loss等对比转换的结果可以看到,cycle-alone和GAN+backward均迁移失败了,GAN alone和GAN+Forward会导致模型崩溃(这里的backward和forward就是cycle loss中的两个方向)。

















Part C Applications

下面总结一下CycleGAN在非配对图像转换中的应用。
CycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks_第7张图片

Fig 7展示了Object transfiguration和季节的结果,比如输入马输出斑马,本文更适合两个域相近的情况下;


Fig8则展示了风格迁移的结果,Fig11是与Gatys的对比结果。与Gatys的Neural Style Transfer不同之处在于,Gatys是记忆一张风格图进行迁移,本文是尝试模仿某一风格下的一系列艺术作品来进行转换;



Fig9展示了画作到照片的转换结果,实验发现为了更好的保留输入图的色彩信息需要额外增加一项损失Lidentity;



在这里插入图片描述CycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks_第8张图片

Fig10展示了图像增强的结果,成功的将手机拍摄的景深较深的转换到大光圈景深浅的花朵图像,成功实现了前景物体的对焦。




CycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks_第9张图片
实验还发现有时与基于配对图像的训练结果之间的差距不可弥补,比如CycleGAN有时会以序列形式排列输出图像中的树和建筑物的标签,解决这种二义性可能
需要一定程度的弱语义监督,可能会增加注释成本。
CycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks_第10张图片

Summary
CycleGAN基于未配对图像上进行颜色和问题特征的变换是成功的,对几何形状的转换还存在不足。

你可能感兴趣的