2018值得一看的GAN论文回顾


640?wx_fmt=png


我很高兴今年参加了一个研究项目,这要求我必须熟悉大量用于计算机视觉方面的深度学习领域的资料。我对过去两、三年内取得的进展感到惊讶,这真的非常令人兴奋和鼓舞,所有不同的子领域,如图像修复、对抗性样本、超分辨率或是三维重建,都大大得益于近期的发展。然而,有一种神经网络,它受到了大量的宣传和炒作 — 生成性对抗网络(Generative Adversarial Networks,GANs)。我也认为这种模型是非常吸引人的,并且我也一直在寻找一些GAN的新思路。


Reddit网站上讨论区的启发,我决定快速地浏览一下2018年关于GAN最有趣的文章。这份名单非常的主观 — 我选择的研究论文不仅是最高水平的,而且也都非常的有趣。


1.GAN解析:可视化和理解生成性对抗网络 — 考虑到GAN的大肆宣传,很明显这项技术迟早会被商业化应用。然而,因为我们对其内部机制了解的不多,所以我认为要生产一个可靠的产品仍然很困难。不过这项工作仍然向未来迈出了巨大的一步,在未来我们能够真正控制GAN。因此,一定要看看他们伟大的交互演示,结果是令人震惊的;


2.一种用于生成性对抗网络的基于生成器体系结构 – NVIDIA(英伟达)的研究团队会定期地提出一些具有开创性的概念(2018年的关于图像修复的论文,近期的用神经网络进行图形绘制的演示)。这篇论文也不例外,加上显示结果的视频就更有吸引力了;


3.进化生成性对抗网络 — 这是一个真正简单易懂的文章。进化算法和GAN一起 — 这肯定很有趣;


4.一种用于生成式对抗网络的基于生成器体系结构的方式,这是NVIDIA的一篇新论文,一个对于GAN(StyleGAN)的基于样式的生成器体系结构,提出了一个新的模型来应对这个挑战。


以下将进行详细介绍:

GAN解析: 可视化和理解生成性对抗网络(GAN Dissection: Visualizing andUnderstanding Generative Adversarial Networks)


查看链接:

https://arxiv.org/pdf/1811.10597.pdf


详解


该论文已于2018年11月26日提交。作者以交互式演示的方式创建了一个非常不错的项目网站。


主要思想:


GAN无疑证明了深度神经网络的强大。机器学习生成令人震惊的、高分辨率图像的方式是非常美妙的,就仿佛它像我们一样了解这个世界。但是,和其它的那些出色的统计模型一样,GAN最大的缺陷是缺乏可解释性。这项研究为理解GAN迈出了非常重要的一步。它允许我们在生成器中找到“负责”生成某些属于class c的对象单元。作者们声称,我们可以检查生成器的一个层,并找到导致在生成图像中形成c对象的单元子集。作者们通过两个步骤:解剖和干预,为每个类寻找一组“因果”单元。另外,这可能是第一项工作,为了解GAN的内部机制提供了系统的分析。


方法:


生成器G可以被看作是从潜在的向量z到一个生成的图像x=G(z)的映射。我们的目标是理解参数r,一种内部的表示,它是生成器G的特定层的输出。


x=G(z)=f(r)


关于c类的对象,我们想仔细看下参数r。我们知道参数r包含关于一个这些特定对象生成的编码信息。我们的目标是了解这个信息是如何在内部编码的。作者们声称有一种方法可以从参数r中提取这些单元,而r负责生成类c的对象。


640?wx_fmt=png


这里,是特定层中所有单元的集合,参数U是目标单元,参数P是像素位置。问题来了,如何进行这种分离?作者们提出了两个步骤,这两个步骤是理解GAN黑盒子的工具。就是解析和干预。


640?wx_fmt=png

一个单元u和一个类c之间的解析测量一致性


解析 — 我们要识别那些有趣的类,它们在r中有一个明确的表示方法。这基本上是通过比较两个图像来完成的。首先通过计算x获得第一个图像,然后通过语义分割网络来运行。这将返回与目标类别(例如:树木)相对应的像素位置。第二个图像是通过用ru,p进行上采样,因此它与sc(x)的维度相匹配,然后再对其进行阈值处理,以便对被这个特定单元所“发亮”的像素做出艰难的决定。最后,我们计算了两个输出之间的空间一致性。值越高,单元u对类c的因果效应就越大。通过对每个单元执行这个操作,我们最终应该找出哪些类在r的结构中有一个明确的表示方法。


