Community 计算机视觉课程文档

CycleGAN 简介

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

CycleGAN 简介

本节介绍 CycleGAN,它是 Cycle-Consistent Generative Adversarial Network(循环一致性生成对抗网络)的缩写,是一种为图像到图像转换任务设计的框架,其中没有成对的示例可用。由 Zhu 等人在 2017 年的论文中提出,它代表了计算机视觉和机器学习领域的重大进步。

在许多图像到图像的转换任务中,目标是学习输入图像和输出图像之间的映射。传统方法通常依赖于大型的成对示例数据集(例如,照片和相应的草图)。然而,在许多情况下,获取此类成对数据集可能非常具有挑战性,甚至不可行。这就是 CycleGAN 发挥作用的地方,因为它被设计为与不成对的数据集一起工作。

什么是不成对的图像到图像转换

paired and unpaired_images

在许多图像转换场景中,我们遇到的数据集缺乏图像对之间的直接、一对一的对应关系。这种场景是不成对图像到图像转换发挥作用的地方。在这里,您不是拥有匹配的图像对,而是使用两个不同的图像集或“堆”,每个集合代表不同的风格或领域,例如 X 和 Y。例如,一堆可能由逼真的照片组成,而另一堆可能包含莫奈、塞尚或其他艺术家的艺术品。或者,这些堆可能代表不同的季节,一个展示冬季景观,另一个展示夏季场景。另一个例子可以是一堆马的图像和另一堆斑马的图像,两者之间没有任何直接配对。不成对图像到图像转换的目标是让模型学习和提取每个堆中的一般风格元素,并将这些学习到的风格应用于将图像从一个领域转换到另一个领域。这种转换通常是双向的,允许将域 X 中的图像转换为域 Y 的风格,反之亦然。当无法获得或难以获得精确的图像对时,这种方法尤其有价值。

CycleGAN 的主要组成部分

双 GAN 结构:

CycleGAN 采用两个 GAN(生成对抗网络),一个用于从第一个集合翻译到第二个集合(例如,从斑马到马),另一个用于反向过程(从马到斑马)。这种双重结构确保了真实感(通过对抗过程)和内容保留(通过循环一致性)。

  • PatchGAN 判别器:CycleGAN 中使用的判别器基于 PatchGAN 架构,该架构评估图像的补丁而不是整体,从而有助于更详细和局部的真实感。
  • 生成器架构:CycleGAN 中的生成器借鉴了 U-Net 和 [DCGAN](https://arxiv.org/abs/1511.06434 架构,涉及下采样(编码)、上采样(解码)以及具有批归一化和 ReLU 的卷积层。这些生成器通过额外的卷积层和跳跃连接(称为残差连接)进行增强,这有助于学习恒等函数并支持更深层次的转换。

循环一致性损失:

确保图像的风格可以改变(例如,悲伤的脸变成拥抱的脸),然后可以恢复到其原始形式(拥抱的脸变回悲伤的脸),而细节或内容的损失最小。

实现涉及两个阶段的转换。

第一阶段:悲伤的脸被转换为拥抱的脸。第二阶段:然后将这个拥抱的脸转换回悲伤的脸。该模型的目标是使最终图像(恢复的悲伤的脸)与原始悲伤的脸非常相似。这是通过最小化这两个图像之间的像素差异来实现的,这被添加到模型的损失函数中。循环一致性在两个方向上都应用:悲伤的脸到拥抱的脸到悲伤的脸,以及拥抱的脸到悲伤的脸到拥抱的脸。每个循环的损失通过对像素差异求和来计算,然后将其纳入整体生成器损失中。与对抗损失的整合:循环一致性损失与 GAN 中常用的对抗损失相结合,形成一个综合的损失函数。这种组合的损失函数同时针对 CycleGAN 中的两个生成器进行优化。

最小二乘损失:

这是一种最小化平方残差之和的方法。这意味着它试图找到最佳拟合线,该线在该线与所有点之间具有最小的平方距离之和。在 GAN 中,线代表标签(真实或虚假),点代表判别器的预测。最小二乘对抗损失中的判别器损失函数是通过计算其预测与多个图像上的实际标签(真实或虚假)之间的平方距离来制定的。对于生成器,损失函数旨在使其虚假输出看起来尽可能真实,这通过这些输出与真实标签的偏差程度来衡量。具有最小二乘损失解决了 BCE 损失中常见的梯度消失和模式崩溃问题。

恒等损失:

恒等损失在 CycleGAN 中引入,是一个可选的损失项,旨在增强生成图像中的颜色保留。它的工作原理是确保输入到生成器的图像(例如,马的图像输入到斑马到马的生成器)理想情况下应该输出相同的图像,因为它已经具有目标风格。损失计算为真实输入和生成器输出之间的像素距离。零像素距离(图像中没有变化)导致零恒等损失,这是期望的结果。对于 CycleGAN 生成器,此损失与对抗损失和循环一致性损失一起添加。它使用 lambda 项(权重因子)进行调整。

CycleGAN 此图显示了两个 GAN 的组合 GAN 架构功能。这些 GAN 通过循环一致性连接,形成一个循环。对于真实图像,分类矩阵包含 1。对于虚假图像,它包含 0。总而言之,CycleGAN 复杂地结合了两个 GAN 和各种损失函数,包括对抗损失、循环一致性损失和可选的恒等损失,以有效地在两个域之间传输风格,同时保留输入图像的基本特征。

< > 在 GitHub 上更新