GAN

GAN看的文章,需要的伙伴看过来

发布于 2019-06-11 19:34:36

一、UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS(深度卷积对抗生成网络(DCGAN))
参考博文:https://blog.csdn.net/stdcoutzyx/article/details/53872121

本文介绍的算法将有监督学习中的CNN和无监督学习中的GAN结合到了一起。

GAN无需特定的cost function的优势和学习过程可以学习到很好的特征表示,但是GAN训练起来非常不稳定,经常会使得生成器产生没有意义的输出。而论文的贡献就在于:

为CNN的网络拓扑结构设置了一系列的限制来使得它可以稳定的训练。
使用得到的特征表示来进行图像分类,得到比较好的效果来验证生成的图像特征表示的表达能力(提取特征+分类方法类似MLP)
对GAN学习到的filter进行了定性的分析。(每个fliter代表什么)
展示了生成的特征表示的向量计算特性。(向量之间相加减比如king-man+woman=Queen)
模型结构上需要做如下几点变化:

将pooling层convolutions替代,其中,在discriminator上用strided convolutions替代,在generator上用fractional-strided convolutions替代。
在generator和discriminator上都使用batchnorm。 (其实只有G用,D不用)
解决初始化差的问题
帮助梯度传播到每一层
防止generator把所有的样本都收敛到同一个点。
直接将BN应用到所有层会导致样本震荡和模型不稳定,通过在generator输出层和discriminator输入层不采用BN可以防止这种现象
移除全连接层
global pooling增加了模型的稳定性,但伤害了收敛速度。
在generator的除了输出层外的所有层使用ReLU,输出层采用tanh。
在discriminator的所有层上使用LeakyReLU。(G、D激活层不太一样)

二、On the Effects of Batch and Weight Normalization in Generative Adversarial Networks

普通的BN加速训练,但是使训练不稳定和损坏sample的质量。

引入weight normalization提高稳定性、有效性以及生成样本的质量。

有些任务BN好,但有些任务不太好,所以引入WN.加快速度,更加稳定,生成的音频质量好。

SN:https://blog.csdn.net/qq_33266320/article/details/83443499

WN跟sn谱归一也不清楚什么好,SN更好理解就是。SN有用在自注意力GAN文章上。

评估:算生成的样本和test平均距离。

三、Twin-GAN – Unpaired Cross-Domain Image Translation with Weight-Sharing GANs
参考:https://github.com/jerryli27/TwinGAN/blob/master/docs/blog/blog_CH.md

CycleGAN也有它的局限性。它对还原误差的要求使它不得不将原图中的所有信息都一一对应到翻译后的图片中。而在三次元到二次元的转换过程中,二次元和三次元的信息并不对称。比如三次元的人脸在细节方面明显多于二次元,而二次元的发色,瞳色又是三次元里不常见的。

三次元头像->编码器->高维向量->PGGAN生成器+三次元用Batch Norm参数->三次元头像
二次元头像->编码器->高维向量->PGGAN生成器+二次元用Batch Norm参数->二次元头像
三次元头像->编码器->高维向量->PGGAN生成器+二次元用Batch Norm参数->二次元头像
和Facebook的论文里提到的一样,让三次元和二次元头像共用一个编码器和一个生成器的主要目的是让神经网络能够认识到,虽然长的不太一样,二次元和三次元的图片所描绘的内容都是人脸。这对于二三次元的转换至关重要。而最终决定是二次元还是三次元的开关就在Batch Norm参数里。

损失函数方面,主要用了以下四个函数:(损失挺有用的)

三次元到三次元的还原损失函数(l1+GAN loss)
二次元到二次元的还原损失函数(l1+GAN loss)
三次元到二次元的GAN损失函数
三次元到二次元的循环损失函数(cycle consistency loss)。
Twin-GAN的功能不止于此。由于二三次元的图片共享同一个embedding(嵌入向量),我可以抽取图片的embedding用于最近邻检索(Nearest Neighbor Search),可以同时在二次元和三次元寻找与之最相似的图片。