640?wx_fmt=png

干预测量一组单元U对类c的因果效应


干预 — 在这一点上,我们已经确定了相关的类。现在,我们试图为每个类找到最好的分离方式。这意味着,一方面我们抑制非受迫单元,希望目标类将从生成的图像上消失。另一方面,我们扩大了因果单元对生成图像的影响。这样我们就可以了解到他们对目标类c的存在有多大的贡献。最后,我们从两个图像中分割出类c并进行对比。语义图之间的一致性越小越好。这意味着在一个图像上,我们完全“排除”了树木的影响,而第二个图像只包含一片树林。


结果:


640?wx_fmt=png


a)Progressive GAN生成的教堂图像 b)根据所给的预训练的Progressive GAN,我们确定了负责生成“树”类的单元 c)我们可以阻止那些单元“删除”图像中的树 d)扩大图像中树的密度。


上述结果表明,我们对网络内部的机制有了很好的理解。这些见解可以帮助我们改善网络行为。了解图像的哪些特征来自于神经网络的哪个部分,对于理解说明、商业应用和进一步的研究都是非常有价值的。


640?wx_fmt=png


a)出于调试的目的,我们可以确定那些有伪影的单元……,b)和c)把它们去掉了,以“修复”GAN。


一个可以解决的问题是在生成的图像中有看得见的伪影。即使是一个训练很好的GAN有时也能产生一个极其不现实的图像,而这些错误的原因以前是未知的。现在我们可以将这些错误与导致视觉伪影的神经元联系起来。通过识别和阻止这些单元,可以提高生成的图像质量。


通过将某些单元设置为固定的平均值(例如,门),我们可以确保门将出现在图像中的某个位置。当然,这不会违反学过的分布统计(我们不能强迫门出现在空中)。另一个限制来自于这样一个事实,即一些对象与某些位置之间的联系是非常的紧密,以至于无法将它们从图像中消除。举个例子:不能简单地把椅子从会议室里删除掉,那样只会降低它们像素的密度或尺寸。


一种用于生成性对抗网络的基于生成器体系结构(A Style-Based GeneratorArchitecture for Generative Adversarial Networks)


查看链接:

https://arxiv.org/pdf/1812.04948.pdf?spm=a2c4e.11153940.blogcont686373.19.66a83440n133u7&file=1812.04948.pdf


详述


该论文已于2018年12月12日提交,代码很快就将会发布。另外,对于那些想更多了解这种方法但并不想阅读论文的人来说,博客上发表了一篇很好的总结文章。


主要思想:


这项工作提出了关于GAN框架的另一个观点。更具体地说,它从样式转换设计中吸取灵感,创建了一个生成器架构,在生成的图像中可以学习高级属性(如年龄、在人脸或背景上训练时的身份、相机视角)和随机变化(雀斑、头发细节)。它不仅学习自动分离这些属性,而且还允许我们以非常直观的方式控制合成。


640?wx_fmt=png

补充的结果回顾视频


方法


640?wx_fmt=png


传统的GAN架构(左)与基于样式的生成器(右)。在新的框架中,我们有两个网络组件:映射网络f与综合网络g。前者将一个潜在的代码映射到一个中间的潜在空间W,W对样式的信息进行编码。后者利用生成的样式和高斯噪声来创建新的图像。块“A”是一个训练过的仿射转换,而块“B”将训练过的每个通道的比例因子应用于噪声的输入。


在经典的GAN方法中,生成器以一些潜在的代码作为输入,并输出一个图像,这属于它在训练阶段所学习到的分布。作者们通过创建一个基于样式的、由两个元素组成的生成器来背离这种设计:


1.一个全连接的网络,代表着非线性映射 f:Z→W;

2.一个综合网络g;


