Skip to content

GAN (Generative Adversarial Network)

GAN(生成对抗网络)由 Ian Goodfellow 等人在 2014 年论文 "Generative Adversarial Nets" 中提出。它通过让两个神经网络——生成器(Generator)判别器(Discriminator)——互相对抗来学习数据分布,从而生成逼真的样本。GAN 的出现开启了深度生成模型的新时代,被 Yann LeCun 称为"过去十年机器学习领域最有趣的想法"。


背景与动机

生成模型回顾

深度生成模型的核心目标是学习数据分布 \(p_{data}(x)\),然后从中采样生成新的数据。根据建模方式,可以分为两大类:

显式密度估计(Explicit Density):直接定义并优化一个概率密度函数 \(p_\theta(x)\)

  • 自回归模型(如 PixelRNN/PixelCNN):将联合分布分解为条件分布的乘积,逐像素生成
  • 变分自编码器(VAE):通过变分推断,优化对数似然的下界(ELBO)
  • 流模型(Flow):通过可逆变换,精确计算似然

隐式密度估计(Implicit Density):不显式定义概率密度函数,而是直接学习一个从噪声到数据的映射。

  • GAN 就是这一类的代表:我们永远不知道 \(p_g(x)\) 的解析形式,但可以从中采样

显式 vs 隐式的直觉理解

显式方法好比"我给你写一个数学公式来描述猫的长相"——你既能算概率又能生成样本。隐式方法好比"我训练一个画家,他不懂概率公式,但他画出来的猫看起来很真"——你只能生成,无法计算某张图的精确概率。

GAN 的核心思想:博弈论视角

GAN 的灵感来源于博弈论中的二人零和博弈(Two-player Minimax Game)。两个网络各自有自己的目标:

  • 生成器 G:尽可能生成"以假乱真"的样本,让判别器无法分辨
  • 判别器 D:尽可能准确地区分真实样本和生成样本

两者的博弈推动彼此不断进步,最终达到纳什均衡:生成器生成的数据与真实数据无法区分。

"造假币者 vs 警察"类比

Goodfellow 在原论文中给出了一个直觉类比:

  • 生成器 G = 造假币者:不断提升造假技术,试图让假币越来越逼真
  • 判别器 D = 警察:不断提升鉴别能力,试图识破每一张假币

造假币者和警察的"军备竞赛"推动双方能力不断提升。最终理想状态是:造假币者的技术完美到警察完全无法分辨真假——此时假币就等价于真币。


GAN 架构详解

整体架构

            随机噪声                     真实数据
           z ~ N(0, I)                  x ~ p_data
               │                            │
               ▼                            │
        ┌──────────────┐                    │
        │  Generator G │                    │
        │  (神经网络)   │                    │
        └──────┬───────┘                    │
               │                            │
               ▼                            ▼
            G(z)                           x
         (生成样本)                     (真实样本)
               │                            │
               └──────────┬─────────────────┘
                          │
                          ▼
                 ┌─────────────────┐
                 │ Discriminator D │
                 │   (神经网络)     │
                 └────────┬────────┘
                          │
                          ▼
                    D(·) ∈ [0, 1]
                 (真实概率的估计)

生成器 G (Generator)

生成器是一个从低维潜在空间到高维数据空间的映射:

\[ G: \mathbb{R}^d \rightarrow \mathbb{R}^n, \quad z \mapsto G(z) \]
  • 输入:随机噪声向量 \(z \sim p_z(z)\),通常 \(z \sim \mathcal{N}(0, I)\)\(z \sim \text{Uniform}(-1, 1)\)
  • 输出:生成的假样本 \(G(z)\),与真实数据具有相同维度
  • 目标:让 \(G(z)\) 的分布 \(p_g\) 尽可能接近真实数据分布 \(p_{data}\)

在图像生成任务中,G 通常使用转置卷积(Transposed Convolution)逐步将低维噪声上采样为高分辨率图像。

判别器 D (Discriminator)

判别器是一个二分类器:

\[ D: \mathbb{R}^n \rightarrow [0, 1], \quad x \mapsto D(x) \]
  • 输入:一个样本(可能是真实的 \(x\),也可能是生成的 \(G(z)\)
  • 输出:该样本来自真实数据的概率估计
  • 目标:对真实样本输出高概率(接近 1),对生成样本输出低概率(接近 0)

对抗训练目标函数

GAN 的训练被形式化为如下极小极大博弈(Minimax Game)

\[ \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))] \]

