超分算法之SRCNN

超分算法之SRCNN

这篇文章是2014年的一篇论文,其主要意义在于作者推出的SRCNN是深度学习在超分上开篇之作!SRCNN证明了深度学习在超分领域的应用可以超越传统的插值等办法取得较高的表现力。

参考目录:
①深度学习图像超分辨率开山之作SRCNN(一)原理分析
②深度学习端到端超分辨率方法的发展历程

1 SRCNN简介

  1. 作者推出了一种基于SISR的超分方法。这种方法基于深度学习,旨在实现一种端对端的网络模型—— SRCNN ,其用于将低分辨率的图像转换为高分辨图像。作者指出,SRCNN在当时的数据集下达到了SOAT的水平。
  2. SRCNN具有结构简单且低失真度的特点:超分算法之SRCNN如上图所示,只需要一定的训练回合,SRCNN就可以超过传统的超分方法。
  3. 在一定数量的卷积层结构下,SRCNN可以达到fast-training。
  4. 实验表明,在一定范围内,越大的数据集和较大的网络模型可以提升SRCNN对图像的重建效果。

2 SRCNN模型结构

超分算法之SRCNN

首先解释以下符号的含义:

  1. Y:输入图像经过预处理(双三次插值)得到的图像,我们仍将Y当作是低分辨率图像,但它的size要比输入图像要大。
  2. F%28Y%29:网络最后输出的图像,我们的目标就是通过优化F%28Y%29和Ground-Truth之间的loss来学会这个函数F%28%5Ccdot%29
  3. X:高分辨率图像,即Ground-Truth,它和Y的size是相同的。

如上图所示是SRCNN的网络模型,其分为三部分,分别是:
①:Patch extraction and representation(其实就是图像特征提取层)。通过CNN将图像Y的特征提取出来存到向量中,这个向量里包含了多张feature map,即一张图所含的一些特征。
②:非线性映射层。将上一层的feature map进一步做非线性映射处理,使得网络深度加大,更有利于学到东西。
③:网络重建层。重建用于将feature map进行还原成高分辨率图像F%28Y%29,其与X做loss并通过反传来学习整个模型的参数。

下面将详细讨论上述三层。

特征提取层:
特征提取层用了一层的CNN以及ReLU去将图像Y变成一堆堆向量,即feature map:
F_1%28Y%29%20%3D%20max%280%2C%20W_1%5Ccdot%20Y%2BB_1%29. 其中,W_1%E3%80%81B_1是滤波器(卷积核)的参数,是f_1%5Ctimes%20f_1大小的窗口,通道数为Y通道c,一共有n_1个滤波器。
Note:

  1. 在这一层之后,图像Y的大小和通道数都会发生变化。
  2. max%280%2Cx%29表示ReLU层。

非线性映射层:
这一层就是将上一层的feature map再用卷积核过滤一次以及ReLU层进行激活,也可以理解为为了加深网络从而更好的学习函数F%28%5Ccdot%29
F_2%28Y%29%20%3D%20max%280%2C%20W_2%5Ccdot%20F_1%28X%29%2BB_2%29.大致结构和特征提取层一样,不一样的是这一层只是为了增加网络模型的非线性程度,所以只需采用1%5Ctimes%201的卷积核就可以了,其通道数为n_1,一共有n_2个滤波器。当然可以继续增加非线性层,但是本文旨在推出一种通用性SR框架,所以会选择最简的网络模型。

图像重建层:
借鉴了传统超分的纯插值方法——对局部图像进行平均的思想,其本质是乘加法,所以作者决定使用卷积的方法(也是乘加法)重构:
F%28Y%29%20%3D%20W_3%5Ccdot%20F_2%28Y%29%20%2B%20B_3.这一层是不需要ReLU层的,且卷积核的大小为n_2%5Ctimes%20c%20%5Ctimes%20f_3%20%5Ctimes%20f_3.
Note:

  1. 也可以从另一个角度来考虑,经过前面的卷积之后,图像的size变小了,因此需要上采样过程来恢复图像,势必需要一个反卷积来做这件事,而反卷积本质也是卷积的一种。

3 Loss function:

设batchsize为n,SRCNN网络参数集为%5CTheta%20%3D%20%5C%7BW_1%2C%20W_2%2C%20W_3%2C%20B_1%2C%20B_2%2C%20B_3%5C%7D,则Loss function可定义为:
L%28%5CTheta%29%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%5Csum%5En_%7Bi%3D1%7D%7C%7CF%28Y_i%3B%5CTheta%29%20-%20X_i%7C%7C%5E2.Note:

  1. 选择MSE作为损失函数的一个重要原因是MSE的格式和我们图像失真评价指标 PSNR 很像,因此可以理解为SRCNN是直接冲着提升PSNR去的,从而让高分辨率的图像有较小的失真度。

4 实验

4.1 setup

实验中比较重要的一些配置如下:

  1. Training-data涉及91张图片。 Set5 数据集涉及5张图片用于 up-scale-factor={2,3,4} 的验证与测试; Set14 数据集涉及14张图片用于 up-scale-factor=3 的验证与测试。
  2. 实验的一些参数设置:f_1%3D9%2Cf_3%3D5%2Cn_1%3D64%2Cn_2%3D32
  3. Ground-Truth的大小是32%5Ctimes%2032
  4. 卷积核的参数初始化来自:w_i%5E0%5Csim%5Cmathcal%7BN%7D%280%2C%200.001%29
  5. SRCNN一共3层网络,前两层配置的学习率为10%5E%7B-4%7D,最后一层的学习率配置为10%5E%7B-5%7D,作者指出这种让最后一层较小的学习率有利于网络收敛。

4.2 实验结果

4.2.1 performance

超分算法之SRCNN从上图看出SRCNN的PSNR在大部分图片中都取得了最佳的值!此外,所消耗的时间也是最少的。

4.2.2 runtime

超分算法之SRCNN从上图可以看出SRCNN有最少的runtime!

5 进一步研究

5.1 滤波器学习情况

超分算法之SRCNN上图是特征提取层滤波器的学习可视化图,在91张图片的训练结果,其中up-scale-factor=2。
图像a、f:类似于高斯分布。
图像b、c、d:类似于边缘检测。
图像e:类似于纹理检测。
休息:一些坏死的内核参数。

5.2 ImageNet学习

作者这一节旨在探究数据集的大小对performance的影响。

  1. 采用ILSVRC 2013的ImageNet数据集和91张图片这两个训练集做对比训练。
  2. 在Set5数据上做测试,up-scale-factor=3。

实验结果如下:
超分算法之SRCNN 从图中可以看出,大数据集对于表达能力的提升是有帮助的(虽然大家都知道,但是作者还是做了一个实验来证明)。

5.3 滤波器数量

作者研究滤波器数量对PSNR的提升影响,设置了3组实验,结果如下:
超分算法之SRCNN
实验结果表明卷积核的数量对表现力是有提升的,但是数量的增加也带来了runtime的增加,如果你想获取快速的重建效果,建议还是取小数量的卷积核更好。

5.4 滤波器大小

作者研究滤波器size对PSNR的提升影响,进行了2组实验,分别是:
f_1%3D9%2Cf_3%3D5f_1%3D11%2Cf_3%3D7
从实验结果来看,较大的卷积核可以提取更好的特征信息,但是也带来了runtime的上升,因此实际中我们需要根据实际情况进行trade-off。

6 效果展示

超分算法之SRCNN

7 总结

  1. 本文作为SR在深度学习领域的开篇之作,提出了一种
    通用性框架SRCNN
    ,将输入图像进行Bicubic插值预处理,然后特征提取,非线性映射,最后进行重建;重建后的图像与Ground-Truth做loss来迫使网络学习到如何从LR%20%5Cto%20HR的知识。
  2. 选用深度学习常用的MSE作为Loss function,因为MSE与PSNR有着相似的表达式。
  3. SRCNN在PSNR和runtime上都表现不俗,超越了当时的SOAT,表征了这种框架的实用性。
  4. 作者做了一系列实验,其中包括可视化乐特征提取到的向量是怎么样的;大的数据集对表现力的提升是有帮助的;卷积核的数量的增加对表现力是有提升的,但是数量的增加也带来了runtime的增加;较大的卷积核可以提取更好的特征信息,但是也带来了runtime的上升。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年3月15日 下午4:27
下一篇 2022年3月15日 下午4:48

相关推荐