一个实用的生成式深度图像修复方法

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”

因公众号更改了推送规则,记得读完点“在看”~下次AI公园的新文章就能及时出现在您的订阅列表中


作者:Chu-Tak Li

编译:ronghuaiyang

导读

使用门控卷积的自由掩码的图像修复方法。

源码:https://github.com/JiahuiYu/generative_inpainting

一个实用的生成式深度图像修复方法_第1张图片

图1,一些自由形式的修复结果,使用DeepFill v2。注意,用户草图输入是允许交互式编辑的

今天,我们将深入研究一种非常实用的生成式深度图像修复方法,名为DeepFill v2。以前我在文章中提到过,这篇文章可以被视为一个增强版的DeepFill v1,Partial Convolution和EdgeConnect。简单地说,DeepFill v1中提出的上下文注意力(CA)层和EdgeConnect中引入的用户引导(可选用户草图输入)概念嵌入到了DeepFill v2中。此外,部分卷积(PConv)被修改为门控卷积(GConv),其中基于规则的掩码更新为一个到下一个卷积层的可学习的门控。有了这些想法,DeepFill v2实现了高质量的自由形式的修复,比以前的最先进的方法更好。图1显示了使用DeepFill v2的一些自由形式的修复结果。让我们看看他们是如何结合所有的技术来达到最先进的水平的。

动机

回想一下,部分卷积 (PConv)提出了分离有效和无效的像素,这样卷积结果只依赖于有效像素和边缘生成器提出了估计失踪区域内部的骨架(s)作为用户指导,为了进一步提高修复性能,本文的作者想要将这些技术与他们的上下文注意力层结合进一步加强修复的结果。

首先,PConv使用基于规则的掩码更新来分离有效和无效像素。基于规则的掩码更新是手工制作且不可学习的。由于PConv是不可学习的,因此提高它的最直接的方法是使它可学习。

其次,以往的方法通常是将掩码图像和掩码图像输入到生成网络进行补全。如果我们也允许用户草图输入作为任务的附加条件呢?生成器是否知道如何区分用户草图输入和掩码图像输入?门控卷积,PConv的一个可学习版本可以做到!

介绍

再一次,我假设读者已经从我以前的文章中对深度图像修复有了基本的了解。实际上,DeepFill v2使用的网络架构和损失函数在前面已经介绍过了。在这篇文章中,我将简要地介绍那些我认为不太重要的内容,感兴趣的读者可以自己查阅论文了解更多细节。所以,我们可以留更多的时间来介绍最重要的思想,门控卷积

网络体系结构。本文(DeepFill v2)是他们之前工作(DeepFill v1)的改进版本。所以,网络结构非常相似,除了用提出的门控卷积代替了标准卷积。请注意,DeepFill v1最重要的思想是上下文注意力(CA)层,它允许生成器使用由遥远的空间位置给出的信息来重建局部丢失的像素。因此,DeepFill v2也遵循了由粗到细两阶段的网络结构。第一个生成器网络负责粗重建,第二个生成器网络负责粗填充图像的细化。

损失函数。有趣的是,只用了两个最标准的损失项来训练网络,即L1损失项和GAN损失项。这是这篇论文的主张之一,因为其他最先进的修复论文使用多达5-6个损失项来训练他们的网络。我很快就会讨论在这篇论文中使用的GAN损耗。

方案

为了进一步改进处理不规则掩模的部分卷积,本文作者提出了部分卷积的一种可学习版本。除了门控卷积外,允许可选用户草图输入,增强了所提模型的交互编辑能力。最后,类似于我在上一篇文章中介绍的EdgeConnect, Spectral Normalization (SN)应用于鉴别器以稳定训练过程。

方法

一个实用的生成式深度图像修复方法_第2张图片

图2,自由图像修复模型的网络结构概要

图2显示了DeepFill v2的网络架构。如你所见,这是一个带有门控卷积的由粗到细的两阶段网络。粗生成器以掩码后的图像、掩码图像和可选的用户草图图像作为输入,用于对缺失区域进行粗重建。然后,将粗填充后的图像传递到第二个细化生成网络进行细化。注意,DeepFill v1中提出的上下文注意力(CA)层被用于该细分网络。

对于鉴别器,本文作者采用著名的PatchGAN结构。我们之前也提到过PatchGAN的想法。除了使用PatchGAN,为了训练稳定性,作者还对鉴别器的每个标准卷积层应用Spectral Normalization (SN)。

门控卷积

一个实用的生成式深度图像修复方法_第3张图片

图3,部分卷积(左)和门控卷积(右)的图解

图3显示了部分卷积和建议的门控卷积之间的区别。简单地说,使用一个标准的卷积层和一个sigmoid激活函数来更新掩码,而不是使用PConv中的基于规则的掩码更新。需要注意的是,在一个sigmoid激活函数之后,所有的值都是[0,1],这可以表示每个局部区域的重要性(或有效性)。门控卷积的输出计算如下:

一个实用的生成式深度图像修复方法_第4张图片

其中的输出是两个标准卷积层的输出的元素乘法,一个后面跟着任何激活函数,另一个后面跟着一个sigmoid激活函数。

一个标准的卷积层后跟一个sigmoid函数作为软门控,在输入到下一个卷积层之前对当前卷积层的输出进行加权。注意,对于硬门控,我们只有0或1来做权重,但对于软门控,我们有0到1的权重,这是更灵活的,这个操作是可以学习的。

所以,你们可以看到门控卷积的思想很简单,很容易实现。

损失函数

训练模型的损失函数包括两个损失项,一个是像素级L1重建损失(L1 loss),另一个是SN-PatchGAN损失。注意,用于平衡这两个损失项的超参数是1:1。

如你所见,生成器的SN-PatchGAN损失非常简单。它是SN-PatchGAN标识符输出的负均值。实际上,这是一种hinge损失,在许多GAN框架中也普遍使用。

实验

自由掩码生成和边缘映射作为用户草图输入

提出了一种在训练过程中实时生成自由形式mask的方法。我认为最简单的方法是直接使用他们的代码。对于可选的用户草图输入,作者利用HED边缘检测器生成边缘图作为草图输入。注意,sketch输入是可选的。

与之前的修复论文类似,作者在Places2和CelebA-HQ数据集上评估了他们的模型。这两种数据集通常用于深度图像的修复。

定量比较

一个实用的生成式深度图像修复方法_第5张图片

表1,在矩形mask和自由形状mask的Places2数据集上进行各种方法的定量比较

表1列出了读者信息的两个客观评价指标。正如我在之前的文章中提到的,对于深度图像修复任务,并没有一个好的定量评价指标。因此,这些数字仅供参考,你应该关注填充图像的视觉质量。如你所见,该模型提供了最低的L1和L2误差。Global&Local,ContextAttention和PartialConv已经在我以前的文章中介绍过了。读者可以参考之前的文章。

定性比较

一个实用的生成式深度图像修复方法_第6张图片

图4,Places2和CelebA-HQ数据集各种方法的定性比较。

图4为不同深度图像修复方法的定性比较。很明显,本文提出的模型(GatedConv)在视觉质量方面优于其他所有方法。你可以看到,提出的方法提供的修复结果没有明显的颜色不一致。

一个实用的生成式深度图像修复方法_第7张图片

图5,这个例子展示了使用用户草图输入的优点

从图5可以看出,与不允许用户草图输入的方法相比,本文提出的模型能够理解并利用用户草图输入,进一步提高了修复结果。再一次,你可以看到,提出的方法提供更好的修复结果,没有颜色不一致。

一个实用的生成式深度图像修复方法_第8张图片

图6,一个使用不同现有方法删除目标的例子

图6显示了一个目标删除的例子,可以看到,本文提出的方法可以完全删除目标,具有更好的视觉质量。

一个实用的生成式深度图像修复方法_第9张图片

图7,使用用户引导修复结果的例子

图7显示了一些以用户草图输入为指导的图像修复示例。你可以看到如何通过提出的方法实现交互式编辑。

与之前的修复论文类似,作者也做了用户研究,以评估哪种方法能提供更好的视觉质量的结果。

SN-PatchGAN的消融研究

一个实用的生成式深度图像修复方法_第10张图片

图8,SN-PatchGAN的消融研究。从左到右:原始图像,掩膜图像,使用一个全局GAN的结果,使用SN-PatchGAN的结果

图8显示SN-PatchGAN的消融研究。与标准的单一全局GAN相比,SN-PatchGAN的使用带来了更好的修复效果。作者声称,简单L1损失和SN-PatchGAN损失的简单组合可以产生真实的修复结果。

总结

本文的主要思想是门控卷积。门控卷积是部分卷积的一个可学习版本。我们可以通过使用一个额外的标准卷积层和一个sigmoid函数来实现门控卷积,如图3所示。与现有的修复方法相比,门控卷积和SN-PatchGAN的应用显著提高了修复效果。作者还展示了如何通过允许可选的用户草图输入来实现交互式编辑。通过用户草图输入,可以获得更好的、有意义的修复效果。因此,这在文章中是一种非常实用的深层图像修复方法。

要点

我希望你们能理解什么是门控卷积这是本文最重要的思想。

—END—

英文原文:https://towardsdatascience.com/a-practical-generative-deep-image-inpainting-approach-1c99fef68bd7

一个实用的生成式深度图像修复方法_第11张图片

请长按或扫描二维码关注本公众号

喜欢的话,请给我个在看吧

你可能感兴趣的:(卷积,python,计算机视觉,神经网络,机器学习)