Pix2Pix-GAN阅读笔记

Summary

pix2pix-GAN是一个基于cGAN的完整“训练框架”,它能够使用成对的图片(A, B)进行训练,从而使得生成器实现A->B或B->A的映射。

Contribution

  • 证明条件生成对抗网络在各种问题上都能产生合理的结果
  • 提出一个足够取得良好结果的简单框架,并分析几种重要架构选择的影响

Related Work

这篇论文的前置知识是cGAN,cGAN即在普通的GAN基础上添加约束条件,使得生成器产生的输出不至于太自由、太离谱。思想很简单,添加一个变量y,计算公式改为条件概率,即y来约束生成器以及鉴别器。可以对比一下GAN和cGAN的Loss函数。

G A N : min ⁡ G max ⁡ D   V ( D , G ) = E x ∼ p d a t a ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] . GAN:\min\limits_G\max\limits_D\space V(D,G)= \mathbb{E}_{x\thicksim p_{data}(x)}[\log D(x)]+\mathbb{E}_{z\thicksim p_z(z)}[\log (1-D(G(z)))]. GAN:GminDmax V(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))].

c G A N : min ⁡ G max ⁡ D   V ( D , G ) = E x ∼ p d a t a ( x ) [ log ⁡ D ( x ∣ y ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ∣ y ) ) ) ] . cGAN:\min\limits_G\max\limits_D\space V(D,G)= \mathbb{E}_{x\thicksim p_{data}(x)}[\log D(x|y)]+\mathbb{E}_{z\thicksim p_z(z)}[\log (1-D(G(z|y)))]. cGAN:GminDmax V(D,G)=Expdata(x)[logD(xy)]+Ezpz(z)[log(1D(G(zy)))].

除此之外

  • 图像建模的结构化损失:GAN能够通过判断图片是否为真的形式,在不同要求下都能自动减少合理的损失
  • 结构方面,生成器采用了UNet,鉴别器采用了PatchGAN

Approach and Model Architecture

作者首先给出了cGAN训练的示意图

在这里插入图片描述

在生成器的结构方面,作者使用了UNet类似架构,UNet的特点主要是网络结构形状像一个"U",其不仅将输入图像下采样+上采样各5个维度使得其保留了图像的高级语义,还直接在同一大小的卷积输出之间添加跳连,使得输入图片也能够保留低维度的信息。

在这里插入图片描述
在鉴别器的结构方面,作者也使用了同一个思路,理想状态是鉴别器不但能考虑高维信息,也能考虑低维信息。高维信息作者对输出图片每N*N个grid判断该区域真假,低维信息作者使用了L1范式作为Loss约束(这个约束好像是加在生成器的Loss上的?),有证据表明在cGAN上增加L1约束能够取得更理想的效果。

在这里插入图片描述
只有L1约束会得到模糊的图,只有cGAN约束会得到清晰的图,但是存在着“伪像”,使用cGAN和L1共同约束的损失函数能够得到更合理的图片。值得一提的是,作者认为L1范式能够使得输出的图片颜色更浅,制约了cGAN输出的过于深色情况。

生成对抗网络训练会产生一个问题,生成器和鉴别器在同一时刻很难在一个Level上,很可能生成器水平比较差,但鉴别器已经超前了;也可能生成器已经产生较为真实的图片但鉴别器鉴别水平仍然不够。作者在该论文中采用的方法是,鉴别器每次更新时将Loss降低2倍。

最后确定使用的损失函数为
G ∗ = a r g min ⁡ D max ⁡ G L c G A N ( G , D ) + λ L L 1 ( G ) . G^* = arg \min\limits_D \max\limits_G \mathcal{L}_{cGAN}(G,D)+\lambda\mathcal{L}_{L1}(G). G=argDminGmaxLcGAN(G,D)+λLL1(G).

Experiments

为了证明cGAN生成普适性,作者做了如下实验:

  • 语义标签↔照片,在Cityscapes数据集上训练
  • 建筑标签→照片,在CMP Facades上接受培训
  • 地图↔航空照片,接受了从Google Maps抓取的数据的培训
  • BW→彩色照片
  • 边缘→照片
  • 草图→照片:在人为绘制的草图上测试边缘→照片模型
  • 白天→夜晚
  • 热敏→彩色照片
  • 像素丢失的照片→修复的照片

