Free-Form Image Inpainting with Gated Convolution

Free-Form Image Inpainting with Gated Convolution

code&paper:https://github.com/JiahuiYu/generative_inpainting 

基于GAN的图像修复算法,效果非常好。

主要贡献点:

1.提出了新的Gated Convolution

2.提出了新的SN-Parch GAN 效果稳定,且易训练

3.新的CNN架构

Free-Form Image Inpainting with Gated Convolution_第1张图片

在以往的修复方法中,传统卷积对有效区域和无效区域都是以同样的对待方式,并对其进行计算,所以导致很多人工的、不自然的效果产生。这个问题有相应的提出的解决方法,基于Partial convolution 的卷积核给出了 有效和非有效区域在这个卷积神经网络中的所有层中,这样能够很好区分。但是这种不变的模板会随着网络的加深,覆盖到更多有效区域和无效区域,这种硬编码方式不够灵活。而且在如果用户想要输入 sketch 的时候,也一定会产生相应的影响。

而本文提出的gated conv 容易实现,并且输入的mask 可以是任意形状,并且可以在很多中间层中嵌入。让网络自动得学习每一层得mask内得内容,使之能够区分是否是缺失区域内得还是确实区域外的。通过在不同层中的不同位置,动态的特征选择机制,来增强颜色一致性和修复效果。

文章认为,在分类和检测中,所有的特征都被默认为是有效的,但是在inpainting 任务中,这个情况就不行,因为mask内的点可能是无效的点(在浅层中),或者是生成的点(在深层中)

Free-Form Image Inpainting with Gated Convolution_第2张图片

如上图所示,基于Partial convolution 利用硬编码的方式,来确定后面层的不同特征位置区域对应的是否是mask 还是 原图(valid points),但是这种方式不够灵活,且区分度不够好,其公式如下所示:

Free-Form Image Inpainting with Gated Convolution_第3张图片

 是对应的输出特征图对应在(x,y)的位置,W表示卷积核,I表示输入特征或张量,M表示Mask,可以看到,这里只是根据计算时候覆盖的位置中,mask只有有一个不为0(valid points,有效区域)的时候,这个位置依然是0,所以就会出现下面的问题:

for example, 1 valid pixel and 9 valid pixels are treated as same to update current mask

而 gating mask 的公式如下:

Free-Form Image Inpainting with Gated Convolution_第4张图片
比较好实现,就是在原先卷积的基础上,再加一个对应张量区域的卷积,然后进行点乘,就是sigmoid 函数,可以看上面标出的FIg2 .这个多出来的张量就是对学习到的还是原图输入的区域进行区分,对每个张量的位置上都有【0-1】这个范围,从而实现了位置信息上的门控(gating)的效果

这种方式呢,就能很好得对 中间特征图的  缺失区域、有效区域和深层卷积中的生成区域进行区分,从而优化网络修复效果。

Free-Form Image Inpainting with Gated Convolution_第5张图片

最后架构如上所示,并且,在SN patch-gan 将输出改成了三维,并结合收到 global and local GANs [15], Marko- vianGANs [16, 21], perceptual loss [17] and recent work on spectral-normalized GANs 的启发,进行一个改进从而增加语义信息的识别(这里我没看出来语义体现在哪里)

Free-Form Image Inpainting with Gated Convolution_第6张图片

总的来说,本文的gating convolution 考虑到用户输入的情况,并让网络进行动态调整,思路出发点很好。

你可能感兴趣的:(论文解读,深度学习,生成器,卷积,网络,算法)