Free-Form Image Inpainting with Gated Convolution(2018)论文笔记

一、摘要

本文提出了一种生成式图像修复系统,利用自由形式的掩码和引导完成图像。该系统基于从数百万张图像中学习的门控卷积,而无需额外的标记工作。所提出的门控卷积解决了普通卷积将所有输入像素视为有效像素的问题,通过为所有层的每个空间位置的每个通道提供可学习的动态特征选择机制来推广部分卷积。此外,由于自由形式掩码可能出现在任何形状的图像中的任何位置,因此为单个矩形掩码设计的全局和局部GAN不适用。因此,本文提出了一种基于块的GAN损失,称为SN-PatchGAN,通过在密集图像块上应用谱归一化鉴别器。SN-PatchGAN配方简单,训练快速稳定。本文的修复网络将上下文注意力模块集成在同一细化网络中,以更好的捕获长期依赖关系。(图像修复的两个实际用例:对象去除和创造性编辑)

二、介绍

两种广泛的图像修复方法

①使用低级图像特征的补丁匹配。可以合成合理的平稳纹理,但在复杂场景、人脸和物体等非平稳情况下通常会出现严重失败。

②使用深度卷积网络的前馈生成模型。可以利用从大规模数据集中学习的语义,以端到端方式合成非平稳图像中的内容。

卷积对比

Vanilla(普通)卷积的缺点:空间共享卷积滤波器将所有输入或特征视为相同有效像素或特征,对于修复孔洞,每层的输入有孔外的有效像素/特征和掩码区域中无效像素/特征组成。普通卷积对所有有效、无效、混合的像素/特征应用相同的滤波器,导致在不顾则掩码上测试时出现视觉伪影(颜色差异、模糊、孔周围有明显的边缘响应)。——提出了部分卷积。

部分卷积:卷积被掩码并归一化,仅以有效像素为条件 ,然后是一个基于规则的掩码更新步骤来更新下一层的有效位置。部分卷积将所有输入位置分类为无效或有效,并对所有层的输入乘以0或1掩码。掩码也可以看作是单个不可学习的特征门控通道1。局限性:①考虑网络不同层的输入空间位置,它们可能包括(1)输入图像的有效像素,(2)输入图像的掩码像素,(3)感受野覆盖输入图像有效像素的神经元,(4)感受野覆盖不同数量输入图像有效像素的神经元(这些有效图像像素也可能具有不同的相对位置),(5)深层合成像素。将所有位置分类为无效或有效会忽略这些重要信息。

②如果我们扩展到用户引导的图像修复,用户在掩码内提供稀疏草图,这些像素位置应该被认为是有效的还是无效的?如何正确更新下一层的掩码。

③对于部分卷积,“无效”像素将逐层逐渐消失,基于规则的掩码将是所有在深层的像素。然而,为了在孔中合成像素,这些深层可能还需要当前位置是在孔内还是在孔外的信息。全一掩模的部分卷积不能提供这样的信息。

④每一层的所有通道共用同一个掩码,限制了灵活性。从本质上讲,部分卷积可以看作是不可学习的单通道特征硬门控。

门控卷积:允许网络自动学习掩码,掩码可能会根据输入图像中当前位置是否被掩码而具有不同的值(网络会为每个空间位置分配软掩码值),即使在深层中也是如此。它为每个通道和每个空间位置(例如,内部或外部掩码,RGB通道或用户引导通道)学习动态特征门控机制。首先使用输入特征来计算门控值g = σ(wgx)的公式。σ时sigmoid函数,wg是可学习参数。最终输出是学习到的特征和门控值y = φ(wx)⊙g的乘积,其中φ可以是任何激活函数。门控卷积很容易实现。优点:(1)掩码具有任意形状,(2)输入不再是简单的带有掩码的RGB通道,而是具有稀疏草图等条件输入时,性能明显更好。它不仅可以根据背景,掩码,草图学习选择特征,而且还可以考虑某些通道的语义分割。即使在较深的图层中,门控卷积在单独的通道中学习突出显示掩码区域和草图信息,以更好地生成修复结果。

