SFFAI 90—超分辨率专题《罗正雄:基于展开交替优化的盲超分算法》
退化表达式为:
盲超分就是已知y,求x
这个求解过程可以表示为如下最优化问题:求出使得以下表达式最小的k和x值
盲超分存在的挑战
- 病态:退化过程会损失很多的细节信息,这个过程是不可逆的
- 存在很多位置变量:k,x,HR先验信息
先验信息:在以前的算法中,一般通过概率论的方法进行建模,来从大数据集提取出分布规律。但现在可以直接使用深度神经网络训练,就能直接学习到这种分布规律。CNN本身就有让输出图像尽可能平滑的特点,把这个作为先验,而最早也有一篇论文提到,要让图像总体的方差越小,图像越平滑,把这个条件作为先验
超分问题分为3类:
第一种是单一已知退化核,常见的是BI、BD
这种输入输出比较固定的场景,就比较适合用神经网络来做
大家都在优化网络结构,而问题在于,很多场景下,并不是采用这种单一的bicubic退化(除非人为采用固定算法退化后进行传输,在目的地再进行SR)
第二种是多种已知退化核,也就是模型要求输入退化后的LR图像,以及LR图像对应的模糊核k
第三种是多种未知的模糊核,模型只要求输入退化后的LR图像。在第二种方法的基础上,我们求解第三种的问题场景就可以分为两步:先使用LR估计模糊核,然后使用LR和模糊核重建SR图像
而两阶段的方法会导致两个问题:
- 两个独立的模型不兼容,SR模型可能因为核估计模型的一点偏差,就对SR效果影响很大;
- 第一阶段估计模糊核,本身也是病态问题,只使用了LR图像,求解精度很有限
于是将两个问题同步求解
- Estimator:使用中间SR结果和LR求解k
- Restorer:使用中间核估计结果k核LR求解SR
- PCA降维:由于模糊核周围很多像素点都是0,而且会有一些中心对称(各向同性)或轴对称(各向异性)的特点,所以包含的信息并没有很多,我们可以估计降维后的结果,降低计算量
- 参数共享:代码中也只有Estimator和Restorer两个对象,在最后监督即可
Estimator和Restorer需要对输入敏感,否则每次迭代不同的输入可能生成同样的结果,这就无法迭代优化,于是作者提出了条件残差模块(CRB)
这个CRB做的就是对 f c o n d f_{cond} fcond敏感,而这个条件特征对于Estimator就是中间的模糊核,对于Restorer就是中间的SR结果
下面是在各向同性高斯退化数据集(IKC使用)上的结果
但真实数据集可能不满足高斯核退化,下面是KernelGAN使用的数据集,使用随机的模糊核(非高斯)退化
各向同性高斯模糊核sigma对模糊核估计精度的影响,模糊核越大,模糊的区域越大,重建越难
如果拿到GT kernel进行恢复,也无法提升多少,这也就说明,模型的效果好,并不是得益于模糊核估计的准确,而得益于端到端的结构,即使kernel存在误差,也能得到较好的恢复效果
确定循环迭代的次数
网络到第4次迭代时,就能达到比较好的结果了,再次增加次数,也无法得到好的提升
未来超分,去噪,去模糊等算法可能会融合,才能真正应用