ECCV2020 Oral|在特征层级上修复图像的纹理和结构

论文速递 黑人 ⋅ 于 7个月前 ⋅ 644 阅读

Tips
◎本文为极市开发者原创投稿,转载请注明来源。
◎极市「论文推荐」专栏,帮助开发者们推广分享自己的最新工作,欢迎大家投稿。联系极市小编(fengcall19)即可投稿~

file

论文:https://arxiv.org/abs/2007.06929
代码:https://github.com/KumapowerLIU/ECCV2020oralRethinking-Image-Inpainting-via-a-Mutual-Encoder-Decoder-with-Feature-Equalizations

这份工作的一部分是我在腾讯 AI lab实习期完成的。Image inpainting 一直是一个重要的课题,最近基于attention以及双阶段的模型非常流行,像gated conv/coherent semantic attention/edge connect/structure flow等等。图像修复的目标是重建合理的整体结构以及真实的细节(纹理),双阶段的模型往往在第一阶段得到一个coarse的图像,这个图像上的结构已经修复的不错,再在第二个阶段进行细节的修复。但是这些都是基于image level上,我们的工作想把纹理和结构的修复放在feature上,从而达到更好的效果并且在单阶段网络中实现,因为图像本就是纹理和结构组成,两者紧密相连互相影响。

所以我们的出发点就是在单阶段网络中并且在feature层级上修复图像的纹理和结构,并且将修复好的纹理和结构组成一张完整的特征图从而达到修复的效果。

Fig.1 模型结构

上图是我们的模型架构图,在CNN中,越深的卷积层代表着结构信息(高级语义信息),越浅的卷积层代表纹理以及细节信息(低层级信息)。我们利用这种概念,将编码器的特征分成两个部分(流),前3层代表纹理信息,后3层代表结构信息,前三层和后三层分别integrate起来变成32×32×256大小的卷积,其中Fte代表前三层的integrated features也就是充满纹理的feature, Fst代表后三层的integrated features也就是充满结构信息的feature.

那么如何去修复这些feature的孔洞区域?我们将Fst和Fte分别通过多尺度修复模块来修复孔洞区域,具体来说多尺度修复由三个不同卷积大小的partial conv[1]流组成,他们的kernel size分别是3,5,7, Fte和Fst经过多尺度修复模块后就是图中的Ffst以及Ffte.

那么如何能够保证这些feature能够真正关注纹理或者结构呢?我们用了最简单的constrain,我们将Ffst以及Ffte用1×1的卷积映射到RGB层(Ffst映射后的图为Iost,Ffte映射后的图为Iote)并于ground truth计算L1 loss,其中Iost的ground truth是结构图(Ist),这张结构图是将原图通过RTV[2]后抹去纹理生成的,而Iost的ground truth就是原图(Igt, 有纹理和细节的图)。这种constrain如下图所示:

那么通过这种设计,我们的解码器就分出两个流,一个是结构流一个是纹理流,这两个流分别通过多尺度修复模块进行孔洞填充,并且分别有自己的constrain保证孔洞填充效果并且促使每个流关注纹理或者结构。

Feature Equalizations

结构和纹理的feature到此时一直是分开的并且都被填充完了,但是一张图是由结构和纹理一起构成,如何将其融合呢并且形成一张完整的特征图呢?我们提出了特征均衡化来解决这个问题(Feature Equalizations).如Fig.1所示,我们将Ffst以及Ffte拼接并且通过1×1的conv后得到了一个简单融合Fsf, 接着Fsf通过我们的特征均衡化来进行更好的融合,特称均衡化包括两个维度的均衡,一个是channel上的一个是spatial上的,其中channel上的均衡我们通过SE-block实现,因为其中的attention值是由Fsf得到,而Fsf已经包含了结构和纹理的特征信息,所以这些attention是由结构和纹理信息一起得来从而保证了均衡化。在spatial上,我们提出了双边激活函数 bilateral propagation activation function (BPA). 我们从双边激活函数得到启发,对于每个特征点,我们利用周围的特征点(3×3)以及全局的特征点(32×32)来融合成新的特征点. 具体来说:

bilateral propagation activation function

其中 $y_i^s$ 就是在spatial上融合得到特征点而 $y_i^r$ 就是在range上融合得到的特征点,这里的spatial和range的概念与双边滤波中的一样。其中我们定义spatial的范围为全图,也就是当前特征点是通过全图所有特征点融合生成,每个特征点的weight是通过距离来计算,近大远小(这里我们用高斯分步来计算)。在range上我们定义范围为3×3,当前特征点(中心点)由周围9个特征点(包括当前特征点本身)融合得到,这些特征点的weight通过与中心点做点极得到。得到 $y_i^s$ 和$y_i^r$之后,我们利用1×1的卷积对这两个特征点进行融合。 通过这种方式,当前特征点可以由周围的以及全局的特征点构成,保证了局部以及全局的特征一致性。从而可以保证孔洞里面的内容连贯,并且保证孔洞周围与background的一致性。

特征均衡实现流程

结果展示:

真实数据上的结果展示:

代码地址​github.com论文地址​arxiv.org

黑人

成为第一个点赞的人吧 :bowtie:
回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!