循环生成对抗网络(CycleGAN)详解
循环生成对抗网络(CycleGAN)详解
CycleGAN是一种用于图像转换的深度学习模型,它能够在没有成对训练数据的情况下实现图像风格的迁移。本文将详细介绍CycleGAN的工作原理、架构设计、损失函数以及其在不同场景下的应用。
GAN是由Ian Goodfellow提出的。CycleGAN用于将一个图像的特征传递到另一个图像,或者可以将图像的分布映射到另一个图像。在CycleGAN中,我们将问题视为图像重建问题。我们首先获取图像输入(x)并使用生成器G转换为重建的图像。然后我们使用生成器F将这个过程从重建图像反转为原始图像。然后我们计算真实图像和重建图像之间的均方误差损失。此CycleGAN最重要的功能是它可以在输入图像和输出图像之间不存在关系的未配对图像上执行此图像转换。
架构
像所有对抗网络一样,CycleGAN也有两个部分:生成器和判别器。生成器的工作是从所需的分布中产生样本,而判别器的工作是弄清楚样本来自实际分布(真实)或来自生成器生成的分布(假)。
CycleGAN架构与其他GAN的不同之处在于它包含2个映射函数(G和F),用作生成器及其相应的判别器(Dx和Dy):生成器映射函数如下:
其中X是输入图像分布,Y是所需的输出分布(如Van Gogh样式)。与这些对应的判别器是:
- Dx:区分G(X)(生成输出)和Y(实际输出)
- Dy:区分F(Y)(生成的逆输出)和X(输入分布)
为了进一步规范映射,作者除了对抗性损失外,还使用了两个损失函数。正向循环一致性损失和反向循环一致性损失。正向循环一致性损失优化了循环:
向后循环一致性损失优化了循环:
生成器架构
每个CycleGAN生成器都有三个部分:
- 编码器
- 变换
- 译码器
输入图像将传递到编码器中。编码器使用卷积从输入图像中提取特征,并压缩图像的表示,但增加通道数。编码器由3个卷积组成,可将表示减少实际图像大小的1/4。考虑一个大小为(256,256,3)的图像,我们将其输入到编码器中,编码器的输出将为(64,64,256)。
然后,施加激活函数后的编码器输出被传递到变压器中。变压器包含基于input大小的6或9个残余块。然后将transformer的输出传递到解码器中,解码器使用2个分数步幅的-deconvolution块将表示的大小增加到原始大小。
生成器的架构是:
c7s1-64、d128、d256、R256、R256、R256、
R256、R256、R256、u128、u64、c7s1-3
其中c7s1-k表示具有k个滤波器和步幅1的7×7Convolution-InstanceNorm-ReLU层。dk表示具有k个滤波器和stride2的3×3Convolution-InstanceNorm-ReLU层。Rk表示一个残差块,其中包含两个3×3个卷积层,两层上的滤波器数量相同。uk表示一个3×3分数步幅-Convolution-InstanceNorm-ReLU层,具有k个滤波器和步幅1/2(即反卷积作)。
鉴别器架构
在判别器中,作者使用PatchGAN判别器。PatchGAN和常规GAN判别器之间的区别在于,常规GAN从256×256图像映射到单个标量输出,这意味着“真实”或“虚假”,而PatchGAN从256×256映射到NxN(这里为70×70)输出X数组,其中每个Xij表示图像中的补丁ij是真的还是假的。
鉴别器的架构是:
C64-C128-C256-C512
其中Ck是4×4卷积-InstanceNorm-LeakyReLU层,具有k个滤波器和步幅2。我们不在第一层(C64)上应用InstanceNorm。在最后一层之后,我们应用卷积运算来生成1×1输出。
成本函数
- Adversarial Loss(对抗性输球):我们将对抗性损失应用于生成器和判别器的映射。这种对手损失写成:
- 循环一致性损失:给定一组随机的图像,对抗网络可以将输入图像集映射到输出域中图像的随机排列,这可能会诱导类似于目标分布的输出分布。因此,对抗映射不能保证输入x我到y我.为了实现这一点,作者提议流程应该是周期一致的。这个损失函数在CycleGAN中用于测量逆映射G(x)->F(G(x))的误差率。此损失函数引起的行为导致实际输入(x)和F(G(x))紧密匹配
我们使用的Cost函数是对抗性损失和循环一致损失之和:
我们的目标是:
应用
- 收藏风格转移:作者使用从Flickr和WikiArt下载的风景照片训练了模型。与其他关于神经风格迁移的作品不同,CycleGAN学习模仿整个艺术作品的风格,而不是迁移单个选定艺术作品的风格。因此它可以生成不同的风格,例如:梵高、塞尚、莫奈和浮世绘.
样式传递结果
不同样式迁移结果的比较
- 对象转换:CycleGAN可以将对象从一个ImageNet类转换为另一个ImageNet类,例如:Zebra到Horses,反之亦然,Apples到Oranges等。
- 苹果<—>橙:
- 季节转移:CycleGAN还可以将图像从冬季转移到夏季,反之亦然。为此,该模型使用Flickr中优胜美地的854张冬季照片和1273张夏季照片进行了训练。
- 从绘画生成照片:CycleGAN也可用于从绘画中转换照片,反之亦然。但是,为了改进这种转换,作者还引入了一种称为Identity loss的额外损失。这种损失可以定义为:
- 照片增强:CycleGAN也可用于照片增强。为此,该模型从两类图像中拍摄,分别是从智能手机相机(由于低光圈而通常具有较深的景深)到DSLR(具有较低的景深)捕获的。对于此任务,该模型将图像从智能手机转换为DSLR质量的图像。
评估指标
- AMT感知研究:对于地图航拍任务,作者在Amazon Mechanical Turk(AMT)上运行“真假”感知研究,以评估我们输出的真实性。.向参与者展示了一系列图像对,一对是真实的照片或地图,一对是假的(由我们的算法或基线生成),并要求点击他们认为真实的图像。
- FCN分数:对于Cityscapes标签的照片数据集,作者FCN评分.FCN预测生成的照片的标签映射。然后,可以使用标准语义分割指标将此标签映射与输入的真值标签进行比较。此处是Cityscapes数据集中使用的标准分割指标,例如每像素精度、每类IoU和平均类IoU。
结果
- 对于地图航拍任务,AMT“真假”测试的结果如下:
在这项任务中,作者从Google Maps和Google Earth中抓取数据,并根据不同的GAN方法进行评估,并与Ground Truth进行比较。
不同指标的分类性能
Cityscapes数据集的一些结果如下
缺点和限制
- 当我们需要执行颜色或纹理转换时,CycleGAN可能很有用,但是当应用于执行几何转换时,CycleGAN的性能不是很好。这是因为生成器架构经过训练,可以在图像中执行外观更改。
CycleGAN的失败案例
本文原文来自CSDN