这是一篇发表在CVPR2019上的论文。
高质量的图像修复需要用合理的内容填补损坏图像中的缺失区域。现有的方法要么通过复制图像补丁来填充区域,要么从区域上下文中生成语义一致的补丁,但是它们忽视了视觉和语义合理性都是非常重要的事实。
为了实现高质量的图像修复,必须同时考虑视觉一致性和语义连贯性。视觉一致性指的是确保修复的区域与周围的视觉内容无缝融合,使修复区域与原始图像难以区分。而语义连贯性则是指生成内容不仅在视觉上合理,而且在图像的语义上也具有连贯性,符合图像的整体语义结构。
本文采用了一种金字塔形的上下文编码器,在编码器的每个金字塔结构中,高级语义特征图包含了更抽象的语义信息,而低级特征图则包含了更具体的细节信息。通过引入注意力机制,编码器能够从高级特征图中学习到的关注点,并将这些关注点转移到低级特征图中,以增强低级特征图的表达能力。
网络结构图:
首先由带mask的图片生成金字塔结构,代码中是通过卷积实现的,由low-level pixels一步步到high-level semantics。数学表达式如下:
f
f
f代表ATN操作,官方源码如下:
# encoder
x1 = self.dw_conv01(x)
x2 = self.dw_conv02(x1)
x3 = self.dw_conv03(x2)
x4 = self.dw_conv04(x3)
x5 = self.dw_conv05(x4)
x6 = self.dw_conv06(x5)
# attention
x5 = self.at_conv05(x5, x6, mask)
x4 = self.at_conv04(x4, x5, mask)
x3 = self.at_conv03(x3, x4, mask)
x2 = self.at_conv02(x2, x3, mask)
x1 = self.at_conv01(x1, x2, mask)
再通过Attention Transfer Network (ATN),用每次生成的attention对下一层的latent feature进行填充,得到reconstructed feature。再通过decoder层:
g
g
g指的是逆卷积操作。
再将其转化成RGB图像(也是通过卷积和激活层完成的)。
损失函数:
pyramid L1 losses and an adversarial loss。
参考文献:
Learning Pyramid-Context Encoder Network for High-Quality Image Inpainting