Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Generative Adversarial Network (GAN)

生成对抗网络(GAN)通过让生成器与判别器对抗训练,直到生成样本足以以假乱真。涵盖训练、变体和用途。

生成对抗网络(GAN)是一种生成式 AI模型,由两个相互对抗训练的神经网络构成:生成器将随机噪声转换为样本,判别器则尝试区分这些样本与真实的训练数据。训练结束后,生成器只需一次前向传播,就能生成新的图像、音频或表格记录。Ian Goodfellow 及其蒙特利尔大学的同事在 2014 年的论文《生成对抗网络》中提出了 GAN;直到扩散模型在 2021 年超越 GAN 之前,GAN 一直引领图像合成领域。

GAN 的训练原理#

两个网络进行极小极大博弈。判别器是一个二元分类器,输出输入为真实样本的概率;它使用交叉熵损失函数进行训练,对真实样本打分为 1,对生成样本打分为 0。生成器看不到真实数据,只能从判别器的梯度中学习。在理论最优状态下,生成分布等于数据分布,判别器对每个输入的输出都是 0.5。在训练初期,伪造样本很容易识别,此时原始生成器目标几乎无法提供梯度,这属于梯度消失问题;因此,Goodfellow 的论文让生成器最大化判别器将其样本判为真实样本的概率。下面的代码使用这种非饱和损失。

一个一维 GAN 仅凭样本就能在 PyTorch中学习高斯分布:

import torch
from torch import nn

torch.manual_seed(0)

# Generator maps 8-D noise to a number; discriminator scores a number as real (high) or fake (low)
generator = nn.Sequential(nn.Linear(8, 32), nn.ReLU(), nn.Linear(32, 1))
discriminator = nn.Sequential(nn.Linear(1, 32), nn.LeakyReLU(0.2), nn.Linear(32, 1))
opt_g = torch.optim.Adam(generator.parameters(), lr=1e-3)
opt_d = torch.optim.Adam(discriminator.parameters(), lr=1e-3)
bce = nn.BCEWithLogitsLoss()
real_label, fake_label = torch.ones(64, 1), torch.zeros(64, 1)

for step in range(3000):
    real = 4.0 + 1.25 * torch.randn(64, 1)  # training data: samples from N(4, 1.25^2)
    fake = generator(torch.randn(64, 8))

    # Discriminator step: label real samples 1 and generated samples 0
    loss_d = bce(discriminator(real), real_label) + bce(discriminator(fake.detach()), fake_label)
    opt_d.zero_grad()
    loss_d.backward()
    opt_d.step()

    # Generator step: push the discriminator to label generated samples 1
    loss_g = bce(discriminator(fake), real_label)
    opt_g.zero_grad()
    loss_g.backward()
    opt_g.step()

samples = generator(torch.randn(10000, 8)).detach()
print(f"Generated mean {samples.mean():.2f}, std {samples.std():.2f} (data: 4.00, 1.25)")
print(f"Discriminator's average P(real) on generated samples: {torch.sigmoid(discriminator(samples)).mean():.2f}")

交替训练 3,000 步后,生成样本的均值为 3.95、标准差为 1.20,而数据的均值和标准差分别为 4.00 和 1.25;判别器判定这些样本为真实样本的平均概率为 0.51,接近理论最优状态下的抛硬币概率。

GAN 的主要变体#

  • DCGAN:Alec Radford、Luke Metz 和 Soumith Chintala 于 2015 年提出的设计,让卷积式生成器和判别器能够稳定训练;该设计用步幅卷积替换池化层,并加入批归一化。
  • 条件 GAN 和 pix2pix:向两个网络都输入类别标签或图像,可以让生成器生成指定输出。Phillip Isola 及其同事提出的 pix2pix(2017)能够学习成对转换,例如将标签图转换为街景照片,或将边缘图转换为商品照片。
  • CycleGAN:学习在两个图像集合之间进行转换,无需成对样本,例如将马转换为斑马,或将夏季景观转换为冬季景观;它要求转换后的图像能够映射回原图。
  • Wasserstein GAN(WGAN):Martin Arjovsky 及其同事于 2017 年用一个估计真实数据与生成数据之间 Wasserstein 距离的评论器取代分类器;即使两个分布几乎没有重叠,这种设计也能保持梯度有效。
  • StyleGAN:NVIDIA 的 StyleGAN(2018)和 StyleGAN2(2019)会将学得的风格向量输入生成器的每一层。StyleGAN2 在 FFHQ 数据集的 1024 x 1024 人脸图像上,将 Fréchet Inception 距离(FID)降至 2.84。

应用场景#

  • 超分辨率:SRGAN(2017)、ESRGAN(2018)和 Real-ESRGAN(2021)为放大网络加入对抗损失,在仅使用逐像素损失会产生模糊的情况下恢复清晰纹理。
  • 医学图像增强:Maayan Frid-Adar 及其同事使用 182 个肝脏病灶的 CT 扫描训练 GAN,并将合成病灶加入训练,使分类器的灵敏度从 78.6% 提高到 85.7%,特异度从 88.4% 提高到 92.4%。
  • 深度伪造:Sophie Nightingale 和 Hany Farid 于 2022 年开展的一项研究发现,参与者区分 StyleGAN2 人脸是真实还是合成的准确率为 48%,略低于随机猜测;他们还认为合成人脸更值得信任。

只要真实样本稀缺,GAN 生成的图像就可用作合成数据,并与翻转和旋转等几何变换一起作为数据增强的一环。这些图像与其他图像一样加入 YOLO26训练集:Ultralytics 检测数据集 YAML中的 train 划分接受目录列表,因此合成图像可以放在真实图像旁边的独立文件夹中,只需编辑一行即可添加或移除。

GAN、扩散模型与 VAE 的对比#

OpenAI 的 Prafulla Dhariwal 和 Alex Nichol 于 2021 年报告称,扩散模型在 ImageNet 上取得了比当时最强 GAN BigGAN-deep 更好的 FID,此后扩散模型在图像质量上超越了 GAN。扩散模型的训练是稳定的回归问题,不涉及对抗过程,而且能更全面地涵盖数据的多样性。GAN 训练可能振荡而无法收敛,也可能陷入模式崩溃:生成器只生成少数能骗过判别器的输出,不再生成其余内容。变分自编码器的训练同样稳定,但生成样本更模糊。GAN 持久的优势在于速度,因为采样只需一次前向传播:Adobe Research、卡内基梅隆大学和 POSTECH 开发的 GigaGAN 于 2023 年在 0.13 秒内生成了 512 像素的文本生成图像结果。对抗损失也仍用于扩散系统内部。Stable Diffusion的自编码器使用基于图像块的判别器进行训练;Stability AI 的 SDXL Turbo 则使用对抗式扩散蒸馏,这是一种在损失中加入判别器的知识蒸馏方法,可通过单步生成图像。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来