Sigmoid函数

也称为S型生长曲线,由于其单增以及反函数单增等性质,被用作神经网络的激活函数,将变量映射到0,1之间。也叫做Logistic函数,用于隐层神经元的输出,取值范围为(0,1),他可以将一个实数映射到(0,1)的区间,可以用来做二分类,在特征相差比较复杂,或是相差的不是特别大时,效果比较好。

优点:平滑,易于求导。

缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法,反向传播时容易出现梯度消失的情况,从而无法完成深层网络的训练。

表达式:

级数表示:

一个节点的激活函数定义了该节点在给定的输入或者输出的集合下输出。只有非线性激活函数才允许这种网络仅使用少量节点来计算非凡问题。当sigmoid函数输出的值趋于正无穷时,梯度才会趋近于0,从而发生梯度弥散现象,输出恒为正值,不是以0为中心的,这会导致权值更新时只能朝一个方向更新,从而影响收敛速度。

比较方法:

PM:PatchMatch  GL:Global&Local  CA:ContextAttention  PC:PartialConv

Non-Local:非局部算法

贡献:

①引入门控卷积来学习所有层中每个位置的通道的动态特征选择机制,显著的提高了自由形式掩码和输入的颜色一致性和修复质量。

②提出了一种更实用的基于块的GAN判别器,SN-PatchGAN用于自由形式的图像修复。他简单快速,可以产生高质量的修复结果。

③将修复模型扩展到交互式模型,使用户能够以草图为指导来获得更多用户想要的修复结果。

④在包括Places2自然场景和CelebA HQ人脸在内的基准数据集上实现了比以往技术状态更高质量的自由形式修复,可以帮助用户快速去除分散注意力的物体,修改图像布局,清除水印和编辑图像中的人脸。

三、相关的工作

自动图像修复

《全局和局部一致的图像补全》提出了一种具有全局和局部一致性的全卷积图像修复网络来处理各种数据集上的高分辨率图像。然而,这种方法仍然严重依赖泊松图像混合与传统的基于补丁的修复结果。

《不规则孔洞的局部卷积修复》为了更好地处理不规则掩码,提出了部分卷积,其中卷积被掩码并重新归一化以仅利用有效像素。然后是一个基于规则的掩码更新步骤,一层一层地重新计算新的掩码。

《基于上下文注意力机制的图像修复》提出了一种端到端的图像修复模型,采用堆叠生成网络,进一步保证生成区域与周围环境颜色和纹理的一致性。此外,为了捕获长期空间依赖性,提出了上下文注意模块并将其集成到网络中,以明确地从远程空间位置借用信息。然而,这种方法主要是在大的矩形掩码上训练的,并且不能很好地在自由形式的掩码上推广。

四、方法

门控卷积

假设输入为C通道,每个像素位于(y,x)在C’通道输出映射计算为

y,x输出映射的y轴x轴,kh、kw是核大小(3*3),k’h = (kh - 1) / 2 ,

k’w = (kw - 1) / 2,w是卷积滤波器应用于输入特征映射作为输出,Iy+i,x+i是输入和输出。

对于所有空间位置(y,X),同样的滤波器被应用于在普通卷积层中产生输出。这对于图像分类和对象检测等任务是有意义的,其中输入图像的所有像素都是有效的,以滑动窗口的方式提取局部特征。然而,对于图像修复,输入包含两个区域组成,孔洞外的有效像素/特征、掩码区域中的无效像素/特征、深层中掩码区域合成像素/特征。

部分卷积(基于规则的硬门控掩码)

显而易见,gated convolution 通过Conv和sigmoid来学习一种动态特征选择机制,上图是Partial convolution ,下图是gated convolution。部分卷积的输入是两个,input image 和mask。而门控卷积是一个,它将input image 和mask 连接在一起,分两路进过Conv卷积,一个经过sigmoid,一个经过激活层,后将两个输出相乘。

门控卷积(从数据中自动学习软掩码)

公式:σ是sigmoid函数, σ(Gatingy,x)输出门控值在0和1之间。∅是任意激活函数,Wg、Wf是卷积滤波器。

