语义分割-ICCV2017 Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks循环一致对抗网

代码地址
论文地址

0.摘要

图像到图像的翻译是一类视觉和图形问题,其目标是使用对齐的图像对训练集来学习输入图像和输出图像之间的映射。然而,对于许多任务,成对的训练数据是不可用的。我们提出了一种学习在没有成对例子的情况下将图像从源域X转换为目标域Y的方法。我们的目标是学习一种映射G: X→Y,使G(X)的图像分布与使用对抗性损失的分布Y难以区分。由于这个映射是高度欠约束的,我们将它与一个逆映射F: Y→X耦合,并引入一个循环一致性损失来强制F (G(X))≈X(反之亦然)。在不存在配对训练数据的几个任务上给出了定性结果,包括采集风格转换、对象变形、季节转换、照片增强等。与以前几种方法的定量比较表明了我们的方法的优越性。

1.概述

在这里插入图片描述

图2:成对训练数据(左)由训练实例{Xi,Yi} Ni=1组成,其中对应于每个Xi的Yi给出[20 ]。相反,我们考虑不成对的训练数据(右),由源集{xi} Ni=1∈ X组成和目标集{yj}Mj=1∈ Y,没有提供关于xi匹配的信息yi

在本文中,我们提出了一种方法,可以学习做同样的事情:捕获一个图像集合的特殊特征,并找出如何将这些特征转化为另一个图像集合,所有这些都不需要任何成对的训练示例
这个问题可以更广泛地描述为图像到图像的转换[22],将图像从给定场景的一种表示形式x转换为另一种表示形式y,例如灰度到颜色、图像到语义标签、边缘映射到照片。计算机视觉、图像处理、计算摄影和图形学方面的研究已经在有监督的环境中产生了强大的翻译系统,其中示例图像对{xi,yi}Ni=1可用(图2,左),例如[11,19,22,23,28,33,45,56,58,62]。然而,获得成对的训练数据可能既困难又昂贵。例如,对于语义分割(例如[4])等任务,只有几个数据集存在,而且它们相对较小。由于所需的输出非常复杂,通常需要艺术创作,因此为艺术风格化等图形任务获取输入-输出对可能会更加困难。用于许多任务,如物体变形(例如斑马↔horse,图1(上中),所需的输出甚至没有很好的定义。
因此,我们寻求一种算法,可以在没有成对输入输出示例的情况下学习在域之间进行翻译(图2,右图)。我们假设这些域之间存在某种潜在关系——例如,它们是同一潜在场景的两个不同渲染——并试图了解这种关系。虽然我们缺乏成对示例形式的监控,但我们可以利用集合级别的监控:我们在域X中获得一组图像,在域Y中获得另一组图像。我们可以训练一个映射G:X→Y,使得输出y=G(x)(x∈X,y∈Y) 与y无法被训练得到的对抗网络图像区分。理论上,该目标所生成的Y上产生的分布应当和经验分布pdata(Y)相匹配(通常,这要求G是随机的)[16]。因此,最优G将域X转换为与Y相同分布的域Y。然而,这样的转换并不能保证单个输入x和输出y以有意义的方式配对——有无限多个映射G会在y上产生相同的分布。此外,在实践中,我们发现,孤立地优化对抗目标很困难:标准程序通常会导致众所周知的模式崩溃问题,即所有输入图像映射到同一输出图像,优化无法取得进展[15]。
这些问题要求为我们的目标增加更多的结构。因此,我们利用了翻译应该是“循环一致”的特性,即如果我们将一个句子从英语翻译成法语,然后将其从法语翻译回英语,我们应该回到原始句子[3]。从数学上来说,如果我们有一个翻译器G:X→ Y和另一位翻译F:Y→ X、 那么G和F应该是彼此的倒数,两个映射都应该是双射。我们通过同时训练映射G和F,并添加一个鼓励F(G(x))的循环一致性损失[64],来应用这个结构性假设 F(G(x))≈ x和G(F(y))≈ y。将这种损失与域X和y上的对抗性损失结合起来,我们就可以实现未配对图像到图像的翻译。我们将我们的方法应用到广泛的应用中,包括收集样式转换、对象变形、季节转换和照片增强。我们还与以前的方法进行了比较,这些方法要么依赖于手工定义的风格和内容分解,要么依赖于共享的嵌入函数,并且表明我们的方法优于这些基线。我们提供PyTorch和Torch实现。在我们的网站上查看更多结果。

2.相关工作

2.1.生成对抗网络GAN

生成性对抗网络[16,63]在图像生成[6,39]、图像编辑[66]和表征学习[39,43,37]方面取得了令人印象深刻的成果。最近的方法在条件图像生成应用中采用了相同的想法,如text2image[41]、图像修复[38]和未来预测[36],以及视频[54]和3D数据[57]等其他领域。GANs成功的关键在于对抗性损失迫使生成的图像在原则上与真实照片无法区分。这种损失对于图像生成任务来说尤其效果尤为强大,因为这正是许多计算机图形学旨在优化的目标。我们采用对抗性丢失来学习映射,这样翻译后的图像就无法与目标域中的图像区分开来 。

2.2.图像到图像的翻译

图像到图像转换的想法至少可以追溯到Hertzmann等人的图像类比[19],他们在单个输入输出训练图像对上采用了非参数纹理模型[10]。最近的方法使用输入输出示例数据集,使用CNN学习参数转换函数(例如[33])。我们的方法基于Isola等人[22]的**“pix2pix”框架**,该框架使用条件生成对抗网络[16]来学习从输入到输出图像的映射。类似的想法也被应用到各种任务中,比如从草图[44]或从属性和语义布局[25]生成照片。然而,与前面的工作不同,我们学习映射时没有成对的训练示例

2.3. 未配对图像到图像的翻译

其他几种方法也可以处理未配对设置,其目标是关联两个数据域:X和Y。Rosales等人[42]提出了一个贝叶斯框架,该框架包括从源图像计算的基于补丁的马尔可夫随机场的先验知识和从多个样式图像获得的似然项。最近,CoGAN[32]和跨模态场景网络[1]使用权重共享策略来学习跨域的公共表示。与我们的方法同时,Liu等人[31]将上述框架扩展为可变自动编码器[27]和生成性对抗网络[16]的组合。另一种并行工作[46、49、2]鼓励输入和输出共享特定的“内容”特征,尽管它们在“风格”上可能有所不同。这些方法还使用对抗性网络,并使用额外的术语来强制输出在预定义的度量空间(如类标签空间[2])中接近输入、图像像素空间[46]和图像特征空间[49]。
与上述方法不同,我们的公式不依赖于输入和输出之间任何特定于任务的预定义相似性函数,也不假设输入和输出必须位于同一低维嵌入空间中。这使我们的方法成为许多视觉和图形任务的通用解决方案。我们在第5.1节中直接比较了几种先前和当代的方法。

2.4.循环一致性

使用转递性来规范结构化数据的想法由来已久。在视觉跟踪中,强制执行简单的前后一致性几十年来一直是一个标准技巧[24,48]。在语言领域,通过“反向翻译和协调”验证和改进翻译是人类翻译人员[3](幽默地说,包括马克·吐温[51])以及机器[17]使用的一种技术。最近,高阶循环一致性被用于运动结构[61]、三维形状匹配[21]、共分段[55]、密集语义对齐[65,64]和深度估计[14]。其中,Zhou等人[64]和Godard等人[14]与我们的工作最为相似,因为他们使用循环一致性损失作为使用及物性监督CNN培训的一种方式。在这项工作中,我们引入了一个类似的损耗来推动G和F相互一致。与我们的工作同时,在这些相同的程序中,Yi等人[59]在机器翻译的双重学习[17]的启发下,独立使用了一个类似的未配对图像到图像翻译的目标。

2.5.神经风格转移

神经风格转换[13,23,52,12]是执行图像到图像转换的另一种方法,它通过匹配预先训练的深度特征的Gram矩阵统计信息,将一幅图像的内容与另一幅图像(通常是一幅画)的风格相结合,合成一幅新图像。另一方面,我们主要关注的是通过尝试捕捉更高层次的外观结构之间的对应关系,学习两个图像集合之间的映射,而不是两个特定图像之间的映射。因此,我们的方法可以应用于其他任务,例如绘画→ 照片、物体变形等,单一样本转移方法效果不佳。我们在第5.2节中比较了这两种方法。

3.公式

我们的目标是学习两个域X和Y给定的训练样本{xi}Ni=1之间的映射函数,其中xi∈ X和{yj}Mj=1,其中yj∈ Y 。我们将数据分布表示为x∼ pdata(x)和y∼ pdata(y)。如图3(a)所示,我们的模型包括两个映射G:X→ Y和F:Y→X 此外,我们引入了两个对抗性鉴别器DX和DY,其中DX旨在区分图像{X}和翻译图像{F(y)};同样,DY的目的是区分{y}和{G(x)}。我们的目标包括两类:对抗性损失[16],用于将生成的图像分布与目标域中的数据分布相匹配;循环一致性损失,以防止学习到的映射G和F相互矛盾。
在这里插入图片描述

图3:(a)我们的模型包含两个映射函数G:X→ Y和F:Y→ X、 以及相关的对抗性鉴别器DY和DX。DY鼓励G将X转换为与域Y不可区分的输出,反之亦然,用于DX、F和DX。为了进一步正则化映射,我们引入了两个“周期一致性损失”,它们捕捉到了这样一种直觉:如果我们从一个域转换到另一个域,然后再转换回来,我们应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值