计算机系统应用教程网站

网站首页 > 技术文章 正文

使用多尺度patch合成来做高分辨率的图像复原

btikc 2024-09-06 18:07:28 技术文章 16 ℃ 0 评论

作者:Chu-Tak Li

编译:ronghuaiyang

导读

从粗到细的进行图像复原,可以实现更高分辨率,更真实的图像复原。

在上一篇文章中,我们介绍了图像修复和第一个基于GAN的修复算法Context Encoders。这一次,我们将深入研究另一种修复方法,它可以被视为上下文编码器的改进版本。

回顾

在这里,我简要回顾一下我们在上一篇文章中学到的东西。

  • 对图像或图像上下文的深刻语义理解对修复任务很重要,而(通道方面的)全连接层是捕捉图像上下文的一种方法。
  • 对于图像修复,填充图像的视觉质量比像素级重建精度更重要。更具体地说,因为对于生成的像素没有标准答案(我们在现实世界中没有ground truth),我们只是想要看起来真实的填充图像。

动机

  • 现有的修复算法由于内存限制和高分辨率图像的训练困难,只能处理低分辨率图像。
  • 虽然目前最先进的修复方法Context Encoders能够成功回归(预测)缺失的部分,并具有一定的语义正确性,但如图1所示,预测像素的纹理和细节仍有改进的空间。

介绍

  • 上下文编码器并不完美。i)生成的像素的纹理细节可以进一步改善。ii)无法处理高分辨率图像。
  • 与此同时,Neural Style Transfer是一个热门话题,我们希望将一张图像的样式(样式图像)转移到另一张具有相同内容的图像(内容图像),如下面的图2所示。
  • 注意,纹理和颜色可以被视为一种风格。本文采用风格转换算法对生成的像素进行纹理细节增强。

方案

  • 采用上下文编码器对缺失部分进行预测,得到预测的像素。
  • 然后,他们对预测像素和有效像素使用样式转移算法。主要思想是将最相似的有效像素的样式迁移到预测的像素,以增强纹理细节。
  • 在他们的公式中,他们假设测试图像的大小总是512x512,中心缺失256x256的洞。他们用三层金字塔的方式来处理这个高分辨率的修复问题。输入端首先被调整为128x128和一个64x64的中心孔,以实现低分辨率的重建。然后,将填充好的图像上采样到256x256,填充一个128x128的粗孔,进行第二次重构。最后,填充后的图像再次向上采样到512x512,最后一次重构时填充了256x256的孔(也可以称之为细化)。

贡献

  • 提出一个结合了上下文编码器和神经风格转换技术的框架。
  • 提出处理高分辨率图像的多尺度方法。
  • 实验表明,可以使用风格转换技术来增强生成的像素的纹理细节。

方法

图3显示了论文中提出的框架,实际上它并不难理解。内容网络是稍微修改过的上下文编码器,纹理网络是在ImageNet上预训练的VGG-19网络。对我来说,这是一个可以在多尺度上运行的粗到细网络的早期版本。本文的主要关注点是他们如何优化模型(即损失函数的设计)。

内容网络

  • 如前所述,内容网络就是一个上下文编码器。他们首先独立训练内容网络。然后,训练后的内容网络的输出将用于优化整个提出的框架。
  • 参考图3中内容网络的结构,与原始的上下文编码器有两个不同之处。i)中间的通道全连接层被标准全连接层取代。ii)所有的ReLU激活函数层或Leaky ReLU激活函数层被ELU层代替。作者声称,ELU比ReLU和Leaky ReLU能更好地处理大量的负神经响应。注意,ReLU只允许正响应通过。
  • 他们用与上下文编码器相同的方式训练内容网络。L2损失和对抗性损失的组合。

纹理网络

我将尝试在这里解释更多关于纹理网络的内容,因为它与神经风格变换的主题有关。

  • 纹理网络的目标是确保生成的像素的细节与有效像素的细节相似(例如,我们希望图像的样式/纹理一致)。
  • 在一定程度上,网络内不同层次的特征映射代表了图像的风格。换句话说,给定一个训练好的网络,如果两幅图像在网络内部有相似的特征映射,我们可以说这两幅图像有相似的图像风格。说实话,这是一种过于简单化的说法。在[2]中,作者在ImageNet上使用了一个预训练的VGG网络作为特征提取器进行分类。他们建议在VGG的每一层都使用一个Gram矩阵(也称为自相关矩阵)的特征映射。如果两个图像有相似的Gram矩阵,它们就有相似的图像风格,比如纹理和颜色。回到修复的论文上,作者也使用了预训练的VGG网络作为他们的纹理网络,如图3所示。在VGG的几个层次上,他们试图使中心孔区域内的特征映射的响应与中心孔区域外的特征映射的响应相似。他们说他们用relu3_1relu4_1层来进行计算。

损失函数

