paper:Image Inpainting for Irregular Holes UsingPartial Convolutions

        利用部分卷积对不规则孔进行图像修复

Nvidia(英伟达)在计算机视觉领域的人工智能技术取得了新突破:Image Inpainting for Irregular Holes Using Partial Convolutions(基于部分卷积层的不规则孔洞图像修复术),可以瞬间“修补”照片中被删除的部分!不过不是原貌恢复,而是加入了AI“自己的理解”。

导读

在计算机视觉研究领域,NVIDIA常常让人眼前一亮。

“用条件 GAN 进行 2048x1024 分辨率的图像合成和处理”的pix2pixHD项目,或者脑洞大开的让晴天下大雨、小猫变狮子、黑夜转白天的“无监督图像翻译网络”(Unsupervised Image-to-Image Translation Networks)。还有之前其便用AI造了一批假明星(查看)。

近日,NVIDIA在arXiv放出一篇今年ICLR的论文,同样很厉害。论文题为“Image Inpainting for Irregular Holes Using Partial Convolutions”,即使用“Partial Convolutions”进行图像修复。英伟达的研究人员发布了一种可以编辑图像或重建已损坏图像的深度学习方法,实现了一键P图,而且“毫无ps痕迹”。通过使用“部分卷积”层,该方法优于其他方法。

在修图这件事上,Photoshop有着崇高的地位。然而,Photoshop不一定是最好的选择~

Photoshop中的仿制图章或修补工具,可以帮助我们修复照片上的瑕疵。

比如去污点这样的,

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

这种简单的单色图像,修复起来还是挺方便的,若要换成实景或人像,就要耗费不少心力了!

其实与大段大段的补全缺失画面相比,快速且优秀的进行局部P图,才是这个技术真正发挥实力的地方。

静态展示不过瘾,动态展示才更令人惊叹。

比如下面这个动图,把左图中的人、线、红旗、石头、棍子都P掉,应该怎么做?很简单,就是直接涂抹掉,然后AI就自动修复了。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》



论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

其实这个AI的本事,就是能在一片空白之中,更好的填补上缺失的内容。

极端情况,比方处理人脸时候,眼睛被遮蔽了。

英伟达的AI就能重新补上一双眼睛,当然不可能是原来那个人的眼睛,但是至少能弥补的也算相对完美吧~


论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》



该研究来自Nvidia的Guilin Liu等人的团队,他们发布了一种可以编辑图像或重建已损坏图像的深度学习方法,即使图像穿了个洞或丢失了像素。这是目前state-of-the-art的方法。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

该方法还可以通过移除图像中的某些内容,并填补移除内容后造成的空白,从而实现编辑图像。

这个过程叫做“image inpainting”,可以在图片编辑软件中实现去除不需要的内容,同时用计算机生成的逼真的替代方式填补空白。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

                                图:被遮盖的图像,及使用基于部分卷积的网络得到的修复结果


“我们的模型可以很好地处理任何形状、大小、位置或距离图像边界任何距离的空白。以前的深度学习方法主要集中在位于图像中心附近的矩形区域,并且通常需要依赖成本很高的后期处理。“英伟达的研究人员在他们的研究报告中写道,“此外,我们的模型能够很好地处理越来越大的空白区域。”

为了训练神经网络,研究团队首先生成了55116个随机色条、形状和大小任意的masks,用于训练。他们还生成了25000个图像用于测试。为了提高重建图像的精度,研究人员根据相对于输入图像的大小,将这些训练图像进一步分为6类。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

                                                                    图4:一些用于测试的masks

Nvidia的研究人员表示:“此前,基于机器学习的图像处理主要集中在图像中心附近的矩形区域,且处理后通常还需要昂贵的人工后期。所以这次研究的目标,就是创建一个可以处理不规则孔洞的图像修复模型,并对图像语义进行预测,在不需要任何人工后期的情况下生成可与原图顺畅衔接的像素修补。”白皮书详情:https://arxiv.org/pdf/1804.07723.pdf


据悉,Nvidia是首个成功训练神经网络对不规则图像孔洞进行修复的研发团队。本质上说,这项AI技术的关键是基于深层神经网络创建蒙版(mask)和部分卷积预测(partial convolutional prediction)。