全连接的网络 — 通过变换一个标准化的潜在向量z∈Z,我们得到了一个中间的潜在向量w=f(z)。中间的潜在空间W有效地控制了生成器的样式。作为旁注,作者确保避免从W的低密度区域采样。虽然这可能造成w的变化损失,但据说最终会导致更好的平均的图像质量。现在,一个从中间的潜在空间采样的潜在向量w被输入到块“A”(训练的仿射变换)中,并转换成样式y=(ys,yb)。最后通过每个卷积层的自适应实例标准化(adaptiveinstance normalization,AdaIN)将该风格添加到合成网络中。AdaIN操作是这样定义的:


640?wx_fmt=png


合成网络 — AdaIN的操作通过对其进行标准化来改变每个特征图xi,然后使用来自样式y的分量进行比例缩放和移位。最后,生成器的特征映射也被提供了一个直接的方式来生成随机细节 — 显式的噪声输入 — 以包含不相关高斯噪声的单通道图像的形式。


综上所述,虽然显式的噪声输入可以被视为在合成网络中生成过程的“种子”,但从W抽取的潜在代码试图向图像添加某种样式。


结果:


作者们从2017年的ProgressiveGAN开始重新审视NVIDIA的架构。虽然他们掌握了大部分的架构和超参数,但是生成器正在根据新的设计进行“升级”。论文内容最令人印象深刻的特点是样式的混合。


640?wx_fmt=jpeg


上图是可视化样式混合的效果。通过让一个潜在的代码(来源)生成一个图像,我们可以覆盖另一个图像(目标)的特征子集。这里,我们覆盖对应于粗糙空间分辨率(低分辨率特征图)的层。这样我们就可以影响目标图像的高级特征了。


这种新奇的生成器结构使其有能力在合成网络的不同层向同一图像添加不同的样式。在训练过程中,我们通过映射网络运行两个潜在代码z1和z2,并接收相应的w1和w2两个向量。完全由z1生成的图像被称为目标。这是一个生成的高分辨率图像,几乎与实际的分布区区分不出来。仅通过添加z2而生成的图像被称为来源。现在,在使用z1生成目标图像的过程中,在某些层,我们可以添加z2的代码了。此操作将用那些来源来覆盖目标中存在的样式子集。来源对目标的影响是由层的位置来控制的,这些层正被来源的潜在代码进行“培育”。与特定层对应的分辨率越低,来源对目标的影响越大。这样,我们就可以决定要在多大程度上影响目标图像:


·粗糙空间分辨率(分辨率42−82) — 高级方面,如:发型、眼镜或年龄;


·中间样式分辨率(分辨率162−322) — 较小比例的面部特征,如:发型样式的细节、眼睛;


·精细分辨率(分辨率642−10242)—只需修改一些小细节,如:头发颜色、肤色色调或皮肤结构;


作者们将他们的方法进一步应用到汽车、卧室甚至是猫的图像中,得到了令人震惊的结果。我仍然困惑为什么网络的决定会影响到猫的图像中爪子的位置,而不会关心汽车图像中车轮的转动……


640?wx_fmt=png


我发现真正令人惊奇的是,这个框架可以进一步应用于不同的数据集,比如汽车和卧室的图像。


进化生成性对抗网络(Evolutionary GenerativeAdversarial Networks)


查看链接:

https://arxiv.org/abs/1803.00657?spm=a2c4e.11153940.blogcont686373.23.13873440BbQ7WH&file=1803.00657


细节


该论文已于2018年3月1日提交。


主要思想:


在传统设置中,GAN通过交替更新生成器和使用反向传播的识别器进行训练。利用在目标函数中的交叉熵机制,实现了双人minmax 游戏。E-GAN的作者们提出了一种基于进化算法的可替代GAN框架。他们以进化问题的形式重新声明了损失函数。生成器的任务是在识别器的影响下承受不断地突变。根据“适者生存”的原则,我们希望最新一代生成器以这样的方式“进化”,从而学会正确的训练样本分布。


方法:


640?wx_fmt=png


原始的GAN框架(左)与E-GAN框架(右)。在E-GAN框架中,全部的Gθ生成器在一个动态环境中进化 — 即识别器D。该算法涉及三个阶段:变化、评估和筛选。最好的子版本被保留下来以供下一次迭代的时候使用。


