GAN Notes
Image-to-Image Translation with Conditional Adversarial Networks
pix2pix: Code
- 生成器网络:UNet,有助于生成更好的图像细节
- 判别器网络:条件PatchGAN 70x70
- 目标函数函数:
- Conditional GAN Loss
- GAN Loss
- L1 Loss
- 优化目标
- 需要的数据量: 100~400张图片
- 训练参数设置
- 优化方法:Adam
- 学习率: 0.0002
- 动量参数: β 1 = 0.5 , β 2 = 0.999 \beta_1 = 0.5, \beta_2=0.999 β1=0.5,β2=0.999
- 不同 Loss 函数选择对结果的影响
- 一般情况下 L1+cGAN 结果最佳
- L1 Loss 只能使到整体上颜色和形状分布接近真实图像,高频细节会丢失,生成的图像比较模糊
- cGAN Loss 有助于恢复图像高频细节,但是也会产生一些不存在的结构
- 应用
- label -> image 根据语义标注图生成比较真实的图片
- edge -> image 根据图像边缘轮廓图像生成相应彩色图片
- gray -> colorful 对灰度图像上色
- Day -> Night 根据白天图像生成夜晚图像,文中展示的效果较差
- 缺点
- pix2pix 训练图像必须是一一对应的,输入图像与生成图像在边缘、轮廓和结构上是一样的,输入过多的细节可能会导致生成的图像颜色混乱
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
摘要: 图像到图像的迁移变换是计算机视觉和图形学中常见的问题,以前的方法多数使用配对的图像,输入图像和金标图像必须是对齐的。但是通常情况下配对的数据很少,本文的目的在于提供一种非配对图像的转换,也就是通过深度学习的方式得到一个映射 G : X → Y G: X \rightarrow Y G:X→Y, 也就是说 G ( X ) G(X) G(X) 得到的分布于 Y Y Y 是相同的。训练过程中,本文需要训练 G G G 的逆变换 F : Y → X F: Y \rightarrow X F:Y→X , 由此引入一种循环训练方式 F ( G ( X ) ≈ X F(G(X) \approx X F(G(X)≈X
图像到图像的风格迁移,可以看做是从一系列图像中提取某些特征,然后将这些特征转换到另外一种风格的图像。
-
基本原理
如下图(a) 所示,我们将训练2个生成器 G : X → Y G: X \rightarrow Y G:X→Y 和 F : Y → X F: Y \rightarrow X F:Y→X 分别完成图像域 X 到 Y 的转换和 Y 到 X 的转换。相应地,我们需要两个判别器 D X D_X DX 和 D Y D_Y DY ,分别促使 G ( X ) G(X) G(X) 得到的分布更加接近 Y Y Y 的分布以及 F ( Y ) F(Y) F(Y) 更近接近于 X X X 的分布。
-
公式
- 对抗 (Adversarial) Loss
- 循环一致性 (Cycle Consistency) Loss
- 目标函数
-
网络结构
生成器采用 Perceptual losses for real-time style transfer and super-resolution 中的网络结构,包括2个步长为2的卷积层、若干残差模块、2个步长为 1 2 \frac 12 21 的微步卷积 (fractionally strided convolutions ),其实就是转置卷积(nn.ConvTranspose2d)残差模块的数量依据图像分辨率而定,例如 128 × 128 128 \times 128 128×128 和 256 × 256 256 \times 256 256×256 图像分别有6个残差模块和9个残差模块。判别器都采用 70 × 70 70 \times 70 70×70 的 PatchGAN. -
训练方法
由于GAN Loss 中的 log \log log 运算会使训练不稳定,我们使用 least-squares loss,也就是对于 GAN loss L G A N ( G , D , X , Y ) \mathcal L_{GAN}(G, D, X, Y) LGAN(G,D,X,Y) ,在训练 G 时最小化目标函数为 E x ∼ p ( d a t a ( x ) ) [ D ( G ( x ) − 1 ) 2 ] \mathbb E_{x \sim p(data(x))} [D(G(x) - 1)^2] Ex∼p(data(x))[D(G(x)−1)2], 训练 D 时最小化目标函数为 E y ∼ p ( d a t a ( y ) ) [ ( D ( y ) − 1 ) 2 ] + E x ∼ p ( d a t a ( x ) ) [ D ( G ( x ) ) 2 ] \mathbb E_{y \sim p(data(y))} [(D(y) - 1)^2] + \mathbb E_{x \sim p(data(x))}[D(G(x))^2] Ey∼p(data(y))[(D(y)−1)2]+Ex∼p(data(x))[D(G(x))2]
训练过程中判别器的训练使用的是前50步生成的数据,而不是当前生成器生成的数据,使用 λ = 10 \lambda=10 λ=10 Aadm 优化器,Batch_size=1, lr=0.0002, 前100轮学习率不变,后100轮学习率线性下降
应用
- 图像风格迁移
- 物体形态变换
- 季节变换
- 图像增强