拆解理解这个目标函数:

  • \(\mathbb{E}_{x \sim p_{data}}[\log D(x)]\):D 把真实样本判为"真"的对数概率。D 希望最大化这一项(让 \(D(x) \to 1\)
  • \(\mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))]\):D 把生成样本判为"假"的对数概率。D 希望最大化这一项(让 \(D(G(z)) \to 0\)),而 G 希望最小化这一项(让 \(D(G(z)) \to 1\)

目标函数的直觉

判别器 D 想让 \(V(D,G)\) 尽可能大——既能认出真品,又能识破赝品。生成器 G 想让 \(V(D,G)\) 尽可能小——让判别器把赝品当真品。这就是 \(\min_G \max_D\) 的含义。


训练过程详解

交替训练

GAN 的训练采用交替优化策略。在每一轮迭代中:

步骤一:训练判别器 D(k 步)

固定 G,更新 D 的参数以最大化 \(V(D, G)\)

  1. 从真实数据中采样一个 mini-batch \(\{x^{(1)}, \ldots, x^{(m)}\}\)
  2. 从噪声分布中采样一个 mini-batch \(\{z^{(1)}, \ldots, z^{(m)}\}\)
  3. 通过梯度上升更新 D:
\[ \nabla_{\theta_d} \frac{1}{m} \sum_{i=1}^{m} \left[ \log D(x^{(i)}) + \log(1 - D(G(z^{(i)}))) \right] \]

步骤二:训练生成器 G(1 步)

固定 D,更新 G 的参数以最小化 \(V(D, G)\)

  1. 从噪声分布中采样一个 mini-batch \(\{z^{(1)}, \ldots, z^{(m)}\}\)
  2. 通过梯度下降更新 G:
\[ \nabla_{\theta_g} \frac{1}{m} \sum_{i=1}^{m} \log(1 - D(G(z^{(i)}))) \]

为什么先训练 D 多步?

如果 D 太弱,它无法为 G 提供有意义的梯度信号。直觉上说,如果"警察"连真假都分不清,"造假者"就无从知道自己该往哪个方向改进。因此原论文建议每训练 G 一步,先训练 D k 步(原文中 k=1 就够了,但实践中有时需要更多)。

理论最优判别器

给定固定的生成器 G,最优判别器 \(D^*\) 的解析解为:

\[ D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_g(x)} \]

推导:对于固定的 G,目标函数 \(V(D, G)\) 关于 D 的优化可以写成:

\[ V(D, G) = \int_x \left[ p_{data}(x) \log D(x) + p_g(x) \log(1 - D(x)) \right] dx \]

对被积函数关于 \(D(x)\) 求导并令其为零:

\[ \frac{p_{data}(x)}{D(x)} - \frac{p_g(x)}{1 - D(x)} = 0 \]

解得 \(D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_g(x)}\)

全局最优

\(D^*\) 代回目标函数,可以证明:

\[ V(D^*, G) = -\log 4 + 2 \cdot D_{JS}(p_{data} \| p_g) \]

其中 \(D_{JS}\)JS 散度(Jensen-Shannon Divergence)

\[ D_{JS}(p \| q) = \frac{1}{2} D_{KL}\left(p \left\| \frac{p+q}{2}\right.\right) + \frac{1}{2} D_{KL}\left(q \left\| \frac{p+q}{2}\right.\right) \]

因为 JS 散度恒非负,且当且仅当 \(p_{data} = p_g\) 时为零,所以:

  • 全局最优\(p_g = p_{data}\) 时达到
  • 此时 \(V(D^*, G) = -\log 4\)
  • 此时 \(D^*(x) = \frac{1}{2}\),即判别器对每个样本都输出 0.5——完全无法区分真假

Non-Saturating Loss

实际训练中 G 的梯度问题

在训练早期,G 生成的样本很差,\(D(G(z)) \approx 0\)。此时 \(\log(1 - D(G(z))) \approx \log(1) = 0\),梯度几乎为零,G 很难学习。这被称为饱和(saturation)问题。

原始目标让 G 最小化 \(\log(1 - D(G(z)))\),但实际训练中通常替换为最大化 \(\log D(G(z))\)