进化算法试图在一个给定的环境(这里是指识别器)中进化全部的生成器。生成器中的每个个体都代表了生成网络参数空间中的一个可能的解决方案。进化过程归结为三个步骤:


1.变化:通过根据一些突变属性而自我修改,生成器的单个Gθ生成其子级…;

2.评估:每个子级都将使用一个适应函数进行评估,该函数取决于识别器的当前状态;

3.筛选:我们对每个子级进行评估,并决定它在适应函数的方面是否足够好,如果是,它将被保留,否则就会被丢弃;


上述这些步骤涉及到两个应该被详细讨论的概念:突变和适应函数:


突变 — 这些是在“变化”步骤中给子级引入的改变。最初的GAN训练目标激发了他们的灵感。作者们区分了三种最有效的突变类型。它们是minmax突变(鼓励将Jensen-Shannon分歧最小化)、启发式突变(添加了反向Kullback-Leibler分歧项)和最小二乘突变(受LSGAN的启发);


适应函数 — 在进化算法中,一个适应函数告诉我们一个给定的子级离达到设定的目标有多接近。这里,适应函数包括两个要素:质量适应得分和多样性适应得分。前者确保了生成器能够提供欺骗识别器的输出,而后者则关注生成样本的多样性。因此,一方面,培育子版本不仅要很好地接近原始分布,而且还要保持多样性,并且避免模式崩溃的陷阱。


作者们声称他们的方法解决了多个众所周知的问题。E-GAN不仅在稳定性和抑制模式崩溃方面做得更好,还减轻了选择超参数和架构(对收敛至关重要)的压力。最后,作者们声称E-GAN比传统的GAN框架收敛得更快。


结果:


该算法不仅对合成数据进行了测试,而且还对CIFAR-10的数据集和Inception进行了测试。作者们修改了流行的GAN方法,如DCGAN,并在实际的数据集上对其进行了测试。结果表明,通过训练E-GAN,可以从目标数据分布中生成各种高质量的图像。根据作者们的想法,在每一个筛选步骤中只保留一个子级就足以成功地将参数空间遍历到最优的解决方案。我发现E-GAN的这个属性非常有趣。另外,通过对空间连续性的仔细检查,我们可以发现,E-GAN的确从潜在的噪声空间到图像空间学习了一种有意义的预测。通过在潜在向量之间进行插值,我们可以获得平稳地改变有语义意义的人脸属性的生成图像。


640?wx_fmt=jpeg


在潜在空间中线性地插值。生成器已经从CelebA数据集中学习了图像的分布。α=0.0对应着从向量z1生成一个图像,而α=1.0则意味着图像来自向量z2。通过改变alpha的取值,我们可以在潜在的空间内进行插值,效果非常好。


一种用于生成式对抗网络的基于生成器体系结构的方式(A Style-Based Generator Architecture for Generative Adversarial Networks)


查看链接:

https://arxiv.org/pdf/1812.04948.pdf?spm=a2c4e.11153940.blogcont687001.11.38552b9dqy81u3&file=1812.04948.pdf


这是NVIDIA的一篇新论文,一个对于GAN(StyleGAN)的基于样式的生成器体系结构,提出了一个新的模型来应对这个挑战。StyleGAN是一步一步地生成人工图像的,从非常低的分辨率开始,一直到高分辨率(1024×1024)。通过分别地修改网络中每个级别的输入,它可以控制在该级别中所表示的视觉特征,从粗糙的特征(姿势、面部形状)到精细的细节(头发颜色),而不会影响其它的级别。


这种技术不仅可以更好地理解所生成的输出,而且还可以产生最高水平的结果 — 比以前生成的图像看起来更加真实的高分辨率图像。

 

640?wx_fmt=png

来源:StyleGAN


2018年NVIDIA首次使用ProGAN应对这一挑战时,研究人员都无法生成高质量的大图像(如:1024×1024)。ProGAN的关键创新点是渐进式训练 — 它首先使用非常低分辨率的图像(如:4×4)开始训练生成器和识别器,并且每次都增加一个更高分辨率的网络层。


