论文学习记录:PROGRESSIVE GROWING OF GANS

两盒软妹~` 提交于 2020-10-06 09:32:12

论文链接:https://arxiv.org/pdf/1710.10196.pdf


前言

这是一种针对GANs的训练优化方法,从低分辨率图像开始,通过向网络添加层来逐步提高分辨率,如图1。这种递增的特性允许训练首先发现图像分布的大尺度结构,然后将注意力转移到越来越细的尺度细节上,而不必同时学习所有的尺度。
在这里插入图片描述图1: 初始训练时,生成器(G)和鉴别器(D)的空间分辨率都很低,即4x4像素。随着训练的进行,我们逐渐在G和D上增加层,从而提高了生成图像的空间分辨率。在整个过程中,所有现有层都是可训练的。这里N x N是指在N x N空间分辨率下的卷积层。这允许在高分辨率下稳定的拟合,也能够极大地加快训练速度。右边展示了使用渐进式增长生成的6个1024 x 1024像素示例图像。


我们使用生成器和鉴别器网络,它们彼此镜像,同步发展。在整个训练过程中,两个网络中的所有现有层在训练阶段都是可训练的。当新层被添加到网络中时,我们平滑地淡出现有网络,如图2所示,这避免了对已经训练良好的小分辨率层的突然冲击。
在这里插入图片描述图2:当加倍生成器(G)和鉴别器(D)的分辨率时,我们“平滑”地添加新图层。该例子说明了从16×16图像 ( a ) (a) (a)到32×32图像 ( c ) (c) (c)的转换过程。在转换 ( b ) (b) (b)过程中,我们将操作在更高分辨率上的层类似残差块一样处理,其权重 a a a从0到1线性增加。这里 2 x 2x 2x 0.5 x 0.5x 0.5x分别表示使用最邻近邻滤波和平均池化将图像分辨率加倍和减半。 t o R G B toRGB toRGB表示将特征向量投影到RGB颜色层, f r o m R G B fromRGB fromRGB做相反操作; 都使用1 x 1卷积。在训练鉴别器时,我们输入经过缩小的真实图像,以匹配当前网络的分辨率。在分辨率转换期间,类似于生成器输出组合两种分辨率的方式,我们在真实图像的两种分辨率之间插入。


渐进式训练有几个好处。
在早期,由于类别信息和模式较少,小图像的生成实质上更稳定(Odena et al.,2017):通过一点一点地提高分辨率,通过重复一个简化问题,而非直接解决从隐向量直接找到1024 2 ^2 2的图像。实际上,它稳定了训练,使我们能够使用WGAN-GP或者LSGANs (Gulrajani et al., 2017)损失可靠地合成百万像素级的图像 (Mao et al., 2016b)。

减少了训练时间:随着GANs的逐渐增长,大多数迭代过程都是在较低的分辨率下完成的,根据最终输出的分辨率,一般可以快2-6倍地获得相近结果质量。

逐步构建GANs的想法与Wang等人(2017)的工作有关,他们使用多种鉴别器对不同的空间分辨率进行操作。Durugkar等(2016)同时使用一个生成器和多个鉴别器进行工作,而Ghosh等(2017)使用多个生成器和一个鉴别器来做相反model工作。分级GANs (Denton. 等,2015; Huang等,2016; Zhang等,2017)为一个图像金字塔的每一层定义一个生成器和鉴别器。这些方法建立在与我们的工作相同的观察基础上——从隐变量到高分辨率图像的复杂映射通过逐步学习会更加容易——但关键的区别在于我们只着眼于单个GAN,而非它们的广义结构体系。与早期自适应增长网络的研究相比,如GNG(Fritzke, 1995)和NeuroEvolution of Augmenting Topologies (NEAT)(Stanley & Mikkulainen, 2002),它们无节制地增加网络,而我们只是逐步引入预置的层。在此意义上,我们的方法类似于自动编码器的分层训练(Bengio等人,2007)。

正文部分将描述一些tricks。



以下是本篇文章正文内容


一、基于 ‘批标准差’ 增加多样性(INCREASING VARIATION USING MINIBATCH STANDARD DEVIATION)

由于GAN网络倾向于学习数据集的子分部,由此2016年Salimans提出‘minibatch discrimination’即‘批判别’作为解决方案。它们不仅从单个图像中更是在整个minibatch中计算特征统计数据,从而激励生成图像和训练图像的minibatch显示类似的统计数据或分布。

这是通过在鉴别器的末尾添加一个minibatch层来实现的,该层将学习一个大型张量,该张量将输入量激活并映射到一组统计数组中。在一个minibatch中,为每个示例生成一组单独的统计信息组,并将其拼接到层的输出,以便鉴别器可以在内部使用统计信息。我们大大简化了这种方法,同时也改进了多样性。

在简化方案中既没有可学习参数也没有新的超参数。我们首先计算每个minibatch空间位置上每个特征图的标准差。然后,我们将这些估计值平均到所有特征图和空间位置,得到单一值。我们复制扩张该值,将其连接到所有空间位置,并覆盖整个minibatch,从而产生一个额外的(常量)特征图。计算方法简述如下:

   input:[N,H,W,fmaps];获取批大小s=nhwf.shape;
   (1) 先计算N个特征图的标准差得到特征图fmap1:[1,H,W,fmaps]
   (2) 对fmap1求均值,得到值M1:[1,1,1,1]
   (3) 复制扩张M1得到N个特征图fmap2:[N,H,W,1]
   (4) 将fmap2添加至每个样本的特征图中

理论上,这一层可以插入到鉴别器的任何地方,但是我们发现最好是在接近微端插入。

二、归一化处理生成器和鉴别器(NORMALIZATION IN GENERATOR AND DISCRIMINATOR)

由于两种网络之间的不健康竞争,GANs倾向于信号强度的升级。GANs的实际需要是限制信号的大小和竞争。我们使用一种方法,它包含了两个成分,而这两个成分都不包含可学习参数。

PGGAN使用两种不同的方式来限制梯度和不健康博弈,而且方法均采用非训练的处理方式.

1. 平衡学习率(EQUALIZED LEARNING RATE)

使用简单的 N ( 0 , 1 ) N(0,1) N(0,1)初始化,然后在运行时显式地缩放权重。详细解释就是:Initialization权重后设置 W i = W i / c W_i = W_i /c Wi=Wi/c,其中 W i W_i Wi是权重, c c c是He的初始化方法的每层归一化常数(He,2015)。

动态地进行而非在初始化做有些许好处,与常用的自适应随机梯度下降方法(如RMSProp (Tieleman & Hinton, 2012)和Adam (Kingma & Ba, 2015))中的尺度不变性有关。这些方法通过预估的标准差对梯度更新进行标准化,从而使更新不依赖于参数的尺度。如果某些参数的动态范围比其他参数大,则需要更长的时间来调整。初始化导致的结果会使学习率过大或过小。我们的方法确保了动态范围,因此学习速度对所有权值而言是相同的。

He的初始化方法能够确保网络初始化的时候,随机初始化的参数不会大幅度地改变输入信号的强度。然而PGGAN中不仅限初始状态scale而是实时scale,其中He公式如下:
在这里插入图片描述

2. 生成器的像素归一化(PIXELWISE FEATURE VECTOR NORMALIZATION IN GENERATOR)

为了避免由于竞争导致生成器和鉴别器的大小交替失控的情况(生成器的梯度崩溃),我们在每个卷积层之后将生成器中每个像素的特征向量归一化为单位长度。我们使用一种变体的“局部响应归一化”(Krizhevsky,2012)来实现这一点。公式如下:
b x , y = a x , y 1 N ∑ j = 0 N − 1 ( a x , y j ) 2 + ϵ b_{x,y}=\frac{a_{x,y}}{\sqrt{\frac{1}{N}\sum_{j=0}^{N-1}(a_{x,y}^j)^2+\epsilon}} bx,y=N1j=0N1(ax,yj)2+ϵ ax,y其中: ϵ = 1 0 − 8 \epsilon=10^{-8} ϵ=108, N N N是feature map的个数, b x , y b_{x,y} bx,y a x , y a_{x,y} ax,y则分别是像素 ( x , y ) (x,y) (x,y)中的初始和归一化特征向量。

Pixel norm(像素规范),它是local response normalization的变种。Pixel norm沿着channel维度做归一化,这样归一化的一个好处在于,feature map的每个位置都具有单位长度。这个归一化策略与作者设计的Generator输出有较大关系,Generator的输出层并没有Tanh或者Sigmoid激活函数。


三、构造渐增型网络(PROGRESSIVE NETWORK)

在递增的训练阶段,生成器和判别器的型号也是在逐步拓展的,比如训练128x128图像,我们从4x4开始训练,训练阶段有:

stage 1 4x4 稳定 level2-net
stage 2 8x8 过渡 level3-net
stage 3 8x8 稳定 level3-net
stage 4 16x16 过渡 level4-net
stage 5 16x16 稳定 level4-net
stage 6 32x32 过渡 level5-net
stage 7 32x32 稳定 level5-net
stage 8 64x64 过渡 level6-net
stage 9 64x64 稳定 level6-net
stage 10 128x128 过渡 level7-net
stage 11 128x128 稳定 level7-net









生成器和鉴别器的网络架构主要由复制的3层块组成,我们在训练过程中逐一引入。生成器的最后一个Conv 1 x 1层对应于图2中的toRGB,鉴别器的第一个Conv 1 x 1层对应于fromRGB。我们从4×4分辨率开始训练网络,直到鉴别器已经处理了规定数目的真实图像。然后在两个阶段交替进行: 在同数量图像组中在第一个3层块中进行图像淡入处理,为这些图像中定网络,在接下来的3层块中再进行淡入处理,以此类推。

我们的隐向量对应于512维超球面上的随机点,并且我们在 [ − 1 , 1 ] [-1,1] [1,1]中表示训练和生成的图像。除了最后一层使用线性激活之外,我们在两个网络的所有层中都使用 leakiness为0.2的leaky ReLU。在GANs的两种网络中不使用批处理归一化、层归一化或权值归一化,但我们在生成器中每个Conv 3 x 3层之后对特征向量进行像素归一化,如2.2节所述。我们根据带有单位方差的正态分布将所有的权值初始化,并将偏差参数初始化为0。在运行时,使用特定于层的常数来缩放权重,如2.1节所述。我们将跨小批(cross-minibatch)标准偏差作为4 x 4分辨率的附加特征图加入鉴别器的末端,如第1节所述。

1. 上采样(UPSAMPLE)和下采样(DOWNSAMPLE)

论文中上采样由近邻插值方法,下采样由平均池化方法实现。
同时在卷积过程中,考虑到deconv会让生成模型遭受checkerboard效应,PGGAN移除了deconv 方式,改用了conv + upsample。
以下论文给出的生成器和判别器中的卷积块:
生成器卷积块:
在这里插入图片描述
判别器卷积块:
在这里插入图片描述





2. 设计不同level的生成器和判别器 (level = log 2 _2 2(res), res:当前分辨率)

GAN网络从最低分辨率4x4慢慢向最高分辨率1024x1024学习,其中G&D网络也是逐阶段递增的。 以生成器为例,描述生成器的不同阶段的搭建方式:

(1)建立level=2的初始卷积层

在这里插入图片描述如图构造了一个CONV4x4+CONV3x3的二级初始结构。

(2)建立拓扑卷积层

在这里插入图片描述网络拓扑结构如上图,通过卷积块拼接成更高级网络,其中每个卷积块的特征图数量是指定的,PGGAN在论文里指定为:
feats_map_num = [512,512,512,512,256,128,64,32,16]

(3)生成器输出(整合特征图:toRGB)

经过多层卷积之后,我们获得了特征图,输出端则需要将这些特征图整合为3通道的RGB图像,具体而言就是要构造一个toRGB函数,并考虑特征图整合过程中的过渡阶段。


四、训练配置(TRAINING CONFIGURATION)

1. Adam算法

在训练网络时采用Adam优化算法 (Kingma & Ba, 2015) :
在这里插入图片描述从while循环往下看:
第一行是更新step,训练集采样,
第二行是计算梯度,
第三行计算一阶矩的估计,即mean均值
第四行计算二阶距的估计,即variance,是二阶距的一种。
第五、六行则是对mean和var进行校正,因为mean和var的初始值为0,所以它们会向0偏置,这样处理后会减少这种偏置影响。
第七行梯度下降。 ϵ \epsilon ϵ后的梯度是用一阶距和二阶距估计的。






由上图算法显示,Adam算法可描述为两种随机梯度下降扩展式的集合,即:

适应性梯度算法(AdaGrad)为每一个参数保留一个学习率以提升在稀疏梯度(即自然语言和计算机视觉问题)上的性能。

均方根传播(RMSProp)基于权重梯度最近量级的均值为每一个参数适应性地保留学习率。这意味着算法在非稳态和在线问题上有很有优秀的性能。

按照吴恩达博士的理论分析,使用Adam算法,可以方便设置 ϵ \epsilon ϵ的同时,能够起到天然退火(annealing)的效果。

论文中设置步长0.001,一阶矩估计的指数衰减率0.9,二阶矩估计的指数衰减率0.99,分辨率10E-8。

2. mini_batch设置

为了节省内存预算,在分辨率较大( > = 12 8 2 >=128^2 >=1282)的情况下逐次降低minibatch size,比如:
4 2 = 12 8 2 ∽ s i z e = 16 4^2=128^2\backsim size=16 42=1282size=16
25 6 2 ∽ s i z e = 14 256^2\backsim size=14 2562size=14
51 2 2 ∽ s i z e = 6 512^2\backsim size=6 5122size=6
102 4 2 ∽ s i z e = 3 1024^2\backsim size=3 10242size=3



3. Cost Function WGAN-GP

论文中使用了WGAN-GP loss(基于WGAN的改进函数模型,加入gradient penalty——一种联系了阈值K和原距离函数的loss function,它实现了将参数与限制联系起来达到真实的Lipschitz限制条件。),在此基础上进行了进一步的改进,首先设置了 n c r i t i c = 1 n_{critic}=1 ncritic=1,在每批样本进行了生成器与鉴别器的交替训练。此外,为了解决鉴别器的零漂问题,将loss修正入如下:
L ′ = L + ϵ d r i f t E x ∈ P r [ D ( x ) 2 ] ,    ϵ d r i f t = 1 L'=L+\epsilon_{drift}E_{x\in P_r}[D(x)^2], \ \ \epsilon_{drift}=1 L=L+ϵdriftExPr[D(x)2],  ϵdrift=1


五、生成结果的质量评价 – 多尺度统计相似度( MULTI-SCALE STATISTICAL SIMILARITY)

总体思想:生成器可以基于所有尺度,产生局部图像结构和训练集是相似的样例。通过收集和评估一些指示性指标,可以对结果图像进行一些比较可信的评价。

具体策略:从 1 6 2 16^2 162像素开始学习生成图像和目标图像的Laplacian金字塔(Burt&Adelson,1987),并通过它表示局部图片匹配分布的多尺度统计相似性,其中单个拉普拉斯金字塔等级对应于一个特定的空间频带。随机采样特定数目的结果图像,并从拉普拉斯Laplacian金字塔的每一级中提取描述符。在论文中每个描述符都是具有3个颜色通道的 7 × 7 7\times7 7×7的相邻像素点,记为 x ∈ R 147 x\in R^{147} xR147。根据训练集和生成集中的 l l l级的patch匹配分别求得每个颜色通道的均值和标准差,然后通过计算它们的SWD(sliced Wasserstein distance)值来评估统计相似性。


总结

PGGAN在生成高分辨率图像上具有着相当杰出的能力,而它在人脸图像生成上所展示的优良表现,是否说明它在数据扩展和场景生成领域同样能够提高其效能?这里可以多做一些尝试和研究。


参考:

https://blog.csdn.net/liujunru2013/article/details/78545882

https://blog.csdn.net/weixin_41024483/article/details/83116856

https://blog.csdn.net/u013412904/article/details/79045473

https://blog.csdn.net/u013139259/article/details/78885815

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!