Spectral-Normalized Markovian Discriminator(SN-PatchGAN)

背景:考虑自由形式图像修复的任务,其中在任何位置可能有多个具有任何形状的孔。借鉴了全局和局部GAN、MarkovianGAN、感知损失以及频谱归⼀化GAN,提出了⼀种简单有效的GAN损失SN-PatchGAN(PatchGANS和SN-GANS的结合),用于训练自由形式的图像修复⽹络。

步骤:卷积⽹络用作判别器,其中输⼊由图像、掩码和引导通道组成,输出是形状为Rh×w×c的三维特征(h、w、c分别表示通道的⾼度、宽度和通道数)。

1.如图所示,堆叠了内核⼤小为5、步长为2的六个跨步卷积,以捕获Markovian patch的特征统计。

2.然后,我们将GAN直接应用于该特征图中的每个特征元素,针对输入图像的不同位置和不同语义(在不同通道中表示),形成h × w × c个数的GAN。在训练设置中,输出映射中每个神经元的感受野可以覆盖整个输⼊图像,因此不需要全局判别器。

3.采用谱归⼀化,以进⼀步稳定GAN的训练。使用SN-GANs中描述的谱归⼀化的默认快速近似算法。

4.为了区分输⼊是真是假,我们还使用(hinge loss)铰链损失作为⽣成器。

优点:简单快速,可以产⽣⾼质量的修复结果。使用SN-PatchGAN,修复⽹络比基线模型训练得更快、更稳定。由于类似的块级别信息已经SN-PatchGAN中编码,因此不使用感知损失。修复⽹络的最终目标函数仅由逐像素的重建损失和SN-PatchGAN损失组成,默认的损失平衡超参数为1:1。

Spectral Normalization谱归⼀化

①利普希茨连续(Lipschitz continuous)

从局部看:我们可以取两个充分接近的点,如果这个时候斜率的极限存在的话,这个斜率的极限就是这个点的导数。也就是说函数可导,又是Lipschitz连续,那么导数有界。反过来,如果可导函数,导数有界,可以推出函数Lipschitz连续。

从整体看:Lipschitz连续要求函数在⽆限的区间上不能有超过线性的增长,所以这些和函数在⽆限区间上不是Lipschitz连续的。

②归一化

③GAN的Lipschitz稳定性约束

GAN好是好,但训练难,主要体现在:1)模式坍塌,即最后⽣成的对象就只有少数⼏个模式;2)不收敛,在训练过程中,判别器很早就进⼊了理想状态,总能完美分辨出真假,因此⽆法给⽣成器提供梯度信息,⽽导致训练⽆法进⾏下去。《Wasserstein GAN》⽂章中,对GAN难训练的原因做了详细的讨论,并给出⼀种新的Loss定义,即Wasserstein Distance:

只要求f (•)满⾜Lipschitz约束即可,在GAN中,判别器的映射函数可充当式中的f (•),于是加⼊此⼀约束的GAN⽹络有了⼀个新的名称:WGAN。引⼊Wasserstein Distance,将传统GAN转变为WGan是有许多好处的,因为Wasserstein Distance具有如下优点:

当 WGAN 的 Discriminator 采用了这种距离来训练后,可以消除传统GAN训练时出现的收敛问题,使训练过程变得稳定。另外,要实施此策略也很简单,只需在传统GAN的Discriminator的参数矩阵上加上Lipschitz约束即可,其它的⼏乎不用改。

WGAN首先提出Discriminator的参数矩阵需要满⾜Lipschitz约束,但其⽅法比较简单粗暴:直接对参数矩阵中元素进⾏限制,不让其⼤于某个值。这种⽅法,是可以保证 Lipschitz约束的,但在削顶的同时,也破坏了整个参数矩阵的结构——各参数之间的比例关系。针对这个问题,提出了⼀个既满⾜Lipschitz条件,又不用破坏矩阵结构的⽅法——Spectral Normalization。

④Spectral Normalization谱归⼀化

