图片补全《Globally and locally consistent image completion》

图像补全,一图以蔽之



我们(指作者们)提出了一中图像补全方法,可以使得图像的缺失部分自动补全,局部和整图保持一致。作者通过全卷积网络,可以补全图片中任何形状的缺失,为了保持补全后的图像与原图的一致性,作者使用全局(整张图片)和局部(缺失补全部分)两种鉴别器来训练。全局鉴别器查看整个图像以评估它是否作为整体是连贯的,而局部鉴别器仅查看以完成区域为中心的小区域来确保所生成的补丁的局部一致性。 然后对图像补全网络训练以欺骗两个内容鉴别器网络,这要求它生成总体以及细节上与真实无法区分的图像。我们证明了我们的方法可以用来完成各种各样的场景。 此外,与PatchMatch等基于补丁的方法相比,我们的方法可以生成图像中未出现的碎片,这使我们能够自然地完成具有熟悉且高度特定的结构(如面部)的对象的图像。

  • 基于Patch-based的图像补全,该类方法主要是从源图像中寻找相似的patch,然后将该patch贴到缺失的区域。当源图像中没有类似的区域时,该方法就无法填充看上去合理的洞。


    图片补全《Globally and locally consistent image completion》_第1张图片
  • 基于Context Encoder的图像补全,该方法基于深度学习生成相似的纹理区域,在一定程度上可以补全缺失的区域,而且效果还不错。但是不能够保持局部一致性。


    图片补全《Globally and locally consistent image completion》_第2张图片

    CE方法的动机是特征学习,并没有完全描述如何处理任意掩模(遮罩,mask)区域,也没有完全描述如何将方法应用于高分辨率图像。

我们的架构由三个网络组成:补全网络,全局内容鉴别器和局部内容鉴别器。补全网络是全卷积的并用于补全图像,而全局和局部内容鉴别器都是专门用于训练的辅助网络。这些鉴别器用于确定补全后的图像是否保持一致性。全局鉴别器将完整图像作为输入来识别场景的全局一致性,而局部鉴别器仅查看补全区域周围的小区域以便判断更详细的补全区域的质量。在每次训练迭代期间,首先更新鉴别器,以便它们正确地区分真实和补全的训练图像。然后,更新补全网络,以便它足够好地补全缺失区域以欺骗内容鉴别器网络。网络结构如下图所示:


图片补全《Globally and locally consistent image completion》_第3张图片

全局鉴别器网络将整个图像作为输入,而局部鉴别器网络仅用补全区域周围的小区域作为输入。

  • 补全网络

从图中可以看到,我们在全卷积网络中用的是空洞卷积(Delated Conv.),补全网络的输入是具有二进制通道的RGB图像,这表明补全的掩模和输出都是是RGB图像。整体架构遵循编码器 - 解码器结构,其允许通过在进一步处理图像之前初始降低分辨率来减少存储器使用和计算时间。 然后,使用反卷积层将输出恢复为原始分辨率,反卷积层由具有分数步幅的卷积层组成。 与使用许多池化层来降低分辨率的其他架构不同,我们的网络模型仅将分辨率降低两倍,卷积到原始大小的1/4,这对于在缺失区域中生成非模糊纹理很重要。空洞卷积层也用于中间层,空洞卷积允许使用更大的输入区域计算每个输出,同时仍然使用相同数量的参数和计算能力。 这对于图像补全任务很重要,因为上下文对于真实像素预测至关重要。通过在较低分辨率下使用空洞卷积,模型在计算每个输出像素时可以有效地“看到”输入图像的较大区域。 得到的网络模型在输入图像的307×307像素区域的影响下计算每个输出像素。 如果不使用空洞卷积,它将仅使用99×99像素区域,不能补全大于99×99像素的孔,如下图所示。


图片补全《Globally and locally consistent image completion》_第4张图片

空间支持的重要性。 为了能够补全大区域,用于计算输出像素的空间支持必须包括孔外的像素。 在左侧,从空间支撑Ω1中的影响区域计算像素p1,而由于支撑区域Ω2不包含孔外的任何信息,因此不能计算像素p2。 但是,在右侧,空间支撑大于孔,允许补全中心像素。

网络结构


图片补全《Globally and locally consistent image completion》_第5张图片
  • 内容鉴别器(Context Discriminators)

这些网络基于卷积神经网络,将图像压缩成小特征向量。 网络的输出通过连接层融合在一起,连接层预测出图像是真实的概率的一个连续值。网络结构如下:


图片补全《Globally and locally consistent image completion》_第6张图片

输出层使用sigmoid函数得到输入的图像是真实的图像而不是补全后的图像的概率。

  • 损失函数:

生成网络使用weighted Mean Squared Error (MSE)作为损失函数,计算原图与生成图像像素之间的差异,表达式如下所示:



鉴别器网络使用GAN损失函数,其目标是最大化生成图像和原始图像的相似概率,表达式如下所示:



两者结合后,总的损失函数为:
  • 训练

训练算法:


图片补全《Globally and locally consistent image completion》_第7张图片

通过调整图像大小来完成训练,使最小边是[256,384]像素范围内的随机值。 然后,随机提取256×256像素的块并用作输入图像。 对于掩模(mask),我们在[96,128]像素范围内生成一个随机孔,并用训练数据集的平均像素值填充它。 请注意,此孔的纵横比可随宽度和高度而变化。 全局内容鉴别器的输入是完整的256×256像素图像,并且对于局部内容鉴别器,输入是以补全区域(或实际样本的随机区域)为中心的128×128像素块。


图片补全《Globally and locally consistent image completion》_第8张图片
  • 实验结果


    图片补全《Globally and locally consistent image completion》_第9张图片

    图片补全《Globally and locally consistent image completion》_第10张图片

    图片补全《Globally and locally consistent image completion》_第11张图片
  • 不足之处
  1. 如果缺失面积较大,则难以补全。
  2. 如果缺失区域在图像的边界,则处理不好。
  3. 不能生成复杂性的结构性纹理。
  4. 模型性能依赖于训练集素材,如果训练集中有一张和测试集相似图片,则效果会好一些。

参考:
Iizuka S , Simo-Serra E , Ishikawa H . Globally and locally consistent image completion[J]. ACM Transactions on Graphics, 2017, 36(4):1-14.

你可能感兴趣的:(图片补全《Globally and locally consistent image completion》)