论文阅读:pix2pix and CycleGAN

GAN Notes

Image-to-Image Translation with Conditional Adversarial Networks

pix2pix: Code

  1. 生成器网络:UNet,有助于生成更好的图像细节
  2. 判别器网络:条件PatchGAN 70x70
  3. 目标函数函数:
  • Conditional GAN Loss
    cGAN Loss
  • GAN Loss
    GAN Loss
  • L1 Loss
    L1 Loss
  • 优化目标
    object
  1. 需要的数据量: 100~400张图片
  2. 训练参数设置
    • 优化方法:Adam
    • 学习率: 0.0002
    • 动量参数: β 1 = 0.5 , β 2 = 0.999 \beta_1 = 0.5, \beta_2=0.999 β1=0.5,β2=0.999
  3. 不同 Loss 函数选择对结果的影响
    • 一般情况下 L1+cGAN 结果最佳
    • L1 Loss 只能使到整体上颜色和形状分布接近真实图像,高频细节会丢失,生成的图像比较模糊
    • cGAN Loss 有助于恢复图像高频细节,但是也会产生一些不存在的结构
  4. 应用
    • label -> image 根据语义标注图生成比较真实的图片
    • edge -> image 根据图像边缘轮廓图像生成相应彩色图片
    • gray -> colorful 对灰度图像上色
    • Day -> Night 根据白天图像生成夜晚图像,文中展示的效果较差
  5. 缺点
    • pix2pix 训练图像必须是一一对应的,输入图像与生成图像在边缘、轮廓和结构上是一样的,输入过多的细节可能会导致生成的图像颜色混乱

Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

摘要: 图像到图像的迁移变换是计算机视觉和图形学中常见的问题,以前的方法多数使用配对的图像,输入图像和金标图像必须是对齐的。但是通常情况下配对的数据很少,本文的目的在于提供一种非配对图像的转换,也就是通过深度学习的方式得到一个映射 G : X → Y G: X \rightarrow Y G:XY, 也就是说 G ( X ) G(X) G(X) 得到的分布于 Y Y Y 是相同的。训练过程中,本文需要训练 G G G 的逆变换 F : Y → X F: Y \rightarrow X F:YX , 由此引入一种循环训练方式 F ( G ( X ) ≈ X F(G(X) \approx X F(G(X)X

图像到图像的风格迁移,可以看做是从一系列图像中提取某些特征,然后将这些特征转换到另外一种风格的图像。

  1. 基本原理
    如下图(a) 所示,我们将训练2个生成器 G : X → Y G: X \rightarrow Y G:XY F : Y → X F: Y \rightarrow X F:YX 分别完成图像域 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 的分布。
    论文阅读:pix2pix and CycleGAN_第1张图片

  2. 公式

  • 对抗 (Adversarial) Loss
    论文阅读:pix2pix and CycleGAN_第2张图片
  • 循环一致性 (Cycle Consistency) Loss
    Cycle Consistency Loss
  • 目标函数
    论文阅读:pix2pix and CycleGAN_第3张图片
    ioptimization
  1. 网络结构
    生成器采用 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.

  2. 训练方法
    由于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] Exp(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] Eyp(data(y))[(D(y)1)2]+Exp(data(x))[D(G(x))2]

训练过程中判别器的训练使用的是前50步生成的数据,而不是当前生成器生成的数据,使用 λ = 10 \lambda=10 λ=10 Aadm 优化器,Batch_size=1, lr=0.0002, 前100轮学习率不变,后100轮学习率线性下降

应用

  • 图像风格迁移
  • 物体形态变换
  • 季节变换
  • 图像增强

你可能感兴趣的:(GAN)