Paper Reading:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

1 Introduction
1.1 问题提出
在Image-to-Image模型中,缺少成对的训练样本。
本文提出了一个在缺少成对样本中能够实现讲Image-A转变为Image-B的方法。
1.2 提出一个能够学习不成对图片之间关系的算法。
对于传统的GAN,如果给生成器输入随机X使其输出Y,然后使判别器对Y和yreal进行判别,那么最终会学到一个类似于Yreal的分布。这种方式存在两个问题:
第一个是无法保证以一种特定的方式实现单个x到y的映射,因为这里有无限多种映射可以实现Y。
第二个是在训练过程中很容易产生模式坍塌(mode collapse),即所有的输入都会产生同一个输出,并且无法优化。

1.3 解决
提出循环一致性(Cycle consistent),在对抗性损失中加入循环一致性损失来使
F(G(x)) ≈ \approx x 并且 G(F(y)) ≈ \approx y
其中 G:x -> y,F: y -> x

2 Related work
2.1 GAN:使用GAN的对抗损失,让判别器无法分辨出生成图像和真实图像。
2.2 Image-to-Image translation:本文使用不成对的训练样本。
2.3 Unpaired Image-to-Image translation
CoGAN
本文提出的模型更具泛化性,不止适用于特定任务,没有预先设定输入和输出间的相似函数,也不作输入输出都依赖同一低纬度嵌入空间的假设。
[ we assume that the input and output have to lie in the same low-dimensional embedding space]?????
2.4 Neural Style Transfer:将一张图片的内容和另一张图片的风格融合在一起。
本文的区别:本文的主要任务是学习两个不同图片集的映射,而不是两张特定的图片,以试图捕捉更高level的表现结构。
因此本文的模型也可以用于其他的图片翻译任务,比如painting -> photo,object transfiguration

3 Formulation
3.1 Adversarial loss
在这里插入图片描述
G(X) = Y
F(Y) = X
DX使输入X的G(forward 生成器)能输出更接近domain Y的分布,DY使输入Y的F(backward 生成器)能输出更接近domain X的分布

3.2 加入Cycle consistency loss(循环一致损失)
在这里插入图片描述
图解:将x通过forward生成器G映射为 Y ^ \hat{Y} Y^,输入判别器DY,再将 Y ^ \hat{Y} Y^输入backward生成器F生成 x ^ \hat{x} x^,计算 x 与 x ^ \hat{x} x^ 间的损失。对于逆过程同样计算 y 与 y ^ \hat{y} y^ 的损失。

3.2.1 Why do we need Cycle consistency loss
Adversarial Loss:可以通过G将x映射为与目标domain Y 很接近的y,但严格来讲,这里学到的mapping G是一个随机函数。
在足够大的样本容量下,网络可以将相同的一组输入图片映射为目标domain中任意一组图片序列(多对多而非一对一),这种情况下,学习到的任一映射都能使输出匹配目标分布。因而只有对抗损失无法保证映射函数能够将单个输入xi映射到输出yi.
原文:
[However, with large enough capacity, a network can map the same set of input images to any random permutation(序列) of images in the target domain, where any of the learned mappings can induce an output distribution that matches the target distribution. Thus, adversarial losses alone cannot guarantee that the learned function can map an individual input xi to a desired output yi]

为了进一步减小mapping function的空间,本文认为学到的映射应该遵循循环一致性(Cycle consistency)
损失函数如下(L1):
在这里插入图片描述
Lcyc(G, F) = Ex~pdata(x) [ || F(G(x)) - x ||1 ] + Ey~pdata(y) [ || G(F(y)) - y||1 ]

3.3 完整目标函数为
在这里插入图片描述
L(G, F, DX, DY) = LGAN(G, DY, X, Y) + LGAN(F, DX, Y, X) + λLcyc(G, F)
Q:λ为何用处?
在这里插入图片描述
G* ,F* = arg min ⁡ G , F \min\limits_{G,F} G,Fmin max ⁡ D X , D Y \max\limits_{D_X,D_Y} DX,DYmax L(G, F, D X , D Y D_X, D_Y DX,DY)
G*,F*为所要求的生成器和“逆生成器”
4. Implement
4.1 Network Architecture
4.1.1 生成器:三个卷积层、一些残差块儿、两个反卷积层(步长1/2),一个卷积层
对128 * 128图像使用六个块儿,对256 * 256图像使用九个块儿(??????啥块儿阿)
[We use 6 blocks for 128 × 128 images and 9 blocks for 256×256 and higher-resolution training images.Similar to Johnson et al. [23], we use instance normalization]
使用实例归一化(instance normalization)
注:归一化类型
批归一化(Batch Normalization):求一批N个样本(高H宽W)的每个通道C的均值和方差,即NHW个数的均值和方差,结果为C个均值和方差
在这里插入图片描述