四、Recycle-GAN: Unsupervised Video Retargeting
参考:http://www.eeworld.com.cn/mp/QbitAI/a51232.jspx

Recycle-GAN,是一只无监督学习的AI。

用不成对的二维图像数据,来训练视频重定向 (Video Retargeting) 并不容易:

一是,如果没有成对数据,那在视频变身的优化上,给的限制就不够,容易产生不良局部极小值 (Bad Local Minima) 而影响生成效果。

二是,只依靠二维图像的空间信息,要学习视频的风格就很困难。

针对这两个问题,CMU团队提出的方法,是利用时间信息 (Temporal Information) 来施加更多的限制,不良局部极小值的现象会减少。

另外,时间、空间信息的搭配食用,也能让AI更好地学到视频的风格特征。

1、时间信息使用提供更多的限制帮助更好的优化点。

2、时间空间联合帮助学习域特性。

损失上,除了普通的空间损失:

min max L g (G Y , D Y ) =log D Y (y s ) +log(1 − D Y (G Y (x t ))),

Cycle loss: Zhu et al. [53] use cycle consistency [51] to define a reconstruction
loss when the pairs are not available. Popularly known as Cycle-GAN (Fig. 3-b),
the objective can be written as:
L c (G X , G Y ) =||x t − G X (G Y (x t ))|| 2 .

还有时间上的:

L τ (P X ) =||x t+1 − P X (x 1:t )|| 2 ,P为时序预测下一帧

Recycle loss: We use this temporal prediction model to define a new cycle loss
across domains and time (Fig. 3-c) which we refer as a recycle loss:
X
L r (G X , G Y , P Y ) =||x t+1 − G X (P Y (G Y (x 1:t )))|| 2 ,

Recycle-GAN: We now combine the recurrent loss, recycle loss, and adversarial
loss into our final Recycle-GAN formulation:
min max L rg (G, P, D) = L g (G X , D X ) + L g (G Y , D Y )+G,PDλ rx L r (G X , G Y , P Y ) + λ ry L r (G Y , G X , P X ) + λ τ x L τ (P X ) + λ τ y L τ (P Y ).

五、InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets
参考:https://www.sohu.com/a/194461763_297710

参考:https://blog.csdn.net/wspba/article/details/54808833

首先想到的方法就是生成模型建模的方法:挑出几个隐变量,强制指定它们用来表示这些特性的属性,例如数字名称和方向。这样看上去似乎没有解决问题,但这种方法需要提前知道可以建模的隐变量内容,还要为这些隐变量设置好独立的分布假设,实际上有些麻烦又不够灵活。本节的主角——InfoGAN,将从信息论角度,尝试解决GAN隐变量可解释性问题。

介绍算法前要简单回顾机器学习中的信息论基本知识。第2章已经介绍了熵和“惊喜度”这些概念,熵衡量了一个随机变量带来的“惊喜度”。本节要介绍的概念叫做互信息,它衡量了随机变量之间的关联关系。假设随机事件A的结果已经知道,现在要猜测某个事件B的结果,那么知道A的取值对猜测B有多大帮助?这就是互信息要表达的东西。

2014年,Ian J. Goodfellow提出了生成对抗网络:Generative Adversarial Networks,通过generator和discriminator的对抗学习,最终可以得到一个与real data分布一致的fake data,但是由于generator的输入z是一个连续的噪声信号,并且没有任何约束,导致GAN无法利用这个z,并将z的具体维度与数据的语义特征对应起来,并不是一个Interpretable(可解释) Representation。

而这正好是InfoGAN的出发点,它试图利用z,寻找一个可解释的表达,于是它将z进行了拆解,一是不可压缩的噪声z,二是可解释的 隐变量c,称作为latent code,而我们希望通过约束c与生成数据之间的关系,可以使得c里面包含有对数据的可解释的信息,如对MNIST数据,c可以分为categorical latent code代 来表数字种类信息(0~9),以及continuous latent code来表示倾斜度、笔画粗细等等。

