Image Inpainting via Conditional Texture and Structure Dual Generation 论文解读和感想

Image Inpainting via Conditional Texture and Structure Dual Generation 论文解读和感想背景和动机本文是一篇2021年ICCV的关于图像inpainting的文章。从题

Image Inpainting via Conditional Texture and Structure Dual Generation 论文解读和感想

背景和动机

本文是一篇2021年ICCV的关于图像inpainting的文章。从题目就可以看出,本文依然是通过图像边缘信息来辅助图像inpainting。以往这类模型在纹理信息和结构信息修复和通常是割裂进行的,或者是先单独进行结构信息修复,在用其辅助整个图像的修复。然而本文却指出,由于在inpainting过程中,纹理信息和结构信息在修复时是相互影响的,二者应该是相互促进的关系,因此之前的研究中认为二者互补,将二者割裂来进行训练的方式不符合事实。

方法介绍

为了使得图像纹理信息的修复和结构信息的修复能够相互促进,本文提出了一种双流的网络结构(这里要注意,双流结构并不是两阶段网络结构):

如图所示,整个网络由三部分组成,分别是:①、纹理信息编解码器和结构信息编解码器;②、特征融合模块;③、鉴别器。
对于第①部分,是由两个相互交织在一起的U-Net网络组成,这个U-Net网络有两个输入,第一个输入是缺失图像和对应的mask,通过纹理编码器得到一连串不同尺度的特征图。第二个输入是缺失图像的edge图和对应的mask,通过结构编码器得到一连串不同尺度的特征图。之后纹理编码器的最后一层特征输出会进入到结构解码器中进行反卷积,并且在每一级反卷积时结构编码器相应分辨率的特征图都与之skip connections。对应的结构编码器的最后一级输出也输入到纹理解码器中,纹理信息编码器对应分辨率的特征图与之skip connections。这样,在纹理和结构信息恢复的过程中,就可以得到彼此的高维信息作为补充。
对于第②部分,其实是为了将第①部分得到的两种特征进行更深层次的融合。这一部分由Bi-directional Gated Feature Fusion (Bi-GFF)和Contextual Feature Aggregation (CFA)构成。
先来说Bi-GFF模块:Bi-GFF的目的是控制两种特征融合时的交互比例。
对于结构特征图FsF_sFs,首先将其与纹理特征图FtF_tFt concat在一起,然后输入到一个卷积网络g(.)g(.)g(.)中,我们希望得到的输出控制特征交互时FtF_tFt的强度,因此对于g(.)g(.)g(.)的输出要经过sigmoid激活转换成概率图。我们将输出的概率图称为结构特征的控制门GtG_tGt门特征融合因此得名),然后GtG_tGt作用于FtF_tFt,来确定FtF_tFt中哪些信息应该保留的多一点,哪些应该保留的少一点。最后将保留下来的信息与FsF_sFs加在一起,就获得了所谓的texture-aware structure features Fs′F'_sFs。同样的,对于纹理特征图也获得 structure-aware texture feature Ft′F'_tFt。最后,将两个输出concat在一起,得到Fb=concat(Fs′,Ft′)F_b = concat(F'_s , F'_t)Fb=concat(Fs,Ft)就是Bi-GFF模块的最终输出。
再来说CFA模块:CFA的目的是强化local特征之间的相关性,这样就可以使得整个inpainting结果变得更加和谐。CFA模块可以分为两个阶段,如图所示:


第一阶段是通过attention来加强局部特征与全局之间的联系。首先CFA通过一个卷积模块将FbF_bFb转化为一个特征图FFF,之后FFF被分割为一堆3×33 \times 33×3的patch。我们将这些patch做归一化内积:

获得第iii个patch和第jjj个patch的相关性。我们通过这个方式,可以得到一个关于所有patch的相似性矩阵。由于这个相似性矩阵后面要被当做attention矩阵来用,因此我们要对其进行列sigmoid:
之后,我们依照这个attention矩阵重建所有的patch:

这一步的意思就是每一个patch都依照attention矩阵,通过NNN个patch(包括自身)的加权和的形式重新获得,我们将重新获得的patch再还原成特征图FrecF_{rec}Frec。然后是第二阶段,通过多尺度的方式对特征进行再次聚合。FrecF_{rec}Frec通过四种不同扩张率1,2,4,8{1,2,4,8}1,2,4,8的扩张卷积(个人认为这个比例选择的不好,根据常识,有着大于1的公约数的扩张卷积组合会造成盲区),获得四种不同尺度的特征图Frec1,Frec2,Frec4,Frec8F^1_{rec}, F^2_{rec}, F^4_{rec}, F^8_{rec}Frec1,Frec2,Frec4,Frec8,同时构建一个简单的生成器GwG_wGw用来生成上面四种特征图的权重图W1,W2,W3,W4=Slice(Gw(Frec)){W_1, W_2, W_3, W_4}=Slice(G_w(F_{rec}))W1,W2,W3,W4=Slice(Gw(Frec))。最后通过公式:

将不同尺度的特征图进行聚合,就获得了CFA的最终输出。
对于第③部分没什么好说的,就是简单的双流鉴别器,同时接受生成图像和生成的结构图,并将提取的特征concat在一起来判别真假。
对于损失部分,都是比较常规的损失:重构、感知、风格、对抗。唯一值得提一下的是本文额外引入了所谓的Intermediate Loss用来监督第①部分的两个生成特征图:

其中Ps(.)P_s(.)Ps(.)Pt(.)P_t(.)Pt(.)是两个简单的残差块。由于结构特征图是0-1图,因此用二分类交叉熵来约束。

总结

这篇论文内容挺多,值得简单的总结一下:
1、首先本文使用的双流网络结构让人眼前一亮,相当于编码阶段提取对应的纹理特征和结构特征,解码阶段将另外一种特征的高纬特征用于辅助解码。然而有一点值得思考:在编码阶段,对于结构特征过深的下采样(本文最后编码器输出的特征分辨率是2×22 \times 22×2)可能有利于保留全局结构,对于纹理特征是否已经被压缩的难以利用了?
2、在CFA的第一阶段,使用内积的方式计算相似度矩阵,假设F∈Rc,w,hF \in R^{c,w,h}FRc,w,h,则在这一步的计算量就是O(c×hw/9×hw/9)O(c \times hw/9 \times hw/9)O(c×hw/9×hw/9)。是否有其他方式降低这一步的计算量?

发布者:admin,转转请注明出处:http://www.yc00.com/web/1755047519a5232927.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信