层归一化(Layer Normalization):计算对象为每个样本的所有通道,即CHW个数的均值和方差,结果为N个均值和方差
在这里插入图片描述

实例归一化(Instance Normalization):计算对象为每个样本的每个通道,即HW个数的均值和方差,结果为N * C个均值和方差
在这里插入图片描述

组归一化(Group Normlization):将C个通道分为G个组,计算对象为每个实例的每个组,即C/G*H*W*N个数的均值和方差
在这里插入图片描述
四种归一化的图示:
在这里插入图片描述

4.1.2 判别器:70*70的PatchGANs
4.2 Training details
4.2.1 将负log概率目标函数换为平方损失:
在这里插入图片描述
对于G,最小化 E x   p d a t a ( x ) E_x~p_{data(x)} Ex pdata(x)[(D(G(x)) - )2]
对于D,最小化 E y   p d a t a ( y ) E_y~p_{data(y)} Ey pdata(y)[D(y) - 1]2} + E x   p d a t a ( x ) E_x~p_{data(x)} Ex pdata(x)[D(G(x))2]
4.2.2 减小模式震荡(model oscillation)
使用生成器生成的历史图片而不是最新生成的图片来更新判别器。用一个buffer存储最新生成的50张图片。
在完整目标损失中,设定λ = 10。
使用Adam优化,batch size = 1
学习率为0.0002,前一百个epoch中学习率不变,后一百个epoch将学习率线性减至0。

5.Results

6.Evaluation
6.1 评估:
6.1.1
ATM:
在地图<–>卫星图的任务中,使用AMT来验证生成图片的真实性。
与Image-to-Image中唯一不同的是对于每个算法只搜集25个参与者的数据。
在每个环节中,前十个图片会给出判断的反馈,后40个用于测试,一个环节只测试一个算法。每个参与者只允许参加一个环节。
FCNScore:
在城市风景->照片任务上使用FCNScore进行评估。FCN是现成的语义分割网络。FCN针对生成图片预测一个label map,再将此map与ground truth进行比较。
举个栗子:如果使用标签“car on the road”生成一张图片,而这张图片经FCN预测的标签也是“car on the road”,说明生成的图片具有很好的可解释性。
Semantic segmentation metrics
使用 Cityscapes benchmark来评估photo -> labels,包括像素准确率(per-pixel accuracy),类别准确性(per-class accuracy),和类别IOU(mean class IOU)
6.1.2 Baselines
CoGAN:学习一个生成分布X的生成器和生成分布Y的生成器。对于前几层的共享潜在隐性表示(shared latent representations),即隐变量z的样本空间,将权值绑定。通过找到能够生成X分布的潜在(隐性)表示(z的样本空间)然后将z转换为Y风格。
原文:
[???Translation from X to Y can be achieved by finding a latent representation that generates image X and then rendering this latent representation into style Y]
注:shared latent representation 即指隐变量z的样本空间。
拓展:CoGAN
模型结构如下:
在这里插入图片描述
CoGAN生成器的前几层权值共享,判别器的最后几层权值共享。
可以一次生成两种风格的图像。
对于深度网络,浅层提取低频信息(图片主体信息),深层提取高频信息(图片细节),因而这种网络结构可以生成主体大致相同,风格细节不同的图片。

SimGAN:
使用对抗损失函数,通过L1正则化对在像素级别上的变化进行惩罚。
||x - G(x) ||1

FeatureLoss + GAN:
L1损失用于惩罚深层图像特征(deep image features),而不是RGB像素值。这样计算深层特征空间距离的方法也称为“知觉损失”(perceptual loss)

