今天,我们将深入研究一种名为DeepFill v2的非常实用的生成型深层图像修复方法。本文可以视为DeepFill v1,Partial Convolution和EdgeConnect的增强版本。简单的说,DeepFill v1中提出的上下文注意(CA)层和EdgeConnect中引入的可选的用户草图输入概念都嵌入在DeepFill v2中。同样,部分卷积(PConv)被修改为门控卷积(GConv),其中基于规则的掩码更新被公式化为可学习的下一卷积层的门控。有了这些想法,DeepFill v2可以比以前的最新方法获得高质量的自由形式修复。图1显示了使用DeepFill v2的一些自由形式的修复结果。
动机
回想一下,已经提出了部分卷积(PConv)来分离有效像素和无效像素,从而使卷积结果仅取决于有效像素,并且已经提出了Edge生成器来估计缺失区域的内部架构,进一步提高修复性能,本文的作者想要将这些技术与他们的上下文的关注(CA)层进一步加强修复的结果。
首先,PConv使用基于规则的掩码更新来分隔有效和无效像素。基于规则的掩码更新是手工制作的,是不可学习的。读者可以参考我们之前翻译的一篇文章对PConv进行简短的回顾。由于PConv是不可学习的,因此改进它的最直接的方法是使其可学习。
其次,之前的方法通常将掩码图像和掩码图像输入生成器网络完成。如果我们还允许用户的草图输入作为任务的附加条件呢?生成器知道如何区分用户的草图输入和掩码图像输入吗?一个简单的答案,使用门控卷积(PConv的一个可学习的版本)就可以了!
介绍
在以下各节中,我们可以将使用更多时间介绍最重要的概念“门控卷积”。
DeepFill v2网络体系结构。论文是他们之前工作(DeepFill v1)的改进版本。所以除了被使用门控卷积取代了标准卷积之外,网络架构非常相似。我们之前已经介绍过DeepFill v1。这里DeepFill v1最重要的思想是上下文注意(CA)层,它允许生成器使用由遥远的空间位置提供的信息来重建局部缺失的像素。因此,DeepFill v2也遵循由粗到细的两阶段网络结构。第一生成器网络负责粗重建,而第二生成器网络负责对粗填充的图像进行细化。
有趣的是,损失函数只有两个最标准的损失项用于训练网络,即L1损失和GAN损失。这是这篇论文的主张之一,因为其他最先进的绘画论文使用5-6损失来训练他们的网络。我将很快谈论在这篇论文中使用的GAN损失。。
解决方案简述
为了进一步改进处理不规则掩码的部分卷积,作者提出了门控卷积,门控卷积可以看作是部分卷积的可学习版本。除了门控卷积之外,还允许可选的用户草图输入,以增强模型的交互编辑能力。最后,与我们在上一篇文章中介绍的EdgeConnect类似,将谱归一化(Spectral Normalization SN)[2]应用于鉴别器以稳定训练过程。
图2显示了DeepFill v2的网络架构。正如您所看到的,这是一个由粗到细两阶段的网络,带有门控卷积。粗糙生成器以掩码图像、掩码图像和可选的用户草图图像作为输入,对缺失区域进行粗糙重建。然后,粗填充的图像将被传递到第二个细化生成器网络进行细化。请注意,DeepFill v1中提出的上下文注意(CA)层被用于此细化网络。
对于鉴别器,本文采用了著名的PatchGAN结构[3]。除了使用PatchGAN之外,作者还对鉴别器的每个标准卷积层使用了谱归一化(SN)[2],以提高训练的稳定性。
门控卷积(Gated Convolution)
图3显示了部分卷积(PConv)和建议的门控卷积(GatedConv)之间的差异。简而言之,在PConv中,使用标准卷积层和S型激活函数来更新掩码,而不是使用基于规则的掩码更新。在经过S型激活函数后,所有值都将落入[0,1],这可以指示每个局部区域的重要性(或有效性)。 门控卷积的输出计算为
其中输出是两个标准卷积层的输出的逐个元素相乘,一层后跟任何激活函数,另一层后跟一个S型激活函数。
标准卷积层后接一个sigmoid函数作为软门控,在输入到下一个卷积层之前对当前卷积层的输出进行加权。注意,对于硬门控,我们只有0或1来做加权,但是对于软门控,我们可以采用0到1进行加权,这更加灵活,此操作是可以学习的。。
因此,您可以看到门控卷积的思想非常简单且易于实现。
损失函数
训练模型的损失函数由两个损失项组成,一个是像素级L1重建损失(L1损失),另一个是SN-PatchGAN损失。请注意,用于平衡这两个损耗项的超参数为1:1。
生成器的SN-PatchGAN损耗非常简单。它是SN-PatchGAN鉴别器输出的负平均值。实际上,这是铰链损耗,这在许多GAN框架中也很常见。
实验
自由形式的掩码生成和边缘贴图作为用户草图输入
提出了一种在训练过程中实时生成自由形状掩码的方法。我认为最简单的方法是直接在这里使用他们的代码。感兴趣的读者可以参考他们的论文了解详情。
对于可选的用户草图输入,作者使用HED边缘检测器[4]生成边缘图作为草图输入。请注意,草图输入是可选的。对于对交互式编辑用户草图输入感兴趣的读者,我强烈建议您阅读他们的论文。
与以前的修复论文相似,作者在Places2和CelebA-HQ数据集上评估了他们的模型。这两个数据集通常用于深度图像修复任务。
表1列出了两个供读者参考的客观评价度量数。正如我在之前的文章中提到的,对于深图像的补绘,目前还没有一个好的定量评估指标。因此,这些数字仅供参考,你应该关注填充图像的视觉质量。正如您所看到的,所提出的模型提供了最低的l1和l2误差。
定性比较
图4给出了不同深度图像补绘方法的定性比较。很明显,提出的模型(GatedConv)在视觉质量方面优于所有其他方法。您可以看到,该方法提供了不明显的颜色不一致的inpaint结果。
从图5可以看出,与前一种不允许用户草图输入的方法相比,所提出的模型能够理解和利用用户草图输入,从而进一步提高inpaint结果。你可以看到,论文的方法提供了更好的inpaint结果没有颜色不一致。
图6显示了一个对象删除示例,您可以看到,所提出的方法可以以更好的视觉质量完全删除对象。
图7显示了一些以用户草图输入为指导的图像填充示例。你可以看到交互式编辑是如何通过提出的方法来实现的。
SN-PatchGAN的消融实验
图8显示了SN-PatchGAN的消融研究。与标准的单个全局GAN相比,SN-PatchGAN的使用带来了更好的修复效果。作者声称,简单的L1损失和SN-PatchGAN损失的简单组合可以产生逼真的修复效果。
结论
本文的主要思想是门控卷积。门控卷积是部分卷积的可学习版本。我们可以通过使用一个额外的标准卷积层和一个S型函数来实现门控卷积,如图3所示。与现有的修补方法相比,门控卷积和SN-PatchGAN的使用显着改善了修补效果。作者还展示了如何通过允许可选的用户草图输入来实现交互式编辑。使用用户草图输入,可以实现更好和有意义的修复效果。因此,这是文献中非常实用的深层图像修复方法。
到目前为止,仍然很难用复杂的场景结构和较大的缺失区域来填充图像。因此,极限图像修复将是一个有希望的方向。让我们一起学习和阅读更多内容:)
参考文献
[1] Jiahui Yu, Zhe Lin, Jimei Yang, Xiaohui Shen, Xin Lu, and Thomas Huang, “Free-Form Image Inpainting with Gated Convolution,” Proc. International Conference on Computer Vision (ICCV), 2019.
[2] Takeru Miyato, Toshiki Kataoka, Masanori Koyama, and Yuichi Yoshida, “Spectral Normalization for Generative Adversarial Networks,” Proc. International Conference on Learning Representations (ICLR), 2018.
[3] Phillip Isola, Jun-Yan Zhu, Tinghui Zhou, and Alexei A. Efros, “Image-to-Image Translation with Conditional Adversarial Networks,” Proc. Computer Vision and Pattern Recognition (CVPR), 21–26 Jul. 2017.
[4] Saining Xie, and Zhuowen Tu, “Holistically-nested edge detection,” Proc. International Conference on Computer Vision (ICCV), 2015.
作者:Chu-Tak Li
deephub翻译组
本文源代码:https://github.com/JiahuiYu/generative_inpainting
原文地址:https://towardsdatascience.com/a-practical-generative-deep-image-inpainting-approach-1c99fef68bd7