目标 G 的损失函数 梯度特性
原始 (Minimax) \(\log(1 - D(G(z)))\) \(D(G(z)) \to 0\) 时梯度消失
替代 (Non-saturating) \(-\log D(G(z))\) \(D(G(z)) \to 0\) 时梯度很大

两者在 \(D(G(z)) = 0.5\) 处梯度大小相同,但 Non-saturating 版本在训练初期提供更强的梯度信号,极大改善了训练稳定性。


数值示例:1D 高斯分布拟合

为了直观理解 GAN 的训练过程,考虑一个简化例子:真实数据服从一维高斯分布 \(p_{data} = \mathcal{N}(5, 1)\),生成器从均匀噪声 \(z \sim \text{Uniform}(0, 1)\) 出发学习这个分布。

假设 G 是一个简单的线性变换 \(G(z) = az + b\),D 是一个小型神经网络。

训练过程可视化

阶段 G 的输出分布 D 的行为 说明
初始 \(G(z) \sim \text{Uniform}(0, 1)\)(远离目标) \(D\) 轻松区分真假,\(D(x_{real}) \approx 1\), \(D(G(z)) \approx 0\) G 的样本完全不像真实数据
第 100 步 \(G(z)\) 分布均值开始向 5 移动 \(D\) 仍能较好区分,但准确率下降 G 学到了大致的位置
第 500 步 \(G(z) \approx \mathcal{N}(4.5, 0.8)\) \(D\) 区分变得困难,\(D(\cdot) \approx 0.6\text{--}0.7\) G 接近目标分布
收敛 \(G(z) \approx \mathcal{N}(5, 1)\) \(D(x) \approx 0.5\)(对所有输入) 达到纳什均衡

损失变化趋势

Loss
 │
 │  D_loss
 │  ╲
 │   ╲        ___________
 │    ╲______╱            ─── → ln(2) ≈ 0.693
 │
 │         ╱‾‾‾‾‾‾‾‾‾‾‾‾‾
 │   _____╱
 │  ╱
 │ ╱  G_loss
 │
 └──────────────────────────→ Training Steps