为了引入c,作者利用互信息来对c进行约束,这是因为如果c对于生成数据G(z,c)具有可解释性,那么c和G(z,c)应该具有高度相关性,即互信息大,而如果是无约束的话,那么它们之间没有特定的关系,即互信息接近于0。因此我们希望c与G(z,c)的互信息I(c;G(z,c))越大越好,因此,模型的目标函数也变为:

但是在I(c;G(z,c))的计算中,真实的P(c|x)并不清楚,因此在具体的优化过程中,作者采用了变分推断的思想,引入了变分分布Q(c|x)来逼近P(c|x),它是基于最优互信息下界的轮流迭代实现最终的求解,于是InfoGAN的目标函数变为:

在具体的实现中,Q和D共用了所有的卷积层,并只在最后增加了一个全连接层来输出Q(c|x),因此InfoGAN并没有在原始的GAN上增加多少的计算量。

六、Beyond Face Rotation: Global and Local Perception GAN for Photorealistic and Identity Preserving Frontal View Synthesis
以下内容是复制的,来源博文:https://blog.csdn.net/u011961856/article/details/77920443?locationNum=6&fps=1

文章对GAN网络进行改进,生成网络包含两个网络,一个用于局部特征生成,另一个用于全局特征生成,网络结构如下:

如图所示,利用一个Local Pathway网络学习人脸的局部特征,如眼睛,,嘴巴,鼻子,网络输入为侧脸图像的四个局部块,这四个局部块分别为包含左,右眼睛,嘴巴,鼻子的块,作为Local Pathway网络的输入,输出为正面的眼睛,,嘴巴,鼻子.

Landmark Located Patch Network

四个局部块提取方法为,利用人脸特征点,分别求左,右眼睛,嘴巴,鼻子的中心,并以其中心,截取图像块,这样对于每张输入图像,就得到四个图像块Gθli,i∈0,1,2,3Gθil,i∈0,1,2,3.将四个块分别输入local pathway中,输出为正面的块特征,即正面的眼睛,,嘴巴,鼻子.将输出块融合,得到一个人脸五官图像.

利用一个Global Pathway网络学习人脸的全局特征,如人脸轮廓等底层信息,网络输入为整张侧脸图像,输出为与输入大小相同的图像,最后将局部和全局特征结合,得到生成图像(正脸图像).

之后将生成图像输入判别网络(Discriminator Network).

生成网络
生成网络损失函数为,在原有交叉损失熵LcrossentropyLcrossentropy的基础上,加上合成损失函数LsynLsyn:

损失函数LsynLsyn由四个损失函数组成,分别为,Pixel-wise Loss(像素级损失函数),Symmetry Loss(对称损失函数),判别网络损失函数,身份保持损失函数.下面分别介绍几种损失函数的构造.

合成损失函数LsynLsyn
Pixel-wise Loss(像素级损失函数)
生成的图像IpredIpred与输入图像IgtIgt要尽量相似,采用L1 loss,

Symmetry Loss(对称损失函数)
Symmetry Loss的目的是使得生成图像左右对称,即我们认为生成的人脸左右是对称的,

判别网络
判别网络用于区分输入图像是真实的正脸图像IFIF还是合成的正脸图像GθG(IP)GθG(IP),损失函数为:

式中,IPIP表示输入侧脸图像,GθG(IP)GθG(IP)为生成图像.

Identity Preserving Loss
在构造损失函数的时候,引入身份信息.为了使合成的图像与输入图像为同一个人,使用light-CNN用于身份识别,

light CNN网络结构:

将真实正脸图像,生成图像分别输入Light CNN中,我们希望真实图像,与生成图像的Light CNN的最后2层的输出,尽量相似,即构造身份保持损失函数:

式中,i表示Light CNN的倒数i层,w,h为Light CNN的倒数i层的输出feature map大小.

Light CNN可以用大量的身份分类训练数据训练好,这样Light CNN就可以识别身份信息.

综上所述,总的损失函数为:

网络参数
global pathway:

local pathway:

w×hw×h为提取的眼睛,,嘴巴,鼻子块大小.local pathway网络的输入,输出为w×h×3w×h×3的图像块.

在global pathway,local pathway的卷积层中,都采用residual block.

0 评论

发布
问题