参见:patchGAN-patch判别器的理解和多种写法(tensorflow)
https://github.com/ChengBinJin/V-GAN-tensorflow
【论文】GAN图像转换之从pix2pix到cycle GAN
该节分享两篇使用GAN的方法来进行图像转换方面的文章,分别是pix2pix GAN 和 Cycle GAN,两篇文章基本上是相同的作者发表的递进式系列,文章不是最新,但也不算旧,出来半年多点,算是比较早的使用GAN的方法进行图像转换的文章吧,该部分将详细解读其实现过程。
图像转换或者图像的风格转换,顾名思义,是指把一副图像A按照另一幅 图像B的模式/风格进行转换的一个操作,例如 “白天->黑夜”,“晴天->雨天”等等;
1. 一些方法
在深度学习的方法广泛应用以后,使用深度学习方法比较早做这件事的就是使用CNN框架来做的,也就是2016cvpr的一篇文章“Image style transfer using convolutional neural networks”基于深度卷积神经网络的方法。当时出来的时候也比较火,也有一些方法在此类方法上的改进。
随着生成对抗网络(GAN)这种在图像生成上具有天生强大能力的网络结构的出现,使用GAN方法做图像生成又成为了一个比较流行的方法。列举几个截止到目前使用GAN为基础的方法:
pix2pix GAN (1611)
CycleGAN (1703)
DiscoGAN (1703)
PAN( Perceptual Adversarial Networks)感知GAN (1706)
StarGAN (1711)
这些方法的最终效果上可能都是为了进行图像转换,实现的形式不同而已。包括最近出来的StarGAN。
先简单看下各类方法一个效果:
基于深度卷积神经网络的方法
..................
2. 关于GAN与cGAN基础理论
研究基于GAN的图像转换方法首先需要对GAN的基本原理有一定了解,关于GAN的原理部分可以参考以前的一篇博客:
这里简略说下,GAN我们知道,其思想就是一个二人零和博弈思想,由两个部分构成:生成器G + 判别器D,其中生成器就是生成真实的假样本;
判别器就是用来判别样本的真假;一般的GAN可以用下图表示:
图像的patch实验
这篇文章中另一个小的结构点是实验了PatchGAN的方式,也就是对于生成器或者判别器,不是以整个图像整个图像的当做输入,而是以小的patch来进行的。把一副图像划分为N*N个patch后,对于每一块进行上述的那个操作。可以发现当N=1的时候,相当于逐像素进行了,当N=256(图像大小为256的话),就是一幅图像一幅图像的操作。当然文章的实验发现当N=70的时候,效果最好。
其实当N是某一个固定块的一个最大的好处是,可以由小的图像生成大的图像,因为反正你都是对块进行操作的。比如你的原始图像都是256*256的,每70*70一个块进行的。训练的模型,假如有一个1000*1000的图像需要转换,是不是也可以转换,只需要把1000转成多个70的块,每个块单独转换即可。