使用部分卷积的方法,其中卷积被掩蔽,并且仅基于有效像素进行重新归一化等处理。

论文中,还与现有其他方法进行了对比,有很多公式。

比如这种

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

还有这种:

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

部分结果展示

    使用NVIDIA Tesla V100 GPU和cuDNN加速的PyTorch深度学习框架,该团队通过将生成的mask应用在ImageNet数据集Places2和CelebA-HQ两个数据集的图像,训练其神经网络。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

图:ImageNet上的测试结果对比

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

图:Place2数据集上的测试结果对比

在训练阶段,将空白或缺失的部分引入上述数据集的完整训练图像中,以使网络能够学习重建缺失的像素。

在测试阶段,另一批没有在训练期间使用的空白或缺失部分被引入数据集里的测试图像,以对重建的图像的精度进行无偏验证。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

图:基于典型卷积层的结果(Conv)和“部分卷积”层的结果(PConv)对比

研究人员表示,现有的基于深度学习的图像修复方法不够好,因为丢失像素的输出必然取决于输入的值,而这些输入必须提供给神经网络,以找出丢失的像素。这就导致图像中出现诸如颜色差异或模糊之类的artifacts。

为了解决这个问题,NVIDIA团队开发了一种方法,确保丢失像素的输出不依赖于为这些像素提供的输入的值。这种方法使用一个“部分卷积”层,根据其对相应的接受域(receptive field)的有效性,对每个输出进行重新归一化(renormalization)。这种重新归一化可以确保输出值与每个接受域中缺失像素的值无关。

该模型是利用这些部分卷积实现的UNet架构构建的。使用一组损失函数,匹配VGG模型的特征损失以及风格损失,进而训练模型以产生逼真的输出。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》


论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》


研究人员还在论文中提及,相同的框架也可以用来处理图像超分辨率任务。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》


总而言之就是一句话:我不是针对谁,在座的都是……

最后顺便提一下,这篇论文的一作Guilin Liu,在加入英伟达之前,还曾在Adobe Research实习过。

Adobe,就是搞出Photoshop(和一堆其他软件)的那家公司~


全文翻译

                                利用部分卷积对不规则孔进行图像修复

                                    (google翻译,有些许不准确的地方,可评论指出)


摘要

现有的基于深度学习的图像修补方法在损坏的图像上使用标准卷积网络,使用卷积滤波器响应以有效像素以及掩蔽孔中的替代值(通常为平均值)为条件。 这通常会导致诸如颜色差异和模糊等伪影。 后处理通常用于减少这些工件,但代价很高,可能会失败。 我们提出使用部分卷积,其中卷积被掩蔽并重新规格化以仅以有效像素为条件。 我们还包含一个机制,可以为下一层自动生成更新的掩膜,作为正向传递的一部分。 我们的模型胜过其他不规则掩膜的方法。 我们展示定性和定量比较与其他方法来验证我们的方法


论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》


图2. 从左到右,从上到下:2(a):带孔的图像。 2(b):PatchMatch [3]的修复结果。 2(c):Iizuka等人的修改结果[1]。 2(d):余等人[2]。 2(e)和2(f)使用与3.2节相同的网络架构,但使用典型的卷积网络,2(e)使用像素值127.5初始化空洞。 2(f)使用平均ImageNet像素值。 2(g):我们基于部分卷积的结果与孔值无关。


1 说明

图像修补是填充图像中孔的任务,可用于许多应用程序。 例如,它可用于图像编辑以去除不需要的图像内容,同时用合理的图像填充结果空间。 以前的深度学习方法主要集中在位于图像中心附近的矩形区域,并且通常依赖于昂贵的后期处理。 这项工作的目标是提出一种图像修复模型,该模型可以在不规则孔洞模式下稳健运行(见图1),并产生语义上有意义的预测结果,与图像的其余部分平滑结合,无需任何额外的后处理 或混合操作。

