文章目录
-
- 1. Abstract
- 2. Introduction
-
- 2.1 Context Encoder
- 2.2 our method
- 2.3 Main contributions of this paper
- 3. The Approach
-
- 3.1 Framework Overview
- 3.2 The Joint Loss Function
- 3.4 The Texture Network
- 总结:
- 总结:
- 参考文献
1. Abstract
提出了一种基于图像内容和纹理约束联合优化的多尺度神patch合成方法,该方法不仅保存了图像的上下文结构而且通过匹配和采用深度神经分类网络的中间层特征的相似性来产生高频细节。
2. Introduction
现有的方法修补图像的方法有两类:
-
第一类依赖于纹理合成技术,这种方法修补缺失区域通过周围的区域来扩张纹理
缺点:这类的方法擅长传播高频的纹理信息,但是不能够捕获图片的语义和全局结构信息。
-
第二类采用数据驱动的方式修复图片,充分利用外部的大型数据集。这些方法假设被相似上下文包围的区域可能拥有相似的内容.
2.1 Context Encoder
上下文编码器,结合L2L_2L2?损失和生成对抗损失去直接预测缺失的像素。能够很好的预测图像的结构并且快速推理。尽管结果很好,但是这种方法有时会缺失精细的纹理细节,会导致破损区域的周边产生视觉上的人造假象。并且不能处理大像素的图片。
本文的动机:
本文是基于上下文编码器进行改进的
- context Encoder 编码器并不完美,1.生成的像素的纹理细节可以进一步改善。2.无法处理高分辨率图像
- 神经网络风格迁移(Neural style Transfer可以用来借鉴,将一张图像的样式转移到另一张具有相同内容的图像上,本文采用图像风格转移的算法对生成的像素进行纹理增强。
2.2 our method
提出了混合的优化方法:利用 cnn 的编码解码的预测能力和神经网络patch生成真实高频细节的能力。将encoder-decoder的预测作为全局内容上的约束,而缺失区域和已知区域的局部神经patch的相似性作为纹理约束。
内容约束可以训练一个类似于Context Encoder的内容预测网络,纹理约束是用缺失区域的周围进行建模的,使用的是来自预训练的分类网络的中间特征图的patch.
为了处理高像素中的较大缺失的图片,提出了一种多尺度的神经网络patch合成方法:
假设测试图片是 512X512,hole在图片的中间为256x256.然后用步长为2, 每次下采样为原图的一半,创建3层的金字塔结构。那么最小像素的图片就是128x128和64x64的hole.然后开始从粗到细的填洞任务。
2.3 Main contributions of this paper
- 提出了一个联合优化框架:通过使用卷积神经网络建模全局内容约束和局部的纹理约束来对图像进行修复
- 在基于上述的框架下,进一步介绍了多尺度神经网络patch合成算法在高像素图片上的修复。
- 发现了来自分类网络的中间层特征可以被用来合成真实图片的内容和纹理,而不只是先前用来做图像的风格迁移。
3. The Approach
3.1 Framework Overview
- holistic content term:是全局结构约束,捕获图像的语义和全局结构信息
- local texture term:局部的纹理信息统计,通过预训练的VGG网络来得到,确保缺失区域的精细的细节和其他部分保持相似。使用神经网络的patch来定义相似性,此前这个被用来捕获图像的风格。
首先训练全局的内容网络f,该网络的输入是一张图片,缺失区域用平均值填充。一旦内容网络被训练好,将网络的输出f(x0)f(x_0)f(x0?)作为初始的内容约束加入联合优化。
为了优化纹理项,将图片x输入预训练好的 VGG 网络(局部纹理网络),在预选确定好的网络特征层上:迫使3x3神经网络patch在有洞的区域和无洞区域的相似性。
该方法提出的框架应用于高分辨率的图像修复问题采用多尺度的方法,对一张带有较大破损的高分辨率的图片,首先下采样图片,使用预训练好的内容网络获取参考的内容,基于参考内容来优化wrt 内容和纹理约束在低分辨率上。优化的结果被上采样,作为精细尺度修复的初始值。在实际操作中,对于512x512是图片采用3个尺度。
3.2 The Joint Loss Function
输入图片x,输出图片为x0x_0x0?,R表示x的缺失区域,R?R^\phiR?表示在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^\phiR?区域的内容。
总损失包含三项,即内容网络(L2损失)、纹理损失和TV损失,以上是最小化的联合损失函数。上述的i是尺度的数量,本文使用了3个尺度,x为ground truth图像(没有缺失)。最后一项是总的变异损失项,在图像处理中常用来保证图像的平滑。
###3.3 The Content Network
对缺失区域采用L2L_2L2?损失和生成对抗损失:
1.L2L_2L2?损失如下公式:
LL2(x,xg,R)=∣∣f(x)?h(xg,R)∣∣22L_{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是带破损的输入图片,xgx_gxg?是真实图片在R区域的子图。
2.生成对抗损失:
Ladv(x,xg,R)=maxEx∈X[log(D(h(xg,R)))+log(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=λLl2(x,xg,R)+(1?λ)Ladv(x,xg,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
- 像前面所述的一样,内容网络就是一个上下文编码器,先独立训练内容网络,训练后的内容网络的输出将用于优化整个提出的框架。
- 如图1中的内容网络的结构图,与原始的Context Encoder有一点不同:
- ? 中间的通道全连接层被标准的全连接层取代
- 所有的 Relu激活函数层或者Leaky ReLU激活函数层被ELU层代替。认为ELU比ReLU和Leaky ReLU能更好的处理大量的负神经网络。
3.4 The Texture Network
- 纹理网络的目标是确保生成像素的细节与有效像素细节相似
- 一定程度上,分类网络的不同层次的特征图代表的了图像的风格,本文采用预训练好的vgg19的网络,使用的relu3_1和relu4_1层来计算。
首先,将图像输入预先训练好的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)计算为:
总结:
- 该论文是粗到细网络的早期版本,首先对缺失部分进行重建,修复的部分尽可能的保证像素级别重建精度,是为了保证结构的正确性,然后对重构的部分进行纹理修复,使得修复后的图片具有好的视觉效果
6)]公式.png)
总结:
- 该论文是粗到细网络的早期版本,首先对缺失部分进行重建,修复的部分尽可能的保证像素级别重建精度,是为了保证结构的正确性,然后对重构的部分进行纹理修复,使得修复后的图片具有好的视觉效果
- 纹理损失最开始是用在图像风格迁移领域的,本文的工作证明,通过这一损失,我们可以获取更清晰的生成图像。
参考文献
- [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)