CV | GauGan 论文学习:Semantic Image Synthesis with Spatially-Adaptive Normalization

 

题外话:

近期英伟达提出GauGAN,附上了炫酷的demo和完整的repo,让人很想试着跑跑看。如论文题目可知,GauGAN算法是一种语义图像合成算法,该算法使用了空间自适应的归一化操作(这个也是本文中最主要的贡献点)。

 

一、摘要

作者开门见山指出算法的创新点,提出了一种新的空间自适应归一化层(Spatially-Adaptive Normalization Layer),可以简单且有效地输出如同真实照片的合成图像,而该算法的输入仅是一张语义分割的mask图。在GauGAN之前的合成算法通常直接将语义mask作为网络的输入,然后经过多层卷积、归一化层和非线性层进行处理。而传统的归一化层(normalization layer)倾向于“抹除”语义信息,导致生成模型得到的是局部最优解。为了解决这个问题,GauGAN直接使用语义mask对normalization layer的输出激活值进行建模,即提出的空间自适应层。

目前该项目已开源:https://github.com/NVlabs/SPADE,感兴趣的读者们可以去DIY试试,亲测好用~

下图为GauGAN模型的生成示意图,模型根据输入的语义标签图得到风景生成图。图中第一列是指定风格的源图像,第一行是指定语义信息的标签图像。其余图像是根据两个预设条件生成的合成图像。

 

二、背景介绍

GauGAN算法的作用是将输入的标签图(semantic maps)经过生成模型 G 处理得到具有真实纹理和语义信息的合成图像,可划分为图像翻译(image translation)中的一种应用分支。图像翻译大多使用具有条件的GAN进行图像生成,即conditional GAN,使用神经网络来学习从标签图到真实图像的映射关系。这类算法有很广泛的应用,如内容生成、图像编辑等等。

不同于过去已有的图像合成GAN,简单地将卷积层、归一化层、以及非线性层堆叠在一起构成生成模型,GauGAN引入了一个新的归一化层。GauGAN的作者指出,现有的基于GAN的生成模型中使用的归一化层通常会“擦除”(原文用的是wash away)输入的语义标签图的语义信息,使得生成的图像上会有大片的灰暗结果或错误的图案,影响生成图像的真实可看性。为了解决这个问题,GauGAN中使用了新的归一化层,名为空间自适应归一化层(spatially-adaptive normalization layer)。该层通过卷积层结构对输入的语义标签图进行处理,学习出两组变换参数,使得语义信息得以有效保存并贯穿传递整个生成模型,进而生成更加真实的图像数据。

 

三、基于GauGAN的图像合成

设GauGAN的生成模型为 G,m为输入的语义标注图,其尺寸为H*W,语义标注图的每个值都是整数型,分别代表特定的类别,例如:1为树、2为天空,等等。而生成模型G的目标是学习一个映射函数,该函数将输入的标注图映射到真实纹理的图像。

令 h^i 表示深度卷积网络的第i层激活层,输入的batch size为N。令 C^i 为当前卷积层的特征图通道数,H^i 和 W^i 是当前激活输出的尺寸高和宽。GauGAN使用的新的归一化层,空间自适应归一化层(Spatially-Adaptive normalization),其实现结构如下图所示。在每层归一化层,设置两层卷积层结构,对输入的语义标注图进行学习,得到归一化参数。

CV | GauGan 论文学习:Semantic Image Synthesis with Spatially-Adaptive Normalization_第1张图片

 学习到的归一化参数与原始的BN操作对应,形式如下公式。

CV | GauGan 论文学习:Semantic Image Synthesis with Spatially-Adaptive Normalization_第2张图片

Gama和Beta由卷积层学习得到,而其余的miu和sigma是数据的均值和标准差,计算过程如下。

CV | GauGan 论文学习:Semantic Image Synthesis with Spatially-Adaptive Normalization_第3张图片

GauGAN的生成模型 G 的整体结构主要借鉴GauGAN作者之前的另一个工作pix2pixHD,将上述的SPADE归一化层融入到生成模型中,如下图所示。由于结合SPADE结构,很好地学习了输入的语义标注图信息,所以将生成模型encode部分去掉,仅保留decoder编码器部分,网络的输入直接设为噪声数据。当然,后续作者也有提到要生成不同风格的图像,也可以增加编码器对特定风格的图像进行风格编码。

CV | GauGan 论文学习:Semantic Image Synthesis with Spatially-Adaptive Normalization_第4张图片

为什么SPADE结构会有效?

GauGAN的作者指出,传统的归一化层倾向于擦除输入的标签图的语义信息。此话怎讲?当输入的标签图存在大片同样标签值时,极端的情况考虑整张输入为天空标签或草地标签,如下图所示。现有的归一化层通常会将该层输入的数据转化为均值为0,标准差为1的分布。也就是说,当输入的标签值为同一值时,所有的数据会变为0(均值为0)。而新设计的SPADE层,会有效地学习标注图的语义信息,具体定义如上公式所示(再细节的部分大家可以去看原文)。效果如下图所示,使用SPADE层的GauGAN会更好地学习到单一标签的语义信息,如蓝天和草地。

CV | GauGan 论文学习:Semantic Image Synthesis with Spatially-Adaptive Normalization_第5张图片

四、实验

作者在COCO-Stuff数据集上进行实验,验证了SPADE对于大片同样标签的输入图的有效性,具体效果对比如下图所示。“Ours”为GauGAN的实验结果,可以明显看到SPADE捕捉到了海浪等细微的语义特征。

CV | GauGan 论文学习:Semantic Image Synthesis with Spatially-Adaptive Normalization_第6张图片

 GauGAN的另一个有效场景是生成风景场景的图像。如下图所示,作者从flikr上收集了若干高清图像数据使用Deeplab2算法进行自动标注,然后GauGAN在该数据集上进行训练,即可生成更为高清的图像。

正如之前提到的,GauGAN还支持对特定的风格图像提取噪声数据,以生成指定风格的风景图像。效果图如下,第一行为指定的风格,分别为晴天、傍晚、晚霞、白天,生成的数据对应不同的风格输入会有相应的变换。

当然,对于图像翻译模型来说,生成真实质感的图像数据才是本命任务吧(好啦,这是我定义的>.<)如下图所示,在大片同样标签的输入下,SPADE具有很好地细节捕捉能力,不过对于一些特定的细节,如碗盘的轮廓,还有待改进。

题外话:

GAN的商用场景还有很多可探讨的空间,同时也有很多争议的空间,最近看到一些不好的新闻,希望大家都合理使用技术,为GAN找到一些恰当的应用场景。

 

 

 

 

你可能感兴趣的:(CV,DL,生成图像,GauGan,Gan,GauGAN,图像翻译)