CNN超分辨梳理

CNN超分辨

梳理一下这两年cnn超分辨网络,也便于以后自己查看。文章共分几大部分,下面详细介绍。

(一)SRCNN

srcnn网络是CNN超分辨的开山之作,论文详细论证了每一个卷积层的作用,并将卷积层与传统超分辨所的操作过程一一对应。虽然网络结构现在看来简单但是意义重大。下图为SRCNN网络结构。


SRCNN网络结构

整个网络的操作是在经过bicubic放大之后的图像上进行的,bicubic操作实际上是插值,作者没有用卷积操作来做,因为作者觉得bicubic输入输出不一样大,不便于实现(当时不像现在,可以用deconv,subpixel-conve 等)。

去除bicubic操作,网络结构总共分为三个部分:

1)Patch extraction and representation,即图像块的提取以及重表示;

2)Non-linear mapping,即非线性映射;

3)Reconstruction,即图像重建;

Patch extraction and representation

在很多传统算法中,如 PCA, DCT, Haar,都会将图像分为很多小块,并将这些小块经过一定的运算来提取相关特征。同样的,采用一组滤波器,来对这些小块进行卷积操作,也可以看作是这样的一个过程。作者将网络中的第一层卷积定义为操作 

第一层卷积公式

表示个大小为x的 filter,表示个对应的偏置项,表示卷积操作。每一个filter作用于通道数为,大小为的图像块,生成一个图像特征图(实际操作是filter对图像每一个通道分别卷积,得到每一个通道的特征图,然后将个特征图求平均,得到一个的特征图)。所有的filter卷积操作后总共会生成个特征图。每个特征图加上对应的偏执,之后采用ReLU激活函数进行非线性处理(对应公式中的操作)。作者在实际中使用了

至此就完成了特征提取的过程,与传统算法提取特征过程相对应。

Non-linear mapping

非线性映射用来将第一层所提取到的个低维特征图映射为个高维特征。公式如下

第二层卷积公式

其中,表示个的filter,表示对应的个偏置项,表示卷积操作。第二层卷积操作中的每个滤波器作用于第一层输出的个特征图,输出一个新的特征图(实际操作是filter对个特征图中的每一个卷积,得到每一个新的中间图,然后将个中间图求平均,最终得到一个新的特征图)。总共会产生个新的特征图。(作者实际使用的)。

作者也提到,这一过程也可以扩展为多层的卷积操作,比如两层卷积。

Reconstruction

传统算法中经常将高分辨率的图像块做平均处理,最为最终的重建图像。这一操作也可以用卷积操作来实现。

图像重建公式

其中表示个尺寸为的线性滤波器,数目与图像通道数相同,便于产生最后的图像。如果输入的是图像,作者期望滤波的效果等于平均滤波器,如果输入的是图像后的变换系数,作者期望会先将变换系数反变换为图像,再做平均处理。作者实际使用的

经过的卷积操作,并加上偏置项后,就会得到最终的重建图像。

Relationship to Sparse-Coding-Based Methods

作者将这三层网络与稀疏编码超分辨过程进行了对应。


An illustration of sparse-coding-based methods in the view of a convolutional neural network.

Patch extraction and representation 和 Non-linear mapping,也就是前两层网络对应稀疏编码的的分辨率字典的建立,以及降低分辨率字典映射为高分辨率字典这一过程,包括特征提取,非线性映射。最后的Reconstruction过程对应于稀疏编码超分辨的重建过程。

稀疏编码超分辨可以看作是一种特殊的卷积网络超分辨。不过,稀疏编码超分辨并没有对每一个过程进行优化。

Results

作者最后给出了采用cnn超分辨结果与传统算法结果的比较。

其中网络结构采用的,对于x2,x3,x4超分倍数单独进行了训练。

reference:

http://mmlab.ie.cuhk.edu.hk/projects/SRCNN.html

你可能感兴趣的:(CNN超分辨梳理)