最近不使用深度学习的图像修复方法使用剩余图像的图像统计信息来填充孔。 PatchMatch [3]是最先进的方法之一,它迭代地搜索最佳拟合补丁以填补漏洞。虽然这种方法通常会产生平滑的结果,但它受可用图像统计量的限制,并没有视觉语义学的概念。例如,在图2(b)中,PatchMatch能够使用来自周围阴影和墙壁的图像补丁平滑地填充绘画中缺失的组件,但语义感知方法将使用绘画中的补丁代替。深度神经网络以端到端的方式学习语义先验和有意义的隐藏表示,已经用于最近的图像修复工作。这些网络在图像上使用卷积滤波器,用固定值替换已删除的内容。结果,这些方法受到依赖于初始孔值的影响,其通常表现为孔区域缺乏纹理,明显的颜色对比或围绕孔的人造边缘响应。在图2(e)和2(f)中可以看到使用具有各种孔值初始化的典型卷积层的U-Net架构的例子。 (对于这两者,训练和测试共享相同的初始化计划)。

调整孔值的输出最终导致各种类型的视觉伪影,这需要昂贵的后处理。例如,Iizuka等人[1]使用快速前进[4]和泊松图像混合[5],而余等。 [2]采用后续改进网络来改进其原始网络预测。然而,这些细化并不能解决所有显示为2(c)和2(d)的工件。我们的工作旨在实现与空洞初始化值无关并且没有任何额外的后处理的良好合并孔预测。

许多最近的方法的另一个局限性是关注矩形孔,通常被认为是图像中心。我们发现这些限制可能会导致过度配合矩形孔,并最终限制这些模型在实际应用中的效用。 Pathak等人[6]和杨等人。 [7]假设128×128图像中心有64×64的方孔。 Iizuka等人[1]和Yu et al。 [2]删除中心孔的假设,可以处理不规则形状的孔,但不要对大量不规则掩膜的图像进行大量的定量分析([8]中的51个测试图像)。为了专注于更实用的不规则孔使用案例,我们收集了具有不同大小不规则掩膜的大型基准图像。在我们的分析中,我们不仅观察孔的大小,还观察孔是否与图像边界接触。

为了正确处理不规则掩膜,我们建议使用部分卷积层,其中包括掩膜和重新归一化卷积操作,然后是掩膜更新步骤。遮蔽和重新归一化卷积的概念在图像分割任务中也被称为[9]中的分割感知卷积,然而他们没有对输入蒙版进行修改。我们使用部分卷积是这样的:给定一个二元掩膜我们的卷积结果仅取决于每一层的非空穴区域。我们的主要扩展是自动掩膜更新步骤,它可以消除部分卷积能够在非掩膜值上操作的任何掩膜。如果有足够的连续更新层,即使是最大的蒙版孔也最终会缩小,只会在特征映射中留下有效的响应。部分卷积层最终使我们的模型对占位符空洞值不可知。

总之,我们做出以下贡献: 

- 我们提出使用具有自动掩膜更新步骤的部分卷积来实现图像修补中的最新技术。 

- 虽然以前的作品未能通过具有典型卷积的U-Net [10]中的跳过链接获得良好的修复效果,但我们证明用部分卷积和掩膜更新代替卷积层可以获得最新的修补结果。 

- 据我们所知,我们首先证明了在形状不规则的孔上训练图像修复模型的功效.

-我们提出了一个大型的不规则掩膜数据集,该数据集将公开发布,以便于未来的训练和评估工作 修复模型。

2 相关工作

图像修复的非学习方法依赖于使用像距离场这样的机制将相邻像素的外观信息传播到目标区域[11,12,4]。但是,这些方法只能处理颜色和纹理方差较小的狭窄孔。大孔可能会导致过度平滑或类似Voronoi区域的伪像,如[4]中所述。基于斑点的方法,如[13,14]通过以迭代的方式从图像的非空洞区域或其他源图像搜索相关斑块来操作。然而,这些步骤通常会带来很大的计算成本,如[15]。 PatchMatch [3]通过提出更快速的类似补丁搜索算法来加速它。但是,这些方法对于实时应用程序来说仍然不够快,并且无法进行语义意识的补丁选择。

