投稿问答最小化  关闭

万维书刊APP下载

CVPR 2022 | 特征优化法: 一种无需训练即可极大提升高分辨率图像修复质量的方法

2023/2/22 10:09:27  阅读:201 发布者:

以下文章来源于CVHub ,作者派派星

Paper: Feature Refinement to Improve High Resolution Image Inpainting

PDF: https://arxiv.org/pdf/2206.13644.pdf

Code: https://github.com/geomagical/lama-with-refiner/tree/refinement

最近公司组内在做一些跟图像恢复有关的任务,自己也是阅读了近年 CVPR 等顶会上的一些图像超分/修复的论文,大部分图像超分与复原的论文思路都差不多。想必大家也想换一换口味,看看一些比较新奇的思路和做法。

今天为大家介绍的这篇论文同以往的方法不太一样,思路也比较新奇,总结下来就这么几句话:无需引入额外的参数,无需训练,几行代码,思路非常简单,仅依靠反向传播对中间特征进行优化即可大幅提升高分辨率图像修复的质量。本文方法表现SOTA,代码已开源,欢迎大家一起尝试并验证!

导读

本文主要解决了图像修复网络在高分辨率

下修复质量不佳的问题。 通常来说,我们在训练集训练一个图像修复网络,那么在测试时,其

分辨率一般不会高于训练集

的最高分辨率,否则修复效果不佳,我想这里应该有两点原因:

测试集

分辨率很大,与训练集分辨率分布相差较大,存在一定意义上的Gap,导致实测集与内测集效果相差较大

网络的感受野或许能很好的cover住训练集所拥有的分辨率,但实测集分辨率过大,导致在训练集表现很好的模型由于感受野不足,使得在高分辨率测试

下表现不佳

针对以上两点,或许有人马上能想到解决方案:

对于第1点,我们将测试

分辨率(比如10001000)降低到比较小(比如100100),使得调整后的分辨率与训练集相当,这不就可以解决这个Gap了嘛?这个思路不错,但我们最终需要的是输出与原测试

分辨率(10001000)一样分辨率的图像恢复结果,如果将图像分辨率从10001000降低到100100再输入网络,网络则会输出100100的图像恢复结果(虽然解决了Gap,效果也很好),但我们还是要通过比如插值的方法将100100的图像恢复结果上采样到我们想要的分辨率:10001000,此时插值过后的图像恢复结果势必很多细节比较模糊,导致效果欠佳。

对于第2点,或许我们可以通过增加网络复杂的来进一步提高网络感受野,使其也能cover住实测集那种大分辨率

,但此种方式需要重新设计网络结构,将大分辨率

也加入训练集进行重新训练方能见效,那么问题来了:或许你现在设计的网络能cover10001000分辨率的测试

,如果突然来了一张1000010000

(工业界就经常会出现一些新的场景,实测集与训练集相差很大的情况),你怎么办呢?难道你还要继续再重新设计网络结构,再重新训练?

No,现在本文告诉你,无需重新设计网络结构,无需训练,也无需引入额外参数,仅需几行代码,通过反向传播对网络中间层特征进行特征优化即可大幅提升高分辨率

的恢复质量。

我们先来看个效果图吧,如下图1最左边是分辨率很大的测试

(分辨率比训练集

的分辨率大很多),中间是Big-LaMa网络的图像修复结果,最右边是对Big-LaMa网络运用本文提出的特征优化方法后的结果(效果对比还是很明显的)

反向传播对网络中间特征进行优化

2. 特征优化流程图

如上图2展示了本文所提出的特征优化方法流程图。绝大部分的图像恢复网络都包含了三部分:downscaler(降采),mid-level features(中层特征), upscaler(上采样)。 我们将downscaler定义为,将mid-level features定义为,将upscaler定义为。这里, 可以简单理解为编码器 encoder,而  就是解码器 decoder

假设训练集

分辨率都是的尺寸,图像修复网络经过训练集训练可以得到一个修复效果很好的模型,而的分辨率自然也是最适合该模型的一个分辨率。但我们以大于分辨率的测试

(比如)作为输入,经过  会得到一个中间特征,中间特征再经过  即可得到修复结果,但此修复结果的效果可能会很差。如上图2优化过程所示,为了使得图像修复网络在也能取得很好的修复效果,我们对中间特征  进行特征优化:

对该张分辨率

进行高斯滤波和线性插值进行降采样至最适配网络的分辨率,并将其输入修复网络中得到最终的修复结果图,我们称之为 Inpainted image at lower scale

将该张分辨率

也输入修复网络得到最终的修复结果 Prediction

计算(Inpainted image at lower scale)和(Prediction)之间的 L1 loss,并利用反向传播算法对所得的中间特征图进行特征优化;

重复3的过程,进行一定次数的迭代优化即可得到最终优化后的中间特征 ;

将最终优化后的中间特征  再次输入  即可得到分辨率为  的最终图像修复结果。

其中第3步的优化代码如下:

Pytorch实现的反向传播优化中间特征的代码

其中multiscale_inpaint函数用于生成多个不同尺寸不同分辨率的图像,predict_and_refine用于对

的中间特征进行特征优化并再次输入得到最终的修复结果图。在进行特征优化过程中,以Inpainted image at lower scaleGT,将特征当作一系列待优化的参数并加入到优化器中进行反向传播加以多次迭代优化,最终优化过后的特征图再次输入即可得到最终高分辨率且质量高的修复

。整个过程无需重新训练,我更愿意称之为一种极大提升高分辨率图像修复质量的后处理算法,且可轻松部署。

实验结果

Performance comparison against recent inpainting approaches on 1k 1024x1024 size images

Comparison of our refinement results against several recent state-of-the-art methods.

Comparison on more examples of size 1024x1024 from Unsplash dataset

结论

本文提出了一种特征优化技术,以提高神经网络在分辨率高于原始训练分辨率的图像上的修复性能。此种改进与网络无关,且不需要额外的训练。结果表明,该特征优化技术在高分辨率修复方面显著优于其它最先进的方法,表现SOTA

转自:arXiv每日学术速递”微信公众号

如有侵权,请联系本站删除!


  • 万维QQ投稿交流群    招募志愿者

    版权所有 Copyright@2009-2015豫ICP证合字09037080号

     纯自助论文投稿平台    E-mail:eshukan@163.com