图像修复DeepFillv2:Free-Form Image Inpainting with Gated Convolution(ICCV2019)

Paper:https://arxiv.org/pdf/1806.03589.pdf
Code:https://github.com/JiahuiYu/generative_inpainting
在这里插入图片描述

普通CNN在inpainting的弊端

普通卷积的权重共享无差别的滑过所有pixels或feature。并不会区分是valid的或是带修补区域的,一并做统一处理。而待修补区域部分本身是没有语义信息的,是invalid,和已知区域做一样的处理是不合适的。通常会导致视觉伪影,颜色差异,模糊和明显的边缘反应。

Partial convolution

Paper:Partial Convolutions for Image Inpainting
参考博客
为了解决上述普通卷积带来的影响,曾有人提出过 partial convolution的方案,即每次卷积前先乘以mask部分,即只输入带语义部分。
其公式如下:相对于普通卷积的 x = W T X + b x = W^TX+b x=WTX+b,其在输入前多了个点乘Mask的过程, s u m ( 1 ) s u m ( M ) sum(1) \over sum(M) sum(M)sum(1)用于调整有效输入,即求平均。
x ′ = { W T ( X ⊙ M ) sum ⁡ ( 1 ) sum ⁡ ( M ) + b ,  if  sum ⁡ ( M ) > 0 0 ,  otherwise  x^{\prime}=\left\{\begin{array}{ll} \mathbf{W}^{T}(\mathbf{X} \odot \mathbf{M}) \frac{\operatorname{sum}(\mathbf{1})}{\operatorname{sum}(\mathbf{M})}+b, & \text { if } \operatorname{sum}(\mathbf{M})>0 \\ 0, & \text { otherwise } \end{array}\right. x={WT(XM)sum(M)sum(1)+b,0, if sum(M)>0 otherwise 
但是随着网络深度的增加,其感受野也在持续增加,特征映射回输入。本来无语义的invalid部分也慢慢变成valid部分。此时若从头到尾使用相同的Mask就不合适了,而且其输出结果待修复处就没得到任何信息了(被Mask抹掉了)。因此随着网络深度的增加,Mask也一直在更新。其更新规则如下式。
m ′ = { 1 ,  if  sum ⁡ ( M ) > 0 0 ,  otherwise  m^{\prime}=\left\{\begin{array}{ll} 1, & \text { if } \operatorname{sum}(\mathbf{M})>0 \\ 0, & \text { otherwise } \end{array}\right. m={1,0, if sum(M)>0 otherwise 
就是一个形态学膨胀的过程,其更新思路应该也是和形态学膨胀类似。

Partial convolution缺陷

列出了3点缺陷

  1. 若要在修复过程中可交互生成指定的外轮廓,这部分算valid还是invalid不能定义。
  2. mask更新一直是一个形态学膨胀过程,直至最后变成全1的过程,则深层网络时,对于输入的每个feature到底是指前景还是背景,无法分辨。
  3. (文中写的一堆,不是很清楚作者要表达的意思,可能就是mask更新时,无论valid pixel数量为1还是为9,都一样的更新为1,即公式中的 i f   s u m ( M ) > 0   u p d a t e   1 if \ sum(M)>0 \ update \ 1 if sum(M)>0 update 1
    在这里插入图片描述
    对于上述缺陷,提出gate convolution(Mask更新由网络去学习)

Gated Convolution

Gate和Mask差不多一个意思,都是类似一个开关控制通道是否开通的意思一样。不同的是Maks是一个{0,1}二值模板,而文中的Gate是一个[0,1]中的连续值,相当于soft版本。
在这里插入图片描述
在这里插入图片描述
与Mask不同的是,gate是动态生成mask的过程。实验中可视化时发现Gate Conv不仅可以解决上述的Partial Conv的不足之处,在深层网络的一些channel中,还得到了语义分割信息(可能是inpainting学习过程中,学到了语义信息。但这个不一定是Gate Conv带来的吧?Gate是作者给予的解释。但在网络看来就是2路卷积,唯一不同的只有激活函数)

Spectral-Normalized Markovian Discriminator (SN-PatchGAN)

之前的填补都是矩形区域,可以把该区域直接输入GAN的discriminator中,用GAN来增强inpainting效果。但GAN的discriminator是个分类器,输入为一张图片。现在输入换成了各种不规则形状的填补区域。因此提出SN-PatchGAN Loss。
在这里插入图片描述
L G = − E z ∼ P z ( z ) [ D s n ( G ( z ) ) ] L D s n = E x ∼ P data ( x ) [ Re ⁡ L U ( 1 − D s n ( x ) ) ] + E z ∼ P z ( z ) [ Re ⁡ L U ( 1 + D s n ( z ) ) ] \mathcal{L}_{G}=-\mathbb{E}_{z \sim \mathbb{P}_{z}(z)}\left[D^{s n}(G(z))\right] \\ \mathcal L_{D^{s n}}=\mathbb E_{x \sim P_{\text {data}(x)}}\left[\operatorname{Re} L U\left(1-D^{s n}(x)\right)\right]+\mathbb E_{z \sim P_{z}(z)}\left[\operatorname{Re} L U\left(1+D^{s n}(z)\right)\right] LG=EzPz(z)[Dsn(G(z))]LDsn=ExPdata(x)[ReLU(1Dsn(x))]+EzPz(z)[ReLU(1+Dsn(z))]
D s n D^{sn} Dsn:spectral-normalized discriminator

Extension to User-Guided Image Inpainting

自定义轮廓,其输入为5通道,RGB+mask+sketch。其中sketch在训练时由ground truth边缘检测器HED生成。好像没加特定的loss去优化这部分。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值