基于深度学习的方法通常用一些常数占位符值来初始化孔, 例如ImageNet [16]的平均像素值,然后使用一个卷积网络。由于产生的构件,后处理通常用于改善条件对占位符值的影响。内容编码器[6]首先将具有64×64中心孔的128×128图像嵌入低维特征空间,然后将特征解码为64×64图像。杨等人。 [7]将内容编码器的结果作为输入,然后传播来自非孔洞区域的纹理信息以填充孔洞区域作为后处理。 Song等人[17]使用细化网络,其中模糊的初始填孔结果被用作输入,然后迭代地用特征空间中最接近的非孔洞区域的小片代替。 Iizuka等人[1]通过定义全局和局部鉴别器来扩展内容编码器,然后将泊松混合应用为后处理。继[1]之后,Yu等人[2]用由上下文关注层提供支持的细化网络替换后处理。

在深度学习方法中,其他几项努力也忽略了掩膜占位符的值。在Yeh et al。 [18]在潜在空间搜索最接近编码的图像,然后用它来调节填孔发生器的输出。 Ulyanov等人。 [10]进一步发现,网络不需要外部数据集训练,并且可以依靠生成网络本身的结构来完成损坏的图像。但是,这种方法可能需要为每个图像使用一组不同的超参数,并应用多次迭代来获得良好结果。此外,他们的设计[10]不能使用跳跃链接,这些链接已知可以产生详细的输出。对于标准卷积层,编码器级中噪声或错误孔初始值的原始特征将传播到解码器级。我们的工作也不依赖洞区域中的占位符值,但我们的目标是在一次前馈过程中取得良好结果,并使用跳过链接创建详细预测。

我们的工作广泛使用了蒙板或重新加权的卷积操作,这使得我们只能在有效输入上调节输出。 Harley等人[19]最近利用这种方法与一个软注意掩膜进行语义分割。它也被用于PixelCNN中的全图像生成[20],以仅对先前合成的像素调整下一个像素。部分卷积可以看作是归一化卷积的一个特例,如[21]中介绍的那样。我们关于部分卷积的主要贡献是根据部分卷积能够作出有效响应的位置以及将部分卷积应用于修补问题来进一步更新下一层的输入掩膜。我们的完整型号是一种编码器 - 解码器架构,具有足够的接受区域,使得掩膜在进入解码器一半之前完全有效,这简化了解码过程。

3 方法
我们提出的模型使用堆叠的部分卷积运算和掩膜更新步骤来执行图像修复。我们首先定义我们的卷积和掩膜更新机制,然后讨论模型架构和损失函数。

3.1 部分卷积层

为简洁起见,我们将部分卷积运算和掩膜更新函数联合称为部分卷积层。

设W是卷积滤波器的权重,b是相应的偏差。 X是当前卷积(滑动)窗口的特征值(像素值),M是相应的二进制掩膜。类似于[9]中定义的每个位置的部分卷积被表示为:

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》



其中⊙表示单元乘法。 可以看出,输出值仅取决于非屏蔽输入。 比例因子1/sum(M)应用适当的缩放比例来调整有效(未屏蔽)输入的变化量。

在每次部分卷积操作之后,我们将更新我们的掩膜。 我们的屏蔽规则很简单:如果卷积能够在至少一个有效输入值上调整其输出,则我们移除该位置的掩膜。 这表示为:

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》



并且可以在任何深度学习框架中轻松实施,作为正向传球的一部分。在部分卷积层有足够的连续应用的情况下,如果输入包含任何有效像素,则任何掩膜将最终全部为1。


3.2 网络架构和实施实施

部分卷积层通过扩展现有的标准PyTorch [22]来实现,尽管它可以在使用自定义层的时间和空间上得到改进。直接的实现是定义大小为C×H×W的二进制掩膜,与相关的图像/特征具有相同的大小,然后使用固定卷积层实现掩膜更新,其具有与部分卷积操作相同的内核大小,但权重相同地设置为1并且偏置设置为0.在单个NVIDIA V100 GPU上,512×512图像上的整个网络推断花费0.23s,而不管孔的大小如何。