BiGAN / ALI:
无条件GAN将一个随机噪声z映射为图像x
BiGAN和ALI提出了同时学习F: X -> Z 的逆映射
本文使用同样的目标函数来将源图像x(source image)映射为目标图像y

pix2pix:

为了客观对比,本文中,其他所有的baselines使用和CycleGAN相同的结构和细节。除了CoGAN,CoGAN和我们的image-to-image网络结构不兼容。

6.1.3 Comparison against baselines
实验后,发现其他baselines无法得到很好的结果,而本文的模型可以得到和fully supervised pix2pix 相似质量的结果。
表1:AMT试验中,分辨率为256 * 256的maps -> aerial photos 和aerial photos -> maps 任务中本文的模型骗过了四分之一的识别者。其他baselines几乎不能骗过识别者。
表2:在labels ->photo 以及photo -> label任务中的模型也得到了其他模型达不到的结果。

6.1.4 Analysis of the loss function
表4、表5比较了整体损失函数的消融试验。
移除GAN loss 或者cycle-consistency都会降低结果,因此两部分损失函数都很必要。试验也测试了单向的损失,GAN + forward cycle loss 或者GAN + backward cycle loss,这种情况会导致训练不稳定和模式坍塌。
注:
forward cycle loss:
Ex~pdata(x)[ || F(G(x)) - x ||1 ]
backward cycle loss:
Ey~pdata(y)[ || G(F(y)) - y ||1 ]

图7:
在这里插入图片描述
图7 试验结果
在这里插入图片描述
在这里插入图片描述
Cycle alone 和 GAN + backward都不能生成和目标图像相似的图像。

在这里插入图片描述
在这里插入图片描述
GAN alone 和 GAN + forward发生了模型坍塌,即不论输入如何,输出都几乎一致(学不到细节)。
在这里插入图片描述
从图中可以发现,GAN + Cycle 可以一定程度上避免模式坍塌。

6.1.5 Image reconstruction quality
重构图片的质量:F(G(x))
发现重构的图片和原图很相似,不管是在训练还是测试中,甚至在生成图片和原图差别很大的情况下重构图片一样和原图很相似,比如map <—> aerial photos

6.1.6 Additional results on paired datasets
本文的模型没有经过成对样本的训练,但在成对样本的测试上能达到和fully supervised pix2pix (training with paired datasets)相近的结果。

6.2 Applications
不同画集风格转换:
本文模型可以从一个画集中模拟它的风格,而不是之前工作里从选择的图片里进行模仿,即可以模拟梵高的艺术风格而不只是《星夜》风格。
目标转换:
之前的工作中提出一个subspace model来将一个目标转换为相同类别的另一个目标。本文模型可以将两个视觉上相似的种类进行转换。
季节转换

画像生成真实照片
painting -> photo
额外引入损失函数来鼓励从输入到输出的映射中保留颜色成分。
即训练生成器靠近一个确定的映射
Lidentity(G, F) = Ey~pdata(y)[ || G(y) - y ||1 ] + Ex~pdata(x)[ || F(x) - x ||1 ]

如果没有Lidentity,生成器G和F在不必要时会自由改变输入图片的色彩
比如生成器经常将输入为白天背景的画映射成(像是)在晚上拍出的照片。
因为这样的映射可能在对抗性损失和循环一致性损失上同样valid,即白天和晚上的差别不会引起这两种损失的变化。

图片强化
背景虚化:将手机拍出的照片进行背景虚化
在这里插入图片描述
和Gatys进行比较
艺术风格化任务
目标转换任务

  1. 限制及探讨
    CycleGAN可以胜任图片颜色和纹理的转变,但在几何现状上的改变效果不好,几乎只能进行很小的改变。原因在于本文模型的生成器只针对appearance changes的良好性能而定制的。未来对于几何形状改变的研究很重要。

另外的失败案例来自训练集,比如野马->斑马任务中,训练集中只有马而没有人骑马,因而在测试中人也会变成斑马的样子。

成对训练集和不成对训练集训练出的模型还是有一定差距的。比如,后者有时候会改变树或者建筑的排列,解决这类问题(ambiguity)可能需要弱语义监督(weak semantic supervision)。整合弱监督或者半监督数据可能会产生大量强劲的translators,而半监督的注释比起完全监督的注释,成本仍然很小。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值