总损失函数包括三项,即内容损失(L2损失)、纹理损失和TV损失(总的变异损失)。

  • 以上是他们想要最小化的联合损失函数。请注意,i是尺度的数量,如前所述,他们在本作品中使用了3个尺度。x为ground truth图像(即状态良好,无缺失的图像)。h(x_i, R)返回x_i在孔区域R中的颜色内容。phi_t(x)返回给定输入x由network t计算的特征映射。R^phi表示feature map中对应的孔洞区域。最后一项是总的变异损失项,在图像处理中常用来保证图像的平滑。
  • 内容损失项很容易理解,只需计算L2损失即可保证像素级重建精度。
  • 对于纹理损失这一项,它似乎有点复杂,但也很容易理解。
  • 首先,将图像输入预先训练好的VGG-19网络,得到relu3_1relu4_1层(中间层)的特征映射。然后,他们将特征映射分为两组,一组是空洞区域(R^phi),另一组是外部区域(即有效区域)。在孔洞区域内,每个局部特征patch P的大小为s x s x c (s为空间大小,c为特征映射数量)。他们所做的是找到孔洞区域外最相似的patch,然后计算每个局部patch及其最近的邻居的L2的平均距离。
  • 在Eq. 3中,|R^phi|为在R^phi区域内采样的patch总数,P_i为以i为中心的局部patch, nn(i)计算为:
  • Eq. 4用于搜索每个局部patch P_i的最近邻居。
  • 最后,TV loss计算如下:
  • 同样,这通常用于图像处理,以确保平滑的图像。

实验结果

  • 与Context Encoder一样,评估使用两个数据集,Paris StreetView和ImageNet数据集。Paris StreetView包括14900张训练图像和100张测试图像,ImageNet包含1.26M的训练图像,从验证集中随机选择200幅测试图像。
  • 表1为不同方法的定量结果。更高的PNSR意味着更好的性能。很明显,本文提出的方法提供了最高的PNSR。
  • 作者还声称,定量评估(例如PSNR、L1误差等)可能不是图像修复任务最有效的度量标准,因为目标是生成逼真的填充图像。
  • 图4是几种方法的可视化比较。从(d)和(e)的放大版本中,我们可以看到,与最先进的方法Context Encoder相比,本文提出的方法可以生成更清晰的纹理细节。

内容网络和纹理网络的效果

  • 作者提供了损失项的消融研究。图5显示了没有使用内容损失项的结果。很明显,如果没有内容损失项,修复结果是完全不正确的。
  • 除了显示了内容损失项是必要的。作者还指出了纹理损失项的重要性。图6显示了Eq. 1中不同纹理权重alpha的效果。显然,纹理损失权重越大,结果越清晰,但可能会影响整体图像结构,如图6(d)所示。

对抗损失的效果

如前所述,作者使用与Context Encoder相同的方法来训练内容网络。他们展示了只使用L2损失以及L2损失和对抗损失的效果。

图7,(a)仅使用L2损耗训练的内容网络输出。(b)使用(a)所提出方法的最终结果。(c) L2 +对抗性损失训练的内容网络的输出。(d)使用(c)[1]所提出方法的最终结果

  • 从图7中,我们可以清楚地看到内容网络输出的质量对最终结果非常重要。结果表明,使用L2和对抗性损失训练内容网络效果更好。

高分辨率图像复原

如前所述,作者提出了一种处理高分辨率图像的多尺度方法。结果如下所示:

图8显示了高分辨率图像的修复结果。对于上下文编码器,它只适用于128x128的输入图像。因此,使用双线性插值将结果向上采样到512x512。对于所提出的方法,输入将在三个尺度下通过网络三次完成重构。与其他方法相比,该方法提供了最好的视觉质量。然而,由于采用多尺度的方法对高分辨率图像进行修复,使用Titan X GPU对512x512张图像填充256x256的洞的时间约为1分钟,这是本文方法的一个主要缺点(效率低)。

真实世界的场景(目标移除)

  • 作者进一步将该方法扩展到处理不规则形状的孔。简单地说,他们首先把不规则的洞修改成一个矩形的边界洞。然后,他们执行裁剪和填充,将孔洞定位在中心。通过这样做,他们可以处理有不规则孔洞的图像。下面是一些例子。

总结

  • 这是一个明显改进的版本的上下文编码器。作者采用神经风格转换技术,通过上下文编码器进一步增强生成像素的纹理细节。因此,我们离逼真的填充图像又近了一步。
  • 然而,作者也指出了一些未来改进的方向。i)如图10所示的场景复杂时,缺少的部分仍然很难填补。ii)速度是一个问题,因为它不能实现实时性能。

要点

再次,我想在这里强调一些要点,这些要点对以后的文章很有用。

  • 该工作是由粗到细网络(也称为两阶段网络)的早期版本。我们首先对缺失的部分进行重建,重建的部分必须具有一定的像素级重建精度(即保证结构的正确性)。然后对重构部分的纹理细节进行细化,使填充后的图像具有良好的视觉质量。
  • 纹理损失的概念在后期的图像修复论文中起着重要的作用。通过利用这一损失,我们可以获得更清晰的生成图像。之后,我们通常通过感知损失和/或风格损失来获得清晰的生成图像。我们很快就能搞定他们!

参考内容

  1. https://arxiv.org/pdf/1611.09969.pdf
  2. Leon A. Gatys et al. “A Neural Algorithm of Artistic Style,” https://arxiv.org/pdf/1508.06576.pdf
  3. C. Doersch, S. Singh, A. Gupta, J. Sivic, and A. Efros. What makes Paris look like Paris? ACM Transactions on Graphics, 2012.
  4. ImageNet Large Scale Visual Recognition Challenge. IJCV, 2015.

—END—

英文原文:https://medium.com/analytics-vidhya/review-high-resolution-image-inpainting-using-multi-scale-neural-patch-synthesis-4bbda21aa5bc

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表