【图像超分辨(SR)】一文通俗解释blind SR(盲超分)和non-blind SR(非盲超分)的区别

blind和non-blind的区别用一句话来概括就是:是否假设退化核已知并将其作用于图像来做网络训练。

non-blind Super Resolution: 这类方法在训练过程中都假设了退化核(也可以叫退化函数,其实就是degradation)已知,也就是说,在训练过程中一般都会使用一个确定的退化核从HR得到LR,然后来做训练。
深度学习做超分早期的大部分工作都是non-blind SR,一般过程是,把假设已知的退化核作用在图像上得到退化后的LR图像,用LR和HR来训练网络,得到的网络在面对同样退化核产生的低分辨图像就可以有比较好的恢复效果。近几年类似ZSSR这种单图像的超分辨,看似思想和一般non-blind SR有所不同(个人觉得ZSSR的想法非常天才),实际上在训练过程中也是用到了固定的退化核对图像做退化,然后用退化后(LR)和退化前(HR)的图像做训练。即便是用Nonparametric Blind Super-Resolution这篇文章(感觉有一点点标题党hhh)提出的方法估计出退化核来代替固定退化核(高斯、双三次等),本质上也还是在做上述过程,依旧属于non-blind SR。

blind Super Resolution:
不属于non-blind SR的就是blind SR啦…(开个玩笑)
了解了non-blind SR之后,理解blind SR就比较容易了。个人认为blind SR就是解决退化核未知问题这种说法并不准确。一开始大家看一些文章的名字可能会有误解,比如:Blind Super-Resolution Kernel Estimation using an Internal-GAN(NIPS 2019),看到这个名字大家很自然地会觉得说,他这个是blind SR。但实际上这篇文章的重点在于提出一种学习未知退化核的方法,断句应该是"Blind Super-Resolution Kernel" Estimation using an Internal-GAN。所以判断一篇文章做的到底是不是blind SR,并不应该看他是不是在解决退化核未知问题。而是应该看他有没有用到固定的退化核去对图像做退化,然后用退化的图像来训练。
举个例子:Blind Super-Resolution With Iterative Kernel Correction这篇文章就是在做blind SR,大概意思是说,我不知道退化核是什么,那我先大概估计一个退化核,然后在后面不断修正这个退化核,让退化核比较接近真实的,然后就可以得到比较好的超分结果。在这个过程中,并没有将一个固定的退化核作用于图像得到LR,然后再做LR到HR的训练。(没太仔细研究,大体看下来是没有这样一个显式过程的)而是参考退化核,然后网络从LR直接到HR(这部分有点没太看懂),中间通过修正退化核不断修正HR。

总结: 不管结构或者想法怎么魔改,只要训练过程中认为退化核已知,用退化核生成LR来做训练,基本就可以认为是non-blind SR。如果训练中没有用退化核生成LR然后用生成的LR和原来的HR一起训练的过程,就可以认为是blind SR。

补充: 我提到的blind SR是我理解中和non-blind SR对等地位的概念。而广义上,很多文章中讲的blind SR是说,我不知道退化核,那我研究一个方法估计出未知的退化核,这就是blind SR(类似前面提到的kernel估计的文章)。但个人觉得,类似这种核估计的blind SR,估计完核很多还是嵌入到non-blind SR方法中,即估计完kernel还是要拿图像做退化再训练,像是non-blind SR的改进。所以才会说,拿知不知道退化核来做blind还是non-blind的标准可能不太准确。当然,在深度学习里感觉很多东西并没有一个标准的定义,只能说多看文章,看看大家公认某个概念大概是怎么回事。同一个词可能出现在不同文章里说的都不是同一件事情,所以具体还是要结合文章具体情况来看。这里只是分享一下我自己的看法。

关于本文,如有错误,欢迎批评指正!

你可能感兴趣的:(图像超分辨(Image,Super,Resolution),人工智能,计算机视觉,神经网络,深度学习,机器学习)