在理想情况下,当训练达到均衡时:

  • \(D_{loss} = -[\log(0.5) + \log(0.5)] = \log 4 \approx 1.386\)(每个样本取平均后为 \(\log 2 \approx 0.693\)
  • \(G_{loss} = -\log(0.5) = \log 2 \approx 0.693\)

训练困难与解决方案

GAN 的训练以不稳定著称。以下是几个核心问题及应对策略。

Mode Collapse(模式坍缩)

问题:生成器只学会生成少数几种样本,而忽略了数据分布的其他模式。例如,在 MNIST 数据集上,G 可能只会生成数字 "1" 和 "7",而不生成其他数字。

原因:G 发现某些样本特别容易骗过 D,于是"投机取巧"只生成这些样本。从优化角度看,这是因为 G 的目标函数并不直接惩罚多样性缺失。

解决方案

  • Minibatch Discrimination:让 D 同时看一批生成样本,检测其多样性
  • Unrolled GAN:让 G 在优化时"展望" D 未来几步的更新
  • WGAN:使用 Wasserstein 距离替代 JS 散度,从根本上缓解问题

训练不稳定

问题:D 太强时,G 收到的梯度接近零(梯度消失);D 太弱时,G 收到的梯度信号没有意义。两个网络必须保持微妙的平衡。

类比:就像一场师生对弈——老师太强学生学不到东西(每步都被碾压),老师太弱学生也学不到东西(每步都轻松获胜)。

解决方案

  • 仔细调节 D 和 G 的学习率和训练步数比例
  • 使用 Spectral Normalization 约束 D 的 Lipschitz 常数
  • 使用 Two-Timescale Update Rule (TTUR):D 用较大学习率,G 用较小学习率

梯度消失

问题:当 D 训练得太好时,\(D(G(z)) \approx 0\),原始损失 \(\log(1 - D(G(z))) \approx 0\),G 几乎无法获得梯度更新。

数学分析:在最优判别器 \(D^*\) 下,当 \(p_g\)\(p_{data}\) 的支撑集不重叠时(高维空间中这几乎必然发生),JS 散度为常数 \(\log 2\),梯度为零。

解决方案

  • 使用 Non-saturating loss
  • 使用 Wasserstein 距离(即使分布不重叠也能提供有意义的梯度)
  • 对输入添加噪声(Instance Noise),使真假分布的支撑集重叠

评估困难

问题:不像分类任务有准确率、回归任务有 MSE,GAN 缺乏一个可靠的单一指标来衡量生成质量。训练损失本身不能反映生成质量——D 和 G 的损失都在振荡并不意味着训练失败。

常用评估指标

指标 衡量内容 优点 缺点
IS (Inception Score) 生成质量 + 多样性 计算简单 不与真实数据对比
FID (Frechet Inception Distance) 生成分布与真实分布的距离 与人类判断相关性高 需要大量样本
Precision & Recall 质量 vs 覆盖率的权衡 分离了两个维度 计算复杂

FID 的直觉

FID 提取真实图像和生成图像在 Inception 网络中间层的特征,将两组特征各自建模为高斯分布,然后计算这两个高斯分布之间的 Frechet 距离。FID 越低,说明生成图像与真实图像越接近。


GAN 变体

GAN 的基本框架诞生后,涌现了大量改进变体,从架构设计、损失函数、训练策略等多个方向推动了生成模型的发展。

DCGAN (Deep Convolutional GAN, 2015)

DCGAN 是第一个成功将 CNN 引入 GAN 的工作,提出了一系列架构指导原则:

  • 步长卷积(Strided Convolution)替代池化层(Pooling)
  • 在 G 和 D 中都使用 Batch Normalization(D 的输入层和 G 的输出层除外)
  • 去掉全连接层,使用全卷积架构
  • G 使用 ReLU 激活(输出层用 Tanh),D 使用 LeakyReLU
Generator 架构(DCGAN):
z ∈ R^100 → FC → Reshape(4×4×1024) → ConvT(512) → ConvT(256) → ConvT(128) → ConvT(3) → 64×64×3 图像
                  (每层都有 BN + ReLU,输出层用 Tanh)

Discriminator 架构(DCGAN):
64×64×3 图像 → Conv(128) → Conv(256) → Conv(512) → Conv(1024) → FC → Sigmoid
               (每层都有 BN + LeakyReLU,输入层无 BN)

DCGAN 的意义在于证明了 GAN 可以生成较高质量的图像,并且学到了有意义的潜在空间表示(例如:戴眼镜男人 - 男人 + 女人 = 戴眼镜女人)。

WGAN (Wasserstein GAN, 2017)

WGAN 是 GAN 训练稳定性的重要突破,核心改动是将 JS 散度替换为 Wasserstein-1 距离(Earth Mover's Distance)

\[ W(p_{data}, p_g) = \inf_{\gamma \in \Pi(p_{data}, p_g)} \mathbb{E}_{(x,y) \sim \gamma}[\|x - y\|] \]

直觉上,Wasserstein 距离衡量的是"把一堆土从分布 \(p_g\) 搬到分布 \(p_{data}\) 所需的最小工作量"。

通过 Kantorovich-Rubinstein 对偶,WGAN 的目标函数变为:

\[ \min_G \max_{D \in \text{1-Lipschitz}} \mathbb{E}_{x \sim p_{data}}[D(x)] - \mathbb{E}_{z \sim p_z}[D(G(z))] \]

关键改动

  • D(此时称为 Critic)的输出不再经过 Sigmoid,不再输出概率,而是输出一个实数分数
  • 使用 Weight Clipping(将 D 的参数裁剪到 \([-c, c]\))来近似 Lipschitz 约束
  • 去掉 D 中的 Batch Normalization(会破坏 Lipschitz 约束)
  • 使用 RMSProp 优化器(不用基于动量的优化器如 Adam)

WGAN 解决了什么?

JS 散度在两个分布不重叠时恒为 \(\log 2\)(常数),梯度为零。而 Wasserstein 距离即使在分布不重叠时也是连续的、可微的,能持续为 G 提供有意义的梯度信号。同时,Critic 的损失可以作为训练进度的指标——它与生成质量正相关。

WGAN-GP (WGAN with Gradient Penalty, 2017)

WGAN 中的 Weight Clipping 是一种粗暴的做法,容易导致:权重集中在裁剪边界 \(\{-c, c\}\),限制了模型的表达能力。

WGAN-GP 提出用梯度惩罚替代 Weight Clipping:

\[ L = \underbrace{\mathbb{E}_{z \sim p_z}[D(G(z))] - \mathbb{E}_{x \sim p_{data}}[D(x)]}_{\text{Critic loss}} + \lambda \underbrace{\mathbb{E}_{\hat{x} \sim p_{\hat{x}}}[(\|\nabla_{\hat{x}} D(\hat{x})\|_2 - 1)^2]}_{\text{Gradient Penalty}} \]

其中 \(\hat{x}\) 是真实样本和生成样本之间的随机插值点,\(\lambda\) 通常取 10。

梯度惩罚强制 D 在整个空间中满足 1-Lipschitz 约束(梯度范数接近 1),训练更稳定,性能也更好。

Conditional GAN (cGAN, 2014)

条件 GAN 在 G 和 D 中都引入额外的条件信息 \(y\)(如类别标签):

\[ \min_G \max_D \mathbb{E}_{x \sim p_{data}}[\log D(x|y)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z|y)|y))] \]

