参与:Joni、Nurhachu、黄小天 近日,加利福尼亚大学和 Adobe Research 在 arXiv 上联合发表了一篇名为《生成人脸修复(Generative Face Completion)》的论文,论文中的模型包括包括一个生成器、两个鉴别器以及一个语义解析网络,可针对缺失图像直接生成局部或整张的逼真图像。此论文已被 CVPR 2017 接收,机器之心对该篇论文做了扼要介绍和解读。论文链接请移步文末。 论文作者及单位: 1. 简介 这篇论文提出了一个用来进行人脸修复的深度生成模型,如下图所示,针对一副面部图片中的缺失区域,这个模型可以直接修复人脸。 与之前很多其他工作不同,针对人脸修复任务,这篇论文的作者同时使用了两个鉴别器来构建整个模型,因此不论是局部图像还是整个图像,看上去都更加逼真。 2. 方法 2.1 模型结构 如上图所示,整个模型包括一个生成器、两个鉴别器以及一个语义解析网络。 这个项目中的生成器是一个基于 VGG-19 的自动编码器。此外论文作者还构造了两个卷积层,并在顶部有一个池化层,然后在后面加了一个全连接层作为编码器。解码器具有反池化层,结构与编码器对称。 局部鉴别器被用来判别图像缺失区域中合成的图像补丁是否真实。整体鉴别器则用来判别整张图像的真实性。这两个鉴别器的架构相似于论文《用深度卷积生成对抗网络来进行非监督表征学习》中的所述架构。 语义解析网络用于改进上述生成对抗网络生成的图片,语义解析网络是基于论文《使用全连接卷积编码-解码网络进行物体轮廓检测》,因为这种网络能够提取到图像的高水平特征。以这种方式,生成的图像补丁 (人脸部分) 会具有更加自然的形态和尺寸。 2.2 损失函数 生成器中的重建损失函数 L_r 计算生成器的输出和原始图像之间的 L_2 距离。 两个鉴别器共享定义相同的损失函数 L_ai,如下图方程所示,L_ai 经常用于生成对抗网络。 两个鉴别器的损失函数的不同之处在于:局部鉴别器的损失函数 (L_a1) 仅仅反向传播图像缺失区域的损失梯度,而整体鉴别器的损失函数 (L_a2) 反向传播整个图像的损失梯度。 解析网络的损失函数 L_p 是以像素为单位的 softmax 损失,softmax 也是很多其他分类神经网络中常用的损失函数。 综上所述,整个模型的损失函数定义如下: 对网络的训练,论文作者将过程划分为三个阶段。第一阶段,仅仅用 L_r 来训练网络以重构图像。第二阶段,用局部对抗损失来对网络进行微调。第三阶段,使用全局对抗损失和语义正则化获取最终结果。 3. 实验结果 正如本文第一张图像所示,生成人脸修复算法有着非常好的结果。图 7 展示了这个模型对不同种类的遮盖有着很好的鲁棒性,它和现实应用非常接近。无论什么形状的遮盖,网络都能生成令人满意的结果。
图 7. 脸部修复。在每一组,左边:被遮盖部分的人脸输入,右边:修复结果 如图 9 所示,作者还对比了遮盖大小对结果的影响。他们发现,在遮盖中等大小的时候,存在一个性能的局部最小值。因为当遮盖是这个尺寸的时候,它很可能遮住一张人脸的五官之一 (如鼻子、眼睛......),而这种情况对这个模型来说是很难合成的。
图 9:不同尺寸的正方形遮盖下模型的性能评价。曲线展示了在 CelebA 数据集上的所有图像中模型性能的平均值。 (责任编辑:本港台直播) |