3. Pix2Pix 阅读笔记

57 阅读3分钟

image.png

Pix2Pix:基于条件生成对抗网络的图像转译

1. 声明

1.1 Gan网路

Generative Adversarial Networks(GANs)-生成对抗网络:学习一个损失,试图分类输出图像是真实的还是假的,同时训练一个生成模型来最小化这种损失。

G&C.png

  • 生成器:从随机噪声中生成近似于真实数据的假数据。

  • 判别器:判断一个数据样本是来自真实数据集还是由生成器生成的,并将判别结果(例如 真数据与假数据相像的程度),传递给生成器。生成器会根据这个分数继续训练出更加逼真的假数据,再送给判别器鉴别。

这个过程就非常像博弈、对抗,判别器训练的越强大,那么反馈给生成器的信息就越更严格,生成器就训练自己生成更加逼真的赝品来混淆判别器。如此往复,我们就能收获一个非常逼真的赝品。

  • 什么时候停止:判别器是领先于生成器的,当判别器的 loss 不变化时,或者判别器对假数据判为真的概率达到了0.5及以上时,可以停止训练 Gan 网络。

1.2 max min

What does arg min max mean?

argminGmaxDLcGAN(G,D)argmin_G max_D L_{cGAN}(G,D)

在上面的公式我们可以理解为,首先训练出能够使 LcGANL_cGAN 最大化的分类器 DD,然后在这个域下(固定DD),训练出使 LcGANL_cGAN 最小化的生成器 GG

f844590243e76b3a2c3bd41fc071fc67.png

2. 损失函数

image.png

xx:真实图像的配对图像,也是真实的图像

yy:真实图像

xxyy 是像素级别一一配对的,例如:

image.png

图1. 右边是真实图像 y,左边是真实图像 y 分割出来的图像 x

image.png

图2. 右边是真实图像 y,左边是真实图像 y 的线稿 x

D(x,y)D(x,y):输入图像对(x,y)(x,y),判断这对图像是否是真实匹配的一对

G(x,z)G(x,z):生成器 GG 接收输入图像 xx(如灰度图、线稿图)和随机噪声 zz,生成与输入图像内容对应的目标图像 G(x,z)G(x,z)(如彩色图、照片)

step 1. 我们希望训练出很强的分类器 DD。将一对图像逐像素比较,Ex,yE_{x,y} 中,分类器 DD 判断 yyxx 相像的概率越大越好;Ex,zE_{x,z} 中,分类器 DD 判断 G(x,z)G(x,z)xx 相像的概率越小越好,1D(G(x,z))1-D(G(x,z)) 越大越好。这时 LcGANL_{cGAN} 越大越好, 因此我们训练 DD 以最大化损失- maxLcGANmax L_{cGAN}

step 2. 我们希望在强的分类器 DD 给出的信息下(即 maxLcGANmax L_{cGAN} 下),训练出强的生成器 GG,误导分类器 DD 判断 G(x,z)G(x,z)xx 相像的概率越大越好,1D(G(x,z))1-D(G(x,z)) 越小越好。这时 LcGANL_{cGAN} 越小越好,因此我们希望训练 GG 以最小化损失-minLcGANmin L_{cGAN}。这会使 真图 xx 和生成器合成的假图 G(x,z)G(x,z) 越来越相近。

step 3. 由于假图 G(x,z)G(x,z) 是由 xx 生成,同时我们希望假图 G(x,z)G(x,z)yy 也相像。

image.png

3. 最终的目标函数

image.png

为什么是条件对抗网络呢?

xx 就是条件,过去无条件就是 GGDD 都不添加添加 xx

  1. 生成器 GG 生成的假图 G(x,z)G(x,z) 不仅来自于噪声 zz,还有输入 xx
  2. 判别器 DD 对输入 xx 和 Ground Truth yy 都进行了判断;判别器 DD 对输入 xx 和 假图 G(x,z)G(x,z) 都进行了判断