提出了一种基于图像内容和纹理约束联合优化的多尺度神patch合成方法,该方法不仅保存了图像的上下文结构而且通过匹配和采用深度神经分类网络的中间层特征的相似性来产生高频细节。
现有的方法修补图像的方法有两类:
第一类依赖于纹理合成技术,这种方法修补缺失区域通过周围的区域来扩张纹理
缺点:这类的方法擅长传播高频的纹理信息,但是不能够捕获图片的语义和全局结构信息。
第二类采用数据驱动的方式修复图片,充分利用外部的大型数据集。这些方法假设被相似上下文包围的区域可能拥有相似的内容.
上下文编码器,结合 L 2 L_2 L2损失和生成对抗损失去直接预测缺失的像素。能够很好的预测图像的结构并且快速推理。尽管结果很好,但是这种方法有时会缺失精细的纹理细节,会导致破损区域的周边产生视觉上的人造假象。并且不能处理大像素的图片。
本文的动机:
本文是基于上下文编码器进行改进的
提出了混合的优化方法:利用 cnn 的编码解码的预测能力和神经网络patch生成真实高频细节的能力。将encoder-decoder的预测作为全局内容上的约束,而缺失区域和已知区域的局部神经patch的相似性作为纹理约束。
内容约束可以训练一个类似于Context Encoder的内容预测网络,纹理约束是用缺失区域的周围进行建模的,使用的是来自预训练的分类网络的中间特征图的patch.
为了处理高像素中的较大缺失的图片,提出了一种多尺度的神经网络patch合成方法:
假设测试图片是 512X512,hole在图片的中间为256x256.然后用步长为2, 每次下采样为原图的一半,创建3层的金字塔结构。那么最小像素的图片就是128x128和64x64的hole.然后开始从粗到细的填洞任务。
首先训练全局的内容网络f,该网络的输入是一张图片,缺失区域用平均值填充。一旦内容网络被训练好,将网络的输出 f ( x 0 ) f(x_0) f(x0)作为初始的内容约束加入联合优化。
为了优化纹理项,将图片x输入预训练好的 VGG 网络(局部纹理网络),在预选确定好的网络特征层上:迫使3x3神经网络patch在有洞的区域和无洞区域的相似性。
该方法提出的框架应用于高分辨率的图像修复问题采用多尺度的方法,对一张带有较大破损的高分辨率的图片,首先下采样图片,使用预训练好的内容网络获取参考的内容,基于参考内容来优化wrt 内容和纹理约束在低分辨率上。优化的结果被上采样,作为精细尺度修复的初始值。在实际操作中,对于512x512是图片采用3个尺度。
输入图片x,输出图片为 x 0 x_0 x0,R表示x的缺失区域, R ϕ R^\phi Rϕ表示在vgg-19中的特征图 ϕ ( x ) \phi(x) ϕ(x)的相应区域, h ( . ) h(.) h(.)定义为对子图或子特征图的提取操作。h(x,R)返回x的R区域的颜色内容。 h ( ϕ ( x ) , R ϕ ) h(\phi(x),R^\phi) h(ϕ(x),Rϕ)返回特征图 ϕ ( x ) \phi(x) ϕ(x)的 R ϕ R^\phi Rϕ区域的内容。
总损失包含三项,即内容网络(L2损失)、纹理损失和TV损失,以上是最小化的联合损失函数。上述的i是尺度的数量,本文使用了3个尺度,x为ground truth图像(没有缺失)。最后一项是总的变异损失项,在图像处理中常用来保证图像的平滑。
###3.3 The Content Network
对缺失区域采用 L 2 L_2 L2损失和生成对抗损失:
1. L 2 L_2 L2损失如下公式:
L L 2 ( x , x g , R ) = ∣ ∣ f ( x ) − h ( x g , R ) ∣ ∣ 2 2 L_{L_2}(x,x_g,R)=||f(x)-h(x_g,R)||^2_2 LL2(x,xg,R)=∣∣f(x)−h(xg,R)∣∣22
x是带破损的输入图片, x g x_g xg是真实图片在R区域的子图。
2.生成对抗损失:
L a d v ( x , x g , R ) = m a x E x ∈ X [ l o g ( D ( h ( x g , R ) ) ) + l o g ( 1 − D ( f ( x ) ) ) ] L_{adv}(x,x_g,R)=maxE_{x\in X}[log(D(h(x_g,R)))+log(1-D(f(x)))] Ladv(x,xg,R)=maxEx∈X[log(D(h(xg,R)))+log(1−D(f(x)))]
D是鉴别器。
总损失:
L = λ L l 2 ( x , x g , R ) + ( 1 − λ ) L a d v ( x , x g , R ) L=\lambda L_{l2}(x,x_g,R)+(1-\lambda)L_{adv}(x,x_g,R) L=λLl2(x,xg,R)+(1−λ)Ladv(x,xg,R)
本文的实验中 λ \lambda λ=0.999
首先,将图像输入预先训练好的VGG-19网络,得到relu3_1和relu4_1层(中间层)的特征映射。然后,他们将特征映射分为两组,一组是空洞区域( R ϕ R^{\phi} Rϕ),另一组是外部区域(即有效区域)。在孔洞区域内,每个局部特征patch P的大小为s x s x c (s为空间大小,c为特征映射数量)。他们所做的是找到孔洞区域外最相似的patch,然后计算每个局部patch及其最近的邻居的L2的平均距离。
| R ϕ R^{\phi} Rϕ|为在区 R ϕ R^{\phi} Rϕ域内采样的patch总数,P_i为以i为中心的局部patch, nn(i)计算为:
- [1] High-Resolution Image Inpainting using Multi-Scale Neural Patch Synthesis
- [2] [使用多尺度patch合成来做高分辨率的图像复原](https://mp.weixin.qq.com/s?__biz=Mzg5ODAzMTkyMg==&mid=2247494334&idx=2&sn=7954763a1e6b53fe384eb17d97a0ecb8&chksm=c06a62e3f71debf50f82afafc8e5739568ce4f11b327c6c09ffdb5c05658c032e02b9b00b371&scene=21#wechat_redirect)