网络设计 我们设计了类似于[24]中使用的UNet架构,用部分卷积层替换所有卷积层,并在解码阶段使用最近邻居上采样。在编码阶段使用ReLU,在所有解码层之间使用alpha = 0.2的LeakyReLU。在第一和最后部分卷积层之外的每个部分卷积层和ReLU / LeakyReLU层之间使用批量归一化层[25]。encoder包括八个部分卷积层,其中步长= 2。内核大小为7,5,5,3,3,3,3和3.通道大小为64,128,256,512,512,512,512和512.解码器包括8个上采样层,每个上层系数为2,然后是部分卷积层。decoder中的部分卷积层的输出通道是512,512,512,512,256,128,64和3.输入decoder的skip连接在输入之前以通道方式连接特征映射和二进制掩膜下一个部分卷积层。最后的部分卷积图层的输入将包含原始输入图像与孔和原始蒙版的拼接。这使模型可以简单地复制无孔像素。

部分卷积作为填充 当图像边界附近时,我们不使用任何现有的填充方案来卷积。相反,部分卷积层直接通过适当的掩膜处理。这将进一步确保图像边界上的修复内容不会受到图像外部无效值的影响,这可以解释为另一个漏洞。

3.3损失函数

我们的损失函数是针对每个像素的重建精度以及构图,例如预测的孔值如何平滑过渡到其周围环境。

给定具有孔 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 的输入图像,初始二值掩膜M(孔为0),网络预测 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 和ground truth 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 ,我们首先定义我们的像素损失 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 和 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 。这些分别是孔和非孔像素在网络输出上的L1损耗。接下来,我们定义由Gatys等人引入的感知损失。 [26]:

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

这里, 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 是原始输出图像 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 ,但是非空洞像素直接设置为ground truth。感知损失计算 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 和 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 之间的L1距离和基本事实,但是使用ImageNet预训练的VGG-16 [27]将这些图像投影到更高级的特征空间后。 Ψn是第n个选定图层的**图。我们使用图层pool1,pool2和pool3来弥补我们的损失。

我们进一步包括风格损失项,它类似于感知损失[26],但我们首先在应用L1之前在每个特征图上执行自相关(格雷姆矩阵)。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

在这里,我们注意到矩阵运算假设高层特征Ψ(x)n具有形状 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 ,结果是 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》Gram矩阵, 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 是第n个选择的归一化因子 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 层。再次,我们包括原始输出和合成输出的损失条件。

我们的最终损失项是总变差(TV)损失 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 :这是P上的平滑惩罚[28],其中P是孔区域的1像素扩张区域。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

总损失 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 是所有上述损失函数的组合。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

通过对100个验证图像执行超参数搜索来确定损失项权重。

去除棋盘伪影和鱼鳞伪影 已知感知丢失[28]会产生棋盘伪影。 Johnson等人[28]建议通过使用总变差(TV)损失来改善问题。我们发现这不是我们模型的情况。图3(b)显示了通过从 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 中移除 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 和 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 而训练的模型的结果。对于我们的模型,额外的样式损失项是必要的。然而,并非所有的风格损失的权重计划都会产生合理的结果。图3(f)显示了用小的损失权重训练的模型的结果。与图3(g)中完整 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 训练模型的结果相比,它具有许多鱼鳞伪影或块状棋盘伪影。最终,风格损失的权重太大会导致高频信息的丢失。我们希望这个讨论会对那些有兴趣使用基于VGG的高层次损失的读者有所帮助。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

图3. 从上到下,从左到右:输入带孔的图像; 结果没有风格损失; 造成风格损失; ground truth。 在最下面一行,从左到右:输入带孔的图像; 使用小样式损失权重的结果; 使用完整 论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》 的结果; ground truth


4 实验

4.1不规则掩数据集

先前的作品通过随机移除图像中的矩形区域在其数据集中生成空洞。我们认为这不足以创造我们需要的不同孔洞形状和大小。因此,我们首先收集随机条纹和任意形状的孔的蒙版。我们发现在[29]中描述的视频的两个连续帧之间的遮挡/遮挡遮罩估计方法的结果是这样的图案的良好来源。我们为训练产生了55116个掩膜,并为测试产生了24866个掩膜。在训练期间,我们通过从55116个掩膜中随机采样一个掩膜并随后进行随机扩张,旋转和裁剪来增加掩膜数据集。所有用于训练和测试的掩膜和图像尺寸为512×512。

我们从24866个掩膜开始并添加随机扩张,旋转和裁剪来创建测试集。许多先前的方法如[1]在图像边界附近的孔处的性能下降。因此,我们将测试集分为两个:带有和不带有孔的边界的边界。具有远离边界的孔的分割确保距离边界至少50个像素的距离。

