Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks论文笔记

首先说一下:CycleGAN,DualGAN,DiscoGAN这三篇论文也太像了叭!!!只不过是生成器和鉴别器的架构有点不同而已,网络模型可以说是一毛一样了。。。难道这么相似都可以发论文吗???突然对我要发的论文有点信心了,嘿嘿嘿嘿。

一.问题提出

图像翻译问题是将一个物体的图像表征转换为该物体的另一种图像表征问题,例如草图到真实图的转化、白天到黑夜的转换以及图像风格渲染等。以往的图像翻译模型是基于成对数据的有监督学习模型,但大量的成对数据的获取在实际中的成本很高并且某些领域甚至无法获取成对的图像对,因此这篇论文作者提出了一种基于无监督的不需要图像对训练的图像翻译模型,该模型不依赖于具体的任务、预定义的相似性函数也不假设输入输出具有相同的低维结构。

二.模型设计及损失函数

该模型的核心思想是设计两个生成对抗网络(GAN)来实现图像翻译。生成对抗网络是通过生成器和鉴别器进行对抗训练来使得生成器的效果越来越好,最终达到我们需要的生成能力。这篇论文的模型架构与之前该作者的另一篇论文Image to image translation非常类似,只是这里采用了两个GAN来将训练由有监督转化为无监督。

作者将第一个生成器记为G,另一个生成器记为F。生成器G的目的是将X域的图像转化为Y域,而F的目的是将Y域的图像转化为X域,其中鉴别器Dx是用于判断由F生成的X域图像是否是X域内的真实图像,Dy是判断由G生成的Y域图像是否是Y域内的真实图像。其简单的模型架构如图1所示。

Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks论文笔记_第1张图片

图1 简易模型架构

 

因此针对该网络架构,作者除了每对生成器-鉴别器中的交叉熵损失函数外(公式1),还提出了循环一致性损失(Cycle consistency loss),该损失可以描述为两个生成器(G\F)生成的(X\Y)域图像与真实图像之间的L1距离(公式2),之所以采用L1是因为实验证明L2距离会导致输出图像模糊。

公式1.交叉熵损失

公式2.循环一致性损失

循环一致性损失的其计算过程如图2所示,针对生成器G而言,其将X域的图像转化为Y域图像Y’,之后将该伪Y域图像Y’作为生成器F的输入,再由F转化为X域图像(X’’),最终将X’’与X之间的L1距离作为X域的循环一致性损失,利用同样的过程计算Y域的循环一致性损失,将两者相加即为整个训练的循环一致性损失。

Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks论文笔记_第2张图片

图2.循环一致性损失图解

 

综上可以得出该模型的目标函数如下:

公式2.目标函数

 

三.实验

生成器的网络架构采用编码器-解码器结构,鉴别器采用70×70的PatchGAN结构,该结构是判断70×70图像块的真伪。众所周知,生成对抗网络具有难训练的问题,因此作者将公式一中的对数似然目标函数替换为最小二乘损失以稳定训练,另外为了减少模型震荡作者用历史图像而不是最新的生成图像来更新鉴别器。

由表3.1可看出,与其他GAN的变体相比,在无监督图像翻译的任务上CycleGAN具有卓越表现,当然与有监督的Pix2pix相比FCN得分还是有一定的差距。

Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks论文笔记_第3张图片

表3.1 不同方法的FCN得分比较

另外,作者还进行了一系列的对比实验来验证不同的损失函数对于最终效果的影响。由表3.2可以看出,双向的循环一致性损失会有效的防止发生模式崩塌并且准确率也有所提高。

表3.2 不同损失函数的正确率比较

四.总结

CycleGAN可以有效的应用于无监督无配对数据的图像翻译任务,但是实验表明在某些特定的场景下与有监督的图像翻译模型相比,CycleGAN的效果仍然相差甚远,这主要是由于其无法处理内在的几何变化与某些场景的固有缺陷所导致。

你可能感兴趣的:(Python,机器学习,Tensorflow,图像翻译)