对深度学习上的超分辨率认知(一)

从本质上对深度学习和超分辨率进行梳理

温故而知新

超分辨率

作为处理图像的其中一个问题,和它同一个层次的还有降噪(Denoising),抗模糊(Deblurring),缺失修复(Inpainting)。难度(相对的)也是依次递增的。传统观念上讲,他们每一个的处理方式都有各自专门的算法(包括SR)。比如说,去噪是为了去除图像中的干扰(噪声),去模糊就是对图像进行锐化,超分辨率是将低分辨率图像重建为高分辨率问题。
对于分辨率,会存在一个误区。图像的分辨率是有单位的,一般使用像素每英寸(DPI)来表征。从单位来理解这个概念就很容易了。提高分辨率根据这个单位来讲有两种方法,一个是增大像素,一个是减小面积。在电脑上显示一张图片时分辨率是没有什么意义的,因为显示器的分辨率是固定的。但是超分辨率就不一样了,超分辨率得到的HR图片是根本的像素变多了,也就意味着在打印这张HR图片的时候,尺寸会变大。可以这么理解,原来的低分辨率图像是用一部600W像素的照相机拍摄的,高分辨率图像是800W像素拍摄的同一个场景。洗出来的时候大小一样,但是明显后者照片的质量更加高,更加清晰,也就间接的做了Deblurring的事情(当然deblurring还有别的更针对性的算法)。那么超分辨率技术解决的就是把LR图像映射到HR图像。
上面说到了映射,如何做到解决超分辨率其实就是如何找出这个映射的关系。
传统的超分辨率技术诸如稀疏编码,贝叶斯等等,不多赘述。我们要做的是从深度学习的角度来找出这个映射。

深度学习

深度学习是机器学习的一个分支。是一个使用多重的神经网络的非线性变换来对数据进行抽象的算法(使用神经网络这个词也是跟人类大脑有着一定的关系)。比如说识别猫狗时,为什么我觉得这是一只猫,而不是一只狗,需要对于图像给出的信息进行一定的抽象。当然这里的原理比较复杂,我也不怎么理解。那我们从宏观来理解,就是模仿人的大脑来定义这个映射的结构。然后从大量的数据中来学习这个映射中的参数,最后得到的这个网络结构和参数,就是训练完成的模型。简单的说,深度学习就是,定义方法,判断方法,择优方法。 learning = looking for a best funcition。 当然内部有很多很多的细节要去学习理解,每一个步骤都可以说是至关重要。不仅仅是模型,包括loss function,normalization等等,都是学问。
为什么要使用dl呢?深度学习这些年在算力的提升和大数据的崛起之后变得越来越火,他的成本是极低的,我们可以天马行空的对自己想法进行实现(尽管可能无法做出合理科学的解释)同时也需要对目标的领域的知识有足够得了理解。
我比较相信,深度学习所作的逐层抽象能够解决超分辨率问题。

映射

在我的思路当中,学习到LR图片到HR图片的映射有两个方向。
第一个是SR在DL上最常规的思路。通过大量的训练集来训练一个非常深,非常复杂的网络,这样的一个网络就是LR到HR的映射。但是这个映射本质上是什么呢,从我个人理解,就是从大量的图片中,学习一个LR到HR的宏观映射,这是一个非常普遍的映射。但是存在两个问题,首先,这个大量的数据集可能要相当的大才能够涉及到整个世界所有的LR图像。其次,这个映射太普遍了,以至于最后不再具有针对性。因此在处理一些分辨率很低的图片时,效果很差。
第二个是近几年SR论文中提出来的思路。利用的是内部学习(internal learning),这个根据的是几年前的一些论文。前两篇论文笔记中也有提到。图像中内部数据也是至关重要的。甚至说,超过了外部数据。比如ZSSR,取得了相当令人满意的成绩。
这两者,孰优孰劣,也是需要视情况而定的, 那么,是不是说,可以存在一种方法,将两者结合起来呢。这也是我试图去理解,去解决的问题。

计划

计划是寻找一个能够将ZSSR方法和EDSR模型相结合的方法,或者说,其他的更加复杂的把internal learning 和external learning相结合的方法。

给自己

学而不思则罔,思而不学则殆。没有知识的空想都是放屁

猜你喜欢

转载自blog.csdn.net/qq_40147449/article/details/84327427