综述
论文用深度生成模型实现了一个高效面部补全算法。与传统从已给数据集中搜寻相似图片块儿来进行补全和合成残缺图片的方法不同,作者是直接使用一个神经网络来合成残缺部分的内容。整个模型由三部分构成:a reconstruction loss、two adversarial losses、a semantic parsing loss。
a) 论文目的:
传统以复制-粘贴的方式来进行图片补全在背景填充方面效果不错,但在面对填充脸部图片这种目标图片比较独特时却效果不佳。作者于是想用深度生成模型构建一个有效的目标补全算法,能不需要参照外部数据集快速完成对图片的补全。
b) 论文贡献:
首先提出了一个深度生成补全图片补全模型,这个模型通过encoding-decoding 生成器、两个对抗判别器来合成用随机噪声遮挡的部分;其次对挑战性的脸部补全任务进行处理,并且实现提出的模型能够根据学习到的目标特征,产生整体比较和谐的图片;最后,作者证明了生成semantic parsing部分的有效性。
c) 模型结构:
整体结构如下图:
生成器G:结构有encoder层、两个全连接层和decoder层,输入的残缺图片通过encoder层映射成隐藏特征,然后再通过decoder层得出生成的图片。里面的encoder层是两层以上卷积层加上一层以上池化层,decoder层与encoder对称。
判别器D:如果只有一个生成器,那么生成的图片将会非常模糊,只有一个粗略的轮廓。因此,采用了两个判别器来对生成图片的细节进行完善,使得生成的图片更加真实。其中,有两个判别器:local discriminator和global discriminator。其中,局部判别器是为了让生成器生成图片中补全的部分更加真实,而整体的判别器是为了让整个生成的图片看起来更加真实。
Semantic Regularization:前面的两个部分其实就是原始GAN的变形,作者加上后面这一部分的原因是,前面生成的图片虽然整体上轮廓清晰比较真实,但是看上去却不像是人脸的图片。如下图:
加上autoencoder结构的semantic parsing network之后,生成的图片会更加和谐:
d) 损失函数:
因为模型分为三部分,因此损失函数也有三部分:
整体的损失函数如下:
L = Lr + λ1La1 + λ2La2 + λ3Lp
其中,
①Lr是生成器的损失,就是输入与输出的二阶范数。
②La1与La2是两个判别器的损失,其形式跟GAN的判别器损失大同小异:
③Lp就是semantic parsing network的损失,就是简单的softmax层损失。
它们前面的参数是用来平衡各个部分损失不同影响的。
e) 训练步骤:
与我上一篇看的pix2pix两步走的训练步骤类似,作者采用了三步训练:
①用生成器直接训练,得到模糊的结果;
②用局部判别器损失来微调生成模型;
③联合整体判别器和意义转化网络损失来调整生成模型参数。
这个方法据说可以避免训练开始阶段判别器的作用过强。和我毕设的预训练类似。
f) 数据集选择:
作者用到了两个数据集,一个是Celeb A,一个是Helen test数据集,这两个数据集都是面部图片的集合,并且后者还有segment label。以后做实验可以考虑使用。
g) 实验结果:
作者将自己模型产生的结果与CE模型产生的结果进行直接对比,并用了三种测量标准测试,证明作者提出的模型效果更好。作者还做了遮挡不同面积的图片,来观察结果的效果,并得出在size是32×32时效果是最好的,因为此时的遮挡面积刚好是面部器官的一部分,比如半只眼睛。
心得体会
a) 训练步骤也有一个预训练部分(只训练生成器),和我毕设中对生成器预训练类似。以前一直以为只是用来让后面的训练时间更短,论文中提到这样训练也可以避免在训练的初始阶段,判别器的作用太强,影响训练效果。
b) 论文对GAN的变形方式值得借鉴,采用两个判别器的模型分别完成对局部和整体的训练,思路很好。
d) 作者在模型的最后部分还采用了一个semantic parsing networks结构,这个部分能让整体的输出更加和谐,具体的参考论文还没了解,因此其原理了解很模糊。
e) 论文的目的是对独特的目标图片进行补全,以面部图片为例,但是论文一直是以脸部图片作为实验训练集,如果能加入其他比较独特的图片,比如建筑、动物等,可能说服力会更强。