社区计算机视觉课程文档

CycleGAN 介绍

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

CycleGAN 介绍

本节介绍 CycleGAN,全称为“循环一致性生成对抗网络”,它是一个专为图像到图像转换任务设计的框架,特别适用于没有配对示例的情况。该框架由 Zhu 等人在 2017 年的一篇论文中提出,代表了计算机视觉和机器学习领域的一项重大进展。

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

什么是非配对图像到图像转换

paired and unpaired_images

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

CycleGAN 的主要组成部分

双 GAN 结构:

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

  • PatchGAN 判别器:CycleGAN 中使用的判别器基于 PatchGAN 架构,该架构评估图像的补丁而不是整个图像,有助于实现更详细和局部的真实感。
  • 生成器架构:CycleGAN 中的生成器借鉴了 U-NetDCGAN 架构,包括下采样(编码)、上采样(解码)和带有批量归一化和 ReLU 的卷积层。这些生成器通过额外的卷积层和跳跃连接(称为残差连接)得到增强,这有助于学习恒等函数并支持更深层的转换。

循环一致性损失:

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

实现涉及两个转换阶段。

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

最小二乘损失:

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

身份损失:

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

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

< > 在 GitHub 上更新