这项技术首先通过学习即使在低分辨率图像中也可以显示的基本特征,来创建图像的基本部分,并且随着分辨率的提高和时间的推移,学习越来越多的细节。低分辨率图像的训练不仅简单、快速,而且有助于更高级别的训练,因此,整体的训练也就更快。

 

640?wx_fmt=png

ProGAN概况


ProGAN生成高质量的图像,但与大多数模型一样,它控制所生成图像的特定特征的能力非常有限。换句话说,这些特性是互相关联的,因此尝试调整一下输入,即使是一点儿,通常也会同时影响多个特性。一个很好的类比就是基因组,在其中改变一个基因可能影响多个特性。

 

640?wx_fmt=png

从低分辨率网络层到高分辨率网络层的ProGAN渐进式训练


StyleGAN如何工作


StyleGAN论文提供了一个升级版本的ProGAN图像生成器,重点关注生成器网络。作者们观察到ProGAN渐进层的一个潜在的好处是,如果使用得当,它们能够控制图像的不同视觉特征。层和分辨率越低,它所影响的特征就越粗糙。本文将这些特征分为三种类型:


1、粗糙的—分辨率最高82,影响姿势、一般发型、面部形状等;

2、中等的—分辨率为162至322,影响更精细的面部特征、发型、眼睛的睁开或是闭合等;

3、高质的—分辨率为642到10242,影响颜色方案(眼睛、头发和皮肤)和微观特征;


除ProGAN生成器之外的一些:


映射网络


映射网络的目标是将输入向量编码为中间向量,中间向量的不同元素控制不同的视觉特征。这是一个非常重要的过程,因为使用输入向量来控制视觉特征的能力是非常有限的,因为它必须遵循训练数据的概率密度。例如,如果黑头发的人的图像在数据集中更常见,那么更多的输入值将会被映射到该特征上。因此,该模型无法将部分输入(向量中的元素)映射到特征上,这一现象被称为特征纠缠。然而,通过使用另一个神经网络,该模型可以生成一个不必遵循训练数据分布的向量,并且可以减少特征之间的相关性。


映射网络由8个全连接的层组成,它的输出ⱳ与输入层(512×1)的大小相同。

 

640?wx_fmt=png

带映射网络的生成器(除ProGAN合成网络之外)


样式模块(AdaIN)


AdaIN(自适应实例标准化)模块将映射网络创建的编码信息ⱳ传输到生成的图像中。该模块被添加到合成网络的每个分辨率级别中,并定义该级别中特征的可视化表达式:


1、卷积层输出的每个通道首先进行标准化,以确保步骤3的缩放和切换具有预期的效果;

2、中间向量ⱳ使用另一个全连接的网络层(标记为A)转换为每个通道的比例和偏差;

3、比例和偏差的向量切换卷积输出的每个通道,从而定义卷积中每个过滤器的重要性。这个调优操作将信息从ⱳ转换为可视的表达方式;

 

640?wx_fmt=png

生成器的自适应实例标准化(AdaIN)


删除传统输入


大多数的模型以及其中的ProGAN使用随机输入来创建生成器的初始图像(即4×4级别的输入)。StyleGAN团队发现图像特征是由ⱳ和AdaIN控制的,因此可以忽略初始输入,并用常量值替代。虽然本文没有解释它为什么能提高性能,但一个保险的假设是它减少了特征纠缠,对于网络在只使用ⱳ而不依赖于纠缠输入向量的情况下更容易学习。

 

640?wx_fmt=png

用常量输入替换合成网络输入


随机变化


人们的脸上有许多小的特征,可以看作是随机的,例如:雀斑、发髻线的准确位置、皱纹、使图像更逼真的特征以及各种增加输出的变化。将这些小特征插入GAN图像的常用方法是在输入向量中添加随机噪声。然而,在许多情况下,由于上述特征的纠缠现象,控制噪声的影响是很复杂的,从而会导致图像的其它特征受到影响。


StyleGAN中的噪声以类似于AdaIN机制的方式添加,在AdaIN模块之前向每个通道添加一个缩放过的噪声,并稍微改变其操作的分辨率级别特征的视觉表达方式。

 

640?wx_fmt=png

在合成网络的每个分辨率级别上添加缩放过的噪声


样式混合