这使得我们可以控制生成内容。例如,输入条件 \(y = \text{"数字5"}\),G 就专门生成数字 5 的图像。

Pix2Pix (2016)

Pix2Pix 将 cGAN 应用于成对的图像到图像翻译任务(如语义分割图 \(\to\) 真实照片、线稿 \(\to\) 彩色图)。

  • G 使用 U-Net 架构(带跳跃连接的编码器-解码器)
  • D 使用 PatchGAN:不是对整张图输出一个真/假判断,而是对图像的每个局部 patch 分别判断真假
  • 损失 = cGAN 损失 + L1 重建损失

CycleGAN (2017)

CycleGAN 解决了无配对数据的图像翻译问题(如马 \(\leftrightarrow\) 斑马、夏天 \(\leftrightarrow\) 冬天)。

核心思想是循环一致性损失(Cycle Consistency Loss)

\[ L_{cyc} = \mathbb{E}_{x}[\|F(G(x)) - x\|_1] + \mathbb{E}_{y}[\|G(F(y)) - y\|_1] \]

其中 G 把 A 域图像翻译到 B 域,F 把 B 域图像翻译回 A 域。循环一致性要求:先翻译过去再翻译回来,应该得到原图。

StyleGAN (2018-2021)

StyleGAN 系列(StyleGAN, StyleGAN2, StyleGAN3)在高质量人脸生成方面取得了突破性成果。

核心创新

  • 映射网络\(z \to w\),先将噪声通过 8 层 MLP 映射到中间潜在空间 \(\mathcal{W}\)
  • 自适应实例归一化 (AdaIN):通过 \(w\) 在每一层控制生成风格
  • 噪声注入:在每一层注入随机噪声,控制细节变化(如头发纹理、皮肤毛孔)
  • 渐进式训练(StyleGAN1)/ 跳跃连接(StyleGAN2)

StyleGAN2 生成的人脸图像达到了肉眼难以区分真假的水平(1024x1024 分辨率)。

Progressive GAN (2017)

Progressive GAN 提出渐进式增长训练

训练阶段:4×4 → 8×8 → 16×16 → 32×32 → ... → 1024×1024

从低分辨率开始训练,逐步增加层数和分辨率。这种方法使训练更稳定,因为:

  • 低分辨率阶段快速学习全局结构
  • 高分辨率阶段只需学习精细细节
  • 避免了一开始就在高维空间中优化的困难

GAN vs VAE vs Diffusion 对比

维度 GAN VAE Diffusion
建模方式 隐式密度(对抗训练) 显式密度(变分推断) 显式密度(去噪得分匹配)
生成质量 高(锐利、逼真) 中(常有模糊问题) 很高(细节丰富)
训练稳定性 差(需要精心调参) 好(稳定收敛) 好(简单的 MSE 损失)
模式覆盖 差(Mode Collapse) 好(优化似然) 很好(优化似然)
生成速度 快(单次前向传播) 快(单次前向传播) 慢(需要多步迭代去噪)
可控性 中(需要条件化机制) 好(有显式潜在空间) 好(Classifier-free Guidance)
似然计算 不可计算 可计算下界 (ELBO) 可计算下界
典型应用 图像超分辨率、风格迁移 表示学习、异常检测 文本到图像生成
代表模型 StyleGAN, BigGAN VQ-VAE, DALL-E 1 Stable Diffusion, DALL-E 2/3