直观地来说,Lipschitz 条件限制了函数变化的剧烈程度,即函数的梯度。在⼀维空间中,很容易看出 y=sin(x) 是 1-Lipschitz 的,它的最⼤斜率是 1。

求得谱范数后,每个参数矩阵上的参数皆除以它,以达到归⼀化目的。

Hinge loss折页损失、铰链损失

可用于“最大间隔(max-margin)”分类,其著名的应用是作为SVM的目标函数(支持向量机)。

L(y) = max(0,1 - t*y),其中y是预测值(-1到1之间),t为目标值(1或-1).其含义为,y的值在-1到1之间即可,并不鼓励|y|>1,即让某个样本能够正确分类就可以了,并不鼓励鉴别器过度自信,当样本与分割线的距离超过1时并不会有任何奖励,目的是在于使分类器更专注于整体的分类误差。

从定义可以看出,损失是0,否则损失就是1 - t*y,1 - t*y作为每个分类的评分,正确分类的分值越大越好,错误的分类越小越好,当t和y符号一致(表示y分类正确),当||y||>=1时,hinge loss L(y) = 0;当符号不一致时,L(y) = 0随y线性增加。

变种:在实际应用中,一方面,预测值y并不总属于[-1,1],也可能属于其他的取值范围;另一方面,很多时候我们希望训练的时两个元素之间的相似关系,而非样本的类别得分。

L(y,y’) = max(0,margin - (y - y’)) = max(0 , margin + (y’ - y))

= max(0 , margin + y’ - y)

其中y是正确预测的得分,y’是错误预测的得分,两者的差值可能用来表示两种预测结果的相似关系,margin是一个由自己指定的安全系数,我们希望正确预测的得分高于错误预测的得分,且高出一个边界值margin。换句话说,y越高越好,y’越低越好,(y - y’)越大越好,(y’ - y)越小越好,但二者得分之差最多为margin就足够了,差距太大并不会有任何奖励,这样设计的目的在于,对于单个样本正确分类只有margin的把握就足够了,更大的把握则不必要,过分注重样本正确分类效果反而有可能使整体的分类效果变坏。分类器应该更加注重整体的分类误差。

例                                                                                                                 表示真实的类别

Cat

Car

Frog

Cat

3.2

1.3

2.2

Car

5.1

4.9

2.5

Frog

-1.7

2.0

-3.1

Losses

2.9

0

10.9

判断这类的分数

max(0 , 5.1 - 3.2 + 1) + max(0 , -1.7 - 3.2 + 1) = max(0 , 2.9) + max(0 , -3.9) = 2.9

让其他两类的分数减去真实类别的分数,相当于计算其他类与真实类之间的误差,margin取值为1,为了使训练出的分类器有更大的把握进行正确分类。

修复网络架构

网络在《Generative Image Inpainting with Contextual Attention》基础上,将普通的卷积都替换成门控卷积。网络主要由粗修复和细修复两个网络组成,其中细修复网络由两个分支构成,上面的分支包含语义信息,下面的分支为常规的编码器分支(还将上下文注意力模块集成在同一细化网络中,以更好的捕获长期依赖关系),使用一个简单的编码器-解码器网络,而不是U-Net网络。我们发现U-Net中的跳跃连接对非窄掩码没有显著影响。这主要是因为对于掩码区域的中心,这些跳跃连接的输入几乎为零,因此无法将详细的颜色或纹理信息传播到该区域的解码器。对于孔边界,我们的编解码器架构配备了门控卷积,足以产生无缝的结果。门控卷积包含了额外的参数,因此将模型宽度缩小了25%。

用户指导的图像修复

本文以草图为例,将图像修复网络扩展为一个用户引导系统。草图(或边缘)是简单和直观的用户绘制。为了在绘画系统中训练用户引导的图像,我们需要额外的约束损失来强制网络生成以用户引导为条件的结果。然而,通过像素重建损失和GAN损失的相同组合(将条件通道作为判别器的输入),能够学习条件生成网络,其中生成的结果忠实地尊重用户指导。

笔记中会参考其他博主发的资料

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值