《UnpairedImage-to-ImageTranslation usingCycle-ConsistentAdversarialNetworks》论文解析

鼎鼎大名的cycleGAN,今天我们来说一说这篇文章。

首先介绍下GAN,传送门:https://blog.csdn.net/wenqiwenqi123/article/details/86178376

介绍下GAN的损失函数,传送门:https://blog.csdn.net/wenqiwenqi123/article/details/105099445

在确保你了解了GAN的原理后,我们再接着看cycleGAN。

平常的GAN的原理就是一个生成器G,和一个判别器D,判别器D努力辨认生成的图片是真是假,而生成器G努力蒙混判别器,让生成的图片逼真。但是cycleGAN,有两个G和两个D,构成了一个环路,因此称之为cycle。

我们先来看cycleGAN解决了一个什么问题:我们有两个不同的域,A域和B域,两个域中的图片的分布和风格是不同的,要让A域的图片经过处理后变成B域的风格和分布,且保留原图的大部分内容信息。举例子:斑马变成普通的马。而cycleGAN跟之前的pixel2pixel算法最大的改进是,不再需要成对的数据了。

CycleGAN本质上是两个镜像对称的GAN,构成了一个环形网络。两个GAN共享两个生成器,并各自带一个判别器,即共有两个判别器和两个生成器。一个单向GAN两个loss,两个即共四个loss。

首先声明下版权,本文的图部分来自量子位公众号,见水印。

 

先看网络结构。

生成器(G):

生成器由编码器、转换器和解码器构成。

  • 编码:第一步利用卷积神经网络从输入图象中提取特征。将图像压缩成256个64*64的特征向量。
  • 转换:通过组合图像的不相近特征,将图像在DA域中的特征向量转换为DB域中的特征向量。作者使用了6层Reset模块,每个Reset模块是一个由两个卷积层构成的神经网络层,能够达到在转换时同时保留原始图像特征的目标。
  • 解码:利用反卷积层(decovolution)完成从特征向量中还原出低级特征的工作,最后得到生成图像。

判别器(D):

鉴别器将一张图像作为输入,并尝试预测其为原始图像或是生成器的输出图像。

鉴别器本身属于卷积网络,需要从图像中提取特征,再通过添加产生一维输出的卷积层来确定提取的特征是否属于特定类别。

 

我们来看看它的loss:

1、Adversarial Loss :

loss1就是正常的GANloss,生成器和判别器分别做他们该做的事。论文中用x和y来指代两个不同域的数据,x经过G生成G(x),G(x)要尽力模仿y,因此他俩一起经过D1来判别真假。反之y也要经过F生成F(y),F(y)要尽力模仿x,他俩一起经过D2来判别真假。 这部分与正常的GAN一样,只不过是双向的,不仅x->y,也y->x。

 

2、CycleConsistency Loss :

cycleGAN最精妙的地方来了,在这里G(x)去模仿y后,又用F(G(x))-x算了一个l1 loss。这是什么意思呢,就是加个约束,使得G把x转为y后,F又能把它转回x。

图解如下:

 

于是乎总的loss如下:

 

那么可不可以不加第二个loss呢?作者也给出了消融实验,如下图:

最左边是输入,中间是没有第二个loss的结果,最右是有第二个loss。可以看出,这个loss,作者称之为identity mapping loss,能帮助图片保留颜色信息。

当然了作者做了许多实验来证明cycleGAN效果非常好:

就不一一列出了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章