一句话总结

GAN 生成快且锐利但训练困难;VAE 训练稳定但生成模糊;Diffusion 质量最高但生成最慢。


思考与讨论

GAN 为什么被 Diffusion 取代了?

从 2020 年 DDPM 开始,Diffusion 模型在图像生成领域逐步取代了 GAN 的统治地位。主要原因包括:

  1. 训练稳定性:Diffusion 模型的训练目标是简单的 MSE 去噪损失,不存在对抗训练中 G 和 D 需要平衡的问题。任何人都可以用标准的训练流程得到好结果,而 GAN 的训练需要大量 trick 和经验。

  2. 模式覆盖:Diffusion 模型优化的是对数似然(的下界),天然地倾向于覆盖数据分布的所有模式。GAN 的 Mode Collapse 问题始终没有被完美解决。

  3. 可扩展性:Diffusion 模型在大规模数据和大模型上的表现更好,Scale Up 的规律更清晰(类似于 LLM 的 Scaling Law)。

  4. 可控生成:Classifier-free Guidance 等技术让 Diffusion 模型的条件生成非常灵活,推动了 DALL-E 2、Stable Diffusion、Midjourney 等产品的成功。

GAN 在哪些领域仍然重要?

尽管在图像生成的"主赛道"上让位于 Diffusion,GAN 在以下场景中仍有不可替代的优势:

  • 实时应用:GAN 只需一次前向传播即可生成,速度远快于需要数十到数百步去噪的 Diffusion 模型。在视频游戏、实时风格迁移、移动端应用中 GAN 仍是首选。
  • 图像超分辨率:ESRGAN 等模型至今仍是超分辨率的主流方案。
  • 图像编辑与操控:GAN Inversion 技术可以将真实图像映射回潜在空间进行编辑(如改变年龄、表情、发型)。
  • 数据增强:用 GAN 生成合成数据来扩充训练集,在医学影像等数据稀缺的领域特别有价值。
  • Diffusion 模型的加速:将 Diffusion 模型蒸馏为一步生成器时,常常使用对抗训练(如 SDXL-Turbo 中的 Adversarial Diffusion Distillation)。

对抗训练思想的更广泛影响

GAN 提出的对抗训练范式远超出了图像生成的范畴,深刻影响了机器学习的多个领域:

  • 对抗样本与鲁棒性:对抗训练是提升模型鲁棒性的核心方法(Adversarial Training for Robustness)
  • 域适应(Domain Adaptation):通过对抗训练学习域不变特征(如 DANN)
  • 文本生成:SeqGAN 等将 GAN 思想引入离散序列生成(尽管效果有限)
  • 强化学习:GAIL(Generative Adversarial Imitation Learning)用对抗训练做模仿学习
  • 公平性:用对抗训练去除模型中的敏感属性信息
  • 隐私保护:对抗训练被用于差分隐私和联邦学习中

历史地位

GAN 可能不再是最优的图像生成方案,但它对深度学习领域的贡献是永久性的:它证明了隐式密度建模的可行性,开创了对抗训练的范式,启发了无数后续工作。正如 Goodfellow 本人所说,GAN 最重要的贡献不是某个具体的模型,而是一种全新的训练方法论。


参考文献

  1. Goodfellow, I., et al. (2014). Generative Adversarial Nets. NeurIPS.
  2. Radford, A., et al. (2015). Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks (DCGAN). ICLR.
  3. Arjovsky, M., et al. (2017). Wasserstein GAN. ICML.
  4. Gulrajani, I., et al. (2017). Improved Training of Wasserstein GANs (WGAN-GP). NeurIPS.
  5. Mirza, M. & Osindero, S. (2014). Conditional Generative Adversarial Nets. arXiv.
  6. Isola, P., et al. (2016). Image-to-Image Translation with Conditional Adversarial Networks (Pix2Pix). CVPR.
  7. Zhu, J.-Y., et al. (2017). Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks (CycleGAN). ICCV.
  8. Karras, T., et al. (2018). Progressive Growing of GANs. ICLR.
  9. Karras, T., et al. (2019). A Style-Based Generator Architecture for Generative Adversarial Networks (StyleGAN). CVPR.
  10. Karras, T., et al. (2020). Analyzing and Improving the Image Quality of StyleGAN (StyleGAN2). CVPR.

评论 #