1 介绍
图像超分辨率重建是指通过低分辨率图像或图像序列恢复出高分辨率图像。高分辨率图像意味着图像具有更多的细节信息、更细腻的画质,这些细节在高清电视、医学成像、遥感卫星成像等领域有着重要的应用价值。Super-Resolution Convolutional Neural Network:本篇文章讲述的是深度学习在图像超分辨率重建问题的开山之作SRCNN(Super-Resolution Convolutional Neural Network)。我翻译的这篇论文Accelerating the Super-Resolution Convolutional Neural Network提出的FSRCNN是在SRCNN的基础上进行改进,主要加快了模型的恢复速度和恢复质量。
我这次实验的主要内容是复现FSRCNN的训练和测试过程。训练过程主要用python语言和TensorFlow框架实现,代码来自GitHub开源网站,自己调试修改程序实现。基本过程包括数据预处理即数据集扩展、CNN网络搭建、训练参数设置等。测试过程我分别用python和matlab实现,之所以用matlab实现是因为matlab有自带的PSNR函数可以直接计算重建图像与原图的PSNR值,而且作者也开源了matlab版本的FSRCNN的测试程序,可以直接调用训练好的模型进行测试。下面我将主要介绍下SRCNN和FSRCNN的结构,再结合代码解释下FSRCNN的实现过程。
2 SRCNN和FSRCNN
2.1 SRCNN
SRCNN的主要思想: 以深度学习与传统稀疏编码之间的关系作为依据, 将网络分为图像块提取、非线性映射和图像重建三个阶段, 再将这三个阶段统一到一个深度卷积神经网络框架中, 实现由低分辨率图像到高分辨率图像之间的端到端学习。图1为SRCNN的算法框架图,在网络结构方面, 该方法的网络结构设计简单, 通过分析了该方法与基于稀疏编码超分辨率重建技术的等价性, 将稀疏编码过程看作卷积运算, 利用三个卷积层完成图像块提取、非线性映射和图像重建等操作。在优化方式上, 以 SCSR为代表的传统浅层学习SR方法对三个阶段进行分别设计并独立优化处理, 偏重于字典学习优化, 而忽略了整体框架的优化。该方法则采用联合优化方式, 图像重建性能得到了较大的提高。
图1 SRCNN的算法框架
在训练阶段, 为避免重叠图像块后处理所造成 的计算量增大的问题, Dong 等将高分辨率样本随机裁剪为若干个子图像, 再经过高斯核滤波、下采样和上采样子图像, 得到低分辨率样本. 在训练策略上, 该方法采用均方误差作为损失函数, 由随机梯度下降法 (Stochastic gradient descent, SGD) 最小化损失函数, 训练速度进一步提升。该方法的特点是将传统的稀疏编码与深度学习的SR方法联系在一起。虽然该方