图像超分辨重建是一种提升图像分辨率的图像处理技术,而超分辨问题是一个难解的欠定问题,通常情况下,低分辨率图像被视为高分辨率图像经过模糊、下采样和噪声干扰后所得到的退化图像。从单一低分辨率图像恢复重构出高分辨率图像,是一个难解的欠定问题,研究人员需要利用先验信息去约束解空间,如早期的稀疏先验以及近几年利用深度学习直接从大量训练数据中学习到的图像先验信息。2020年之前超分辨的发展轨迹见文章【1】【2】。
本文将结合参考文献和自己的一些实践谈谈超分辨率技术的发展:
目前主流方法基本都是基于深度学习的超分算法了,从基于早期卷积神经网络(CNN)的方法(例如SRCNN)到最近使用生成对抗网络(GAN)的有前途的SR方法,各种各样的深度学习方法已应用于解决SR任务(例如SRGAN)。 通常,使用深度学习技术的SR算法族在以下主要方面彼此不同:不同类型的网络体系结构,不同类型的损失函数,不同类型的学习原理和策略等。
1 网络模型结构设计:从2014年SRCNN到EDSR以及RCAN(Residual channel attention networks)和ESRGAN(Enhanced SRGAN),人们将其他领域的残差,稠密连接,递归连接,注意力机制,生成对抗网络等策略应用到超分任务上。通用的网络结构设计适用于多种任务。其中针对超分上采样这一独有的操作,SRCNN则是直接在进模型前进行上采样,后来考虑到速度问题,开始 采用反卷积或者depth2space的方式进行上采样。考虑到实用性,网络设计的复杂度往往受到约束。
2 损失函数设计:像素级loss(L1/L2),结构损失loss,感知loss,纹理loss,对抗loss,CycleGAN的循环一致性损失等,单独使用某一个loss,效果一般不好,例如单独使用像素loss,最终因为解空间较大,结果趋近平均,导致结果偏模糊。,在实践中,研究人员通常通过加权平均值组合多个损失函数,以约束生成过程的各个方面,尤其是在失真感知权衡方面。但是,不同损失函数的权重需要大量的经验探索,如何合理有效地结合仍然是一个问题,例如感知loss,加的不好就是bug,加的好可能在某些图上可以看到效果的提升。其中GAN训练往往不稳定且训练困难,所以结合了对抗损失的超分辨模型有时会产生人工痕迹和不自然的变形。如何更好地将GAN应用于图像超分辨率重建领域仍值得深入研究。
其实可以将损失函数看着对模型输出的先验,根据具体的问题给与更多的外部先验,更好的约束解空间,将更有利于最终的模型效果。如人脸超分,视频超分具体的超分子任务。
3 探索更加真实的超分之路
低分辨率图像被视为高分辨率图像经过模糊、下采样和噪声干扰后所得到的退化图像。深度学习有一个重要的前提假设是测试图像的分布与训练数据的分布一致,当训练过程中采用的模糊核和测试时的模糊核不一致时,重建结果往往会产生明显的退化。因此构建符合真实超分训练集一直是我们追求的目标。
3.1 复杂的退化模型假设:
真实的超分训练数据不是简单的通过双三次插值可以模拟得到,因此人们通过复杂化退化,即考虑多种退化方式,包含不同的模糊核和不同的噪声水平来对模型进行退化(MDSR,张磊系列),但是其实这里还是假设模糊核已知,测试的时候需要先知道对应的模糊核和噪声级别,这方面的工作其一直在更新,如最新的ECCV2020的Deep Unfolding Network for Image Super-Resolution。这方面我觉得需要模拟足够多的退化,同时也要求训练的网络足够强大。
另外就是盲超分网络,大家根本不知道模糊核。这时可以根据数据分为三种:
3) 只有LR图像:假设没有高清图像,则直接基于模糊核估计,基于特定的任务,可以对模糊核进行限制,减少模糊核的估计空间,例如有的任务可以直接假设为高斯模糊核等,其中KernelGAN则借助GAN直接对任意图像进行模糊核估计。构建模糊核池,并从中随机提取模糊核,从而构建高低分辨率训练图像对,完成盲超分辨模型的训练。因此模糊核的丰富性受到本身被估计的图像多样性限制。
3.2 真实场景退化场景
2019年CVPR一下出来好几篇关于真实超分的文章,CamerSR等直接从真实的相机镜头成像的角度出发,构建分辨率和视场之间的关系,并简称之为R⁃V退化模型 ,以及考虑从RAW层面考虑超分,但是任重而道远,数据采集比较困难,尤其设计到LR与HR之间的对齐问题,另外训练的网络模型设计,是否足够强大conver住真实复杂的退化。
3.3 歪门邪道(大佬们在开创未来):尝试通过GAN进行纹理迁移:Image Super-Resolution by Neural Texture Transfer CVPR_2019,基于深度先验进行图像超分:Exploiting Deep Generative Prior forVersatile Image Restoration and Manipulation_ECCV2020 (Oral)。
个人感悟:网络结构设计和loss设计这方面工作应该不是超分的任务的核心问题,更多是个虎添翼的作用,对于参加超分比赛还是可以的,但是想实现本质提升,还是得从数据角度考虑,对于low-level的问题,核心问题还是在于如何获得更加真实的超分训练集即对退化模型准确的假设。1:MDSR通过自己构建不同的模糊核+噪声构建训练集;2:基于高斯模糊核假设,然后求解高斯核参数;3:KernelGAN直接基于GAN和自然图像构建任意模糊和池;4:将CycleGAN思想应用于超分,都是大家在退化道路上的探索。毫无疑问更具适用性的盲超分辨重建算法需要进一步研究。
另外就是真实场景下获取的超分辨数据集,如City100,相比于传统人工构造的数据集,利用面向真实数据集的超分辨率模型,将更加适用于真实的应用场景,因此值得研究者在未来深入探索。本人做个几个月的实验,发现训练还是比较困难。
实践中,大家会根据不同的任务需求去简化退化模型,从而使其落地。
推荐:,
Deep Unfolding Network for Image Super-Resolution(CVPR2020)
Unpaired Image Super-Resolution using Pseudo-Supervision(CVPR2020)
Real-World Super-Resolution via Kernel Estimation and Noise Injection(CVPRW2020)
[1] 史振威,雷森.图像超分辨重建算法综述[J].数据采集与处理,2020,35(01):1-20.
[2] Wang Z , Chen J , Hoi S C H . Deep Learning for Image Super-resolution: A Survey[J]. 2019.