StyleGAN生成器在合成网络的每个级别中使用了中间向量,这有可能导致网络学习到这些级别是相关的。为了降低相关性,模型随机选择两个输入向量,并为它们生成了中间向量ⱳ。然后,它用第一个输入向量来训练一些网络级别,然后(在一个随机点中)切换到另一个输入向量来训练其余的级别。随机的切换确保了网络不会学习并依赖于一个合成网络级别之间的相关性。


虽然它并不会提高所有数据集上的模型性能,但是这个概念有一个非常有趣的副作用 — 它能够以一种连贯的方式来组合多个图像(视频请查看原文)。该模型生成了两个图像A和B,然后通过从A中提取低级别的特征并从B中提取其余特征再组合这两个图像。


在W中的截取技巧


在生成模型中的一个挑战,是处理在训练数据中表现不佳的地方。这导致了生成器无法学习和创建与它们类似的图像(相反,它会创建效果不好的图像)。为了避免生成较差的图像,StyleGAN截断了中间向量ⱳ,迫使它保持接近“平均”的中间向量。


对模型进行训练之后,通过选择多个随机的输入,用映射网络生成它们的中间向量,并计算这些向量的平均值,从而生成“平均”的平均值ⱳ。当生成新的图像时,不用直接使用映射网络的输出,而是将值ⱳ转换为ⱳ_new=ⱳ_avg+�(ⱳ -ⱳ_avg),其中�的值定义了图像与“平均”图像的差异量(以及输出的多样性)。有趣的是,在仿射转换块之前,通过对每个级别使用不同的�,模型可以控制每个特征集与平均值的差异量。


微调


在ProGAN上,StyleGAN的另外一个改进措施是更新几个网络超参数,例如训练持续时间和损失函数,并将离得最近的放大或缩小尺度替换为双线性采样。

 

640?wx_fmt=png

StyleGAN的概览


结果


介绍了两个数据集的最新结果,一个是由名人图片组成的—  CelebA-HQ,另一个是由“普通”人图片组成的、更加多样化的新数据集— Flickr-Faces-HQ (FFHQ)。下图显示了模型的不同配置的Frèchet inception distance (FID)得分

 

640?wx_fmt=png


与ProGAN相比,模型在不同配置下的性能(FID得分),分数越低模型越好(来源: StyleGAN)


除了这些结果之外,本文还说明了该模型并不仅仅是通过在卧室图像和汽车图像两个数据集上展示其结果而定制的。


特征分离


为了使关于特征分离的讨论更加的量化,本文提出了两种新的特征分离的测量方法:


1、感知路径长度 — 当在两个随机输入之间插入时,测量两个连续图像(它们的VGG16嵌入)之间的差异。剧烈的变化意味着多个特性已经同时改变了,它们有可能会被纠缠;


2、线性可分离性  —  是将输入按照二进制类进行分类的能力,如男性和女性。分类越好,特征就越容易区分。


通过对输入的向量z和中间向量ⱳ的指标进行比较,作者们发现在ⱳ中的特征很明显地更容易分离。这些指标还表明了在映射网络中选择8个层与选择1到2个层相比的好处。


实施细节


StyleGAN在CelebA-HQ和FFHQ数据集上接受了为期一周的训练,使用了8个Tesla V100 GPU。它是在TensorFlow中实现的,并且将开源的。


结论


StyleGAN是一篇突破性的论文,它不仅可以生成高质量的和逼真的图像,而且还可以对生成的图像进行较好的控制和理解,甚至使生成可信度较高的假图像变得比以前更加的容易。在StyleGAN中提出的一些技术,特别是映射网络和自适应实例标准化(AdaIN),可能是未来许多在GAN方面创新的基础。


阿里云云栖社区组织翻译。

文章原标题《The best of GAN papers in the year 2018 | DTRANSPOSED》

译者:Mags,审校:袁虎。


640?wx_fmt=png


end

老代码多=过度耦合=if else?阿里巴巴工程师这样捋直老代码

即将开源! 2亿用户背后的Flutter应用框架Fish Redux

Mars 算法实践——人脸识别

阿里资深技术专家何勉详解研发效能提升的关键

更多精彩

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页