我们还根据孔的大小进一步分类我们的口罩。具体而言,我们生成了6种不同孔 - 图面积比的掩膜:(0.01,0.1],(0.1,0.2],(0.2,0.3],(0.3,0.4],(0.4,0.5],(0.5 ,0.6],每个类别包含1000个带和不带边界约束的掩膜,总共创建了6 * 2 * 1000 = 12,000个掩膜,每个类别掩膜的一些例子可以在图4中找到。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

图4. 每个孔到图像面积比率类别的一些测试蒙版。用边界约束的例子显示了1,3和5;使用它们的示例没有边界约束来示出2,4和6。


4.2 训练过程

训练数据 我们使用3个独立的图像数据集进行训练和测试:ImageNet数据集[16],Places2数据集[30]和CelebA-HQ [31,32]。我们使用ImageNet和Places2的原始火车,测试和val分割。对于CelebA-HQ,我们随机分成27K图像和3K图像进行测试。

训练程序 我们使用[33]中描述的初始化方法初始化权重,并使用Adam [34]进行优化。我们在单个NVIDIA V100 GPU(16GB)上进行训练,批量为6个。

初始化和微调 孔对于批量归一化存在问题,因为平均值和方差将针对孔像素进行计算,所以在掩蔽位置忽略它们是有意义的。但是,每个应用程序都会逐渐填充空洞,并且通常完全由解码器阶段完成。为了在存在孔的情况下使用批量归一化,我们首先使用0.0002的学习率为初始训练启用批量归一化。然后,我们使用0.00005的学习率进行微调,并冻结网络编码器部分的批量归一化参数。我们在解码器中保持启用批量归一化。这不仅避免了不正确的均值和方差问题,而且还帮助我们实现更快的收敛。 ImageNet和Places2模型训练10天,而CelebA-HQ训练3天。所有微调都在一天内完成。

4.3 比较

我们将我们的方法与4种方法进行比较:

- PM:PatchMatch [3],最先进的基于非学习的方法 

- GL:Iizuka等人提出的方法。 [1] 

- GntIpt:Yu等人提出的方法。 [2] 

- Conv:与我们的方法相同的网络结构,但使用典型的卷积层。损失权重通过超参数搜索重新确定。

我们的方法表示为PConv。与GL和GntIpt的公平比较需要对我们的数据进行再训练。然而,两种方法的训练都使用局部鉴别器,假设洞的局部边界框可用,这对于我们的面罩的形状是没有意义的。因此,我们直接使用他们发布的预训练模型1。由于我们不知道他们的训练测试分裂,我们自己的分裂可能会不同于他们的分裂。我们对12,000张图像进行评估,随机将我们的面具分配给图像而无需更换。

定性比较 图5和图6分别显示了ImageNet和Places2上的比较。 GT代表基本事实。我们将它与图9中的CelebA-HQ上的GntIpt [2]进行了比较。GntIpt在256×256上测试了CelebA-HQ,因此我们在将图像送入模型之前将图像下采样为256×256。可以看出,PM可能会在语义上复制不正确的补丁来填补漏洞,而GL和GntIpt有时无法通过后处理或细化网络获得合理的结果。图7显示了Conv的结果,这些结果与洞穴占位符值的调整有着不同的人为因素。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

图5. ImageNet上测试结果的比较


定量比较 如[2]中所提到的,由于存在许多可能的解决方案,因此没有好的数值度量来评估图像修复结果。尽管如此,我们通过报告L1 error,PSNR,SSIM [35]和初始评分[36]来追踪以前的图像修复工作[7,2]。 L1 error,PSNR和SSIM在Places2上报告,而Inception评分(IScore)在ImageNet上报告。请注意,发布的[1]模型仅在Places2上训练,我们将其用于所有评估。表1显示了比较结果。可以看出,我们的方法在不规则掩膜上的这些测量方法上优于所有其他方法。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

图6. Places2上测试结果的比较


用户研究 除了定量比较外,我们还通过人类主观研究来评估我们的算法。我们执行部署在Amazon Mechanical Turk(MTurk)平台上的成对A / B测试。我们进行两种不同的实验:无限的时间和有限的时间。我们还分别报告有无孔附近的情况。对于每种情况,我们随机选择每种方法300张图像,每张图像比较10次。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

                                    图7. 典型的基于卷积层的结果(Conv)和基于部分卷积层的结果(PConv)之间的比较。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