具体参照https://phillipi.github.io/pix2pix/

如何能确定图片的生成质量呢?作者提出了两种方法

  • 对于着色和照片生成的问题,作者在Amazon Mechanical Turk (AMT)提出问题让人们辨别真假
  • 对于合成的城市景象是否真实的问题,作者使用现成的检测系统(FCN)检测图片,观察是否能够将生成的图片某些建筑检测出来

对于生成器的结构,对比UNet是否添加跳连的结构,惊讶发现UNet的跳连起到了很关键的作用,而L1使得生成图更为真实
在这里插入图片描述
另一些实验表明L1+cGAN效果优于其余选择

在这里插入图片描述
在这里插入图片描述
前面提到了鉴别器判断并不是对整一张生成图进行真假判断,而是对N*N像素块进行判断,为了确定最好的N,作者进行了实验在这里插入图片描述
左边的图太注重细节而没顾上整体,而最右边的图在细节方面真实度不高,所以最后选择
PatchGAN参数为70*70,在这个尺寸上鉴别上能够使得G生成最为真实的图片。

得益于PatchGAN的小像素块判断真伪,该模型对不同大小的训练图片有普适性,作者在不同大小的图片上做了一个实验,在256*256大小图片上训练,在512*512大小图片上测试

在这里插入图片描述
最后在AMT上进行打分
在这里插入图片描述
另外还有ImageNet数据集灰度图上色实验

在这里插入图片描述
作者表示该实验中cGAN在前两张图有着不错的上色表现,但是在最后一个示例中,灰度及不饱和度出现了故障。

下一个实验使用cGAN在语义分割上做实验

在这里插入图片描述
在语义分割问题上,cGAN能较好划分出各个物体,这表明cGAN能够产生标签,但在这个具体问题上,L1显然表现更好。

网上社区一些网友的创作,有些需要对cGAN进行修改变动才能够产生这样的效果

在这里插入图片描述
一些有趣的例子

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

Code

Pytorch版本的代码主要参考了https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix#custom-model-and-dataset

示例中训练的数据集为Facade数据集,图片如下

在这里插入图片描述
左边部分为A,右边部分为B,这里是BtoA训练方式,辅助为B,生成为A。但是在作者的代码中,由于是BtoA模式,作者将其改成了左边为B,右边为A。

给出Loss定义以及迭代更新的代码,其中G的Loss为cGAN的loss+100*L1,D的Loss对于real和fake的BCEWithLogitsLoss。其中real_A作为G的输入,生成fake_B,然后利用fake_B、real_B跟real_A的组合训练D,用real_B、fake_B、real_A训练G。
在这里插入图片描述
总结了一下,训练鉴别器的过程:

在这里插入图片描述
训练生成器的过程:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据集建筑物数据集,文件包含训练集和测试集,主要用于图像翻译的模型训练,适合新手朋友们上手实操。供大家免费下载。数据集建筑物数据集,文件包含训练集和测试集,主要用于图像翻译的模型训练,适合新手朋友们上手实操。供大家免费下载。数据集建筑物数据集,文件包含训练集和测试集,主要用于图像翻译的模型训练,适合新手朋友们上手实操。供大家免费下载。数据集建筑物数据集,文件包含训练集和测试集,主要用于图像翻译的模型训练,适合新手朋友们上手实操。供大家免费下载。数据集建筑物数据集,文件包含训练集和测试集,主要用于图像翻译的模型训练,适合新手朋友们上手实操。供大家免费下载。数据集建筑物数据集,文件包含训练集和测试集,主要用于图像翻译的模型训练,适合新手朋友们上手实操。供大家免费下载。数据集建筑物数据集,文件包含训练集和测试集,主要用于图像翻译的模型训练,适合新手朋友们上手实操。供大家免费下载。数据集建筑物数据集,文件包含训练集和测试集,主要数据集建筑物数据集,文件包含训练集和测试集,主要用于图像翻译的模型训练,适合新手朋友们用于图像翻译的模型训练,适合新手朋友们上手实操。供大家免费下载。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值