表1. 与各种方法的比较。列表示不同的空洞图像面积比。 N =无边界,B =边界


对于无限时间设置,workers可以一次给出两个图像:每个都由不同的方法生成。然后给workers无限的时间选择更逼真的图像。我们也洗牌图像的顺序,以确保无偏差的比较。图8(a)总结了所有不同的空洞与图像面积比的结果。第一行显示了距离图像边界至少50个像素的结果,而第二行显示了这些孔可能接近或接触图像边界的情况。可以看出,在这两种情况下,我们的方法都比其他所有方法(50%意味着两种方法表现相当好)的表现要好得多。 

对于有限的时间设置,我们将所有方法(包括我们的)与ground truth进行比较。在每一次比较中,选择一种方法的结果并在有限的时间内与ground truth一起显示给workers。然后要求workers选择哪个图像看起来更自然。这可以评估图像之间的差异可以被感知的速度。图8(b)显示了不同时间间隔的比较结果。同样,第一行显示了孔不接触图像边界的情况,而第二行允许。在大多数情况下,我们的方法在不同的时间段和孔到图像面积比方面优于其他方法。


论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

图8.用户研究结果。我们进行两种实验:无限的时间和有限的时间。 (a)在无限时间设置中,我们将结果与另一种方法生成的结果进行比较。我们的结果是首选的比率是图表。 50%意味着两种方法相同。在第一行中,孔不允许触摸图像边界,而在第二行允许。 (b)在有限的时间内,我们将所有方法与基本事实进行比较。主题被给予一些有限的时间(250ms,1000ms或4000ms)来选择哪个图像更真实。报道了其中ground truth优于其他方法的比率。曲线越低越好。


5 讨论和扩展
5.1 讨论

我们建议使用具有自动掩膜更新机制的部分卷积层并实现最新的图像修复结果。我们的模型可以稳健地处理任何形状,大小的位置或与图像边界的距离。此外,如图10所示,我们的性能不会随着孔的大小增加而发生灾难性的恶化。然而,我们的方法的一个局限性在于,它对于一些结构疏松的图像(例如图11中的门上的条)大多数方法,在最大的孔上挣扎。 

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

图9. CelebA-HQ测试结果


论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

图10.孔洞区域从左到右的各种扩张的修复结果:分别扩大0,5,15,35,55和95个像素。 顶行:输入; 最下面一行:对应的修复结果。


5.2 图像超分辨率的扩展 

我们还通过偏移像素和插入图像将我们的框架扩展到图像超分辨率任务。具体来说,给定具有高度H和宽度W以及放大系数K的低分辨率图像I,我们使用以下方式构造具有高度K * H和宽度K * W的输入I':对于I中每个像素(x, y),我们把它放在I'中的(K * x +⌊K/2⌋,K * y +⌊K/2⌋),并将该位置标记为掩膜值为1.一个示例输入设置和相应的输出K = 4可以在图12中找到。我们比较图13中K = 4的两种众所周知的图像超分辨率方法SRGAN [37]和MDSR + [38]。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

                        图11. 失败案例。 每个小组都被定为输入,我们的结果和基本事实。

论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

图12. 图像超分辨率任务的示例输入和输出。 网络输入由低分辨率图像构建,通过偏移像素并使用第5.2节中描述的方法插入孔。


论文阅读之《Image Inpainting for Irregular Holes Using Partial Convolutions》

                                图13. 与SRGAN和MDSR +进行图像超分辨率任务的比较。


致谢  我们要感谢Jonah Alben,Rafael Valle Costa,Karan Sapra,Chao Yang,Raul Puri,Brandon Rowlett和其他NVIDIA同事进行有价值的讨论,并感谢Chris Hebert提供的技术支持。


参考文献:

1.https://zhuanlan.zhihu.com/p/36116821

2.http://www.sohu.com/a/229392616_473283

3.https://zhuanlan.zhihu.com/p/37697075

4.https://zhuanlan.zhihu.com/p/36147767


相关文章: