基于深度学习的图像超分辨率重建应用初探
2020-11-10张晗
张 晗
(西安石油大学 计算机学院, 西安710065)
0 引 言
在学术研究中,图像处理是一种常见的操作,但由于图像不清晰、局部模糊或分辨率太低等原因,图像处理结果往往不够理想。 这种情况下,需要将低分辨率图像向高分辨率图像转化,基于这种需求背景,超分辨重建技术应运而生。
图像超分辨率重建技术就是利用一组低质量、低分辨率图像(或运动序列)来产生单幅高质量、高分辨率图像[1]。 在计算机视觉领域,图像超分辨率重建技术有可能使图像实现从检出水平向识别水平的转化,或实现向细辨水平的转化。 图像超分辨率重建技术可以提高图像的识别能力和识别精度、实现目标物的专注分析[2],从而可以获取感兴趣区域更高空间分辨率的图像,所以对图像进行超分辨重建可以有效的提升图像的质量。
1 图像超分辨率重建算法
传统的超分辨率重建算法是针对低分辨率图像采用保持图形部分边缘的方法进行重建[3],虽然处理方便,但依然存在着边缘部分模糊和超分辨重建能力有限等问题,基于深度学习的超分辨率重建技术可以有效的解决该问题,本文采用传统双三次插值算法(Bicubic Interpolation)和基于深度学习的SRCNN 算法(Super-Resolution Convolutional Neural Network)对图像进行超分辨率重建,并对比相同图像在两种方法中的超分辨率重建结果,验证深度学习SRCNN 算法的优良性能。
1.1 Bicubic 算法
Bicubic 是二维空间中最常用的插值方法,又叫双立方插值。 它是对图像进行“插值”或增加“像素”数量/密度的一种方法[4]。 通常利用插值技术增加图形数据,同时,将待采样点周围16 个点的灰度值作三次差值,以便在它打印的时候,能够增大打印面积并提高分辨率。
Bicubic 算法不仅考虑到4 个直接相邻点的灰度影响,而且考虑到各邻点间灰度值变化率的影响,相比较一般的传统算法,Bicubic 算法可以得到更接近高分辨率图像的放大效果,其结果通过以下公式(1)得到[5]:
计算系数aij的过程依赖于插值数据的特性。如果已知插值函数的导数,常用的方法就是使用4个顶点的高度以及每个顶点的3 个导数。
1.2 SRCNN 算法
SRCNN 是一种用于实现图像超分辨率的特定卷积神经网络(Convolutional Neural Networks,CNN)模型[6]。 它使用Bicubic 算法将低分辨率图像放大成目标尺寸后,通过三层卷积网络拟合非线性映射,最后输出高分辨率图像结果,它在Bicubic算法处理图像之后对图像进行拟合输出,确保图像分辨率的提高。
首先,使预处理图像,输入图像与要重建的高分辨率图像的尺寸保持一致,再进行高斯内核平滑。通过同样的缩放因子进行Bicubic 下采样得到的图片称为训练集[8],SRCNN 对这个训练集进行训练。训练过程中为了避免边缘效应,所有卷积层都没有边缘处理。
预处理图像后,SRCNN 算法通过三层卷积网络拟合非线性映射之后,输出高分辨率图像结果。 如图1 为三层卷积网络重建过程,三个卷积层使用的卷积核的大小分别为9×9,1×1 和5×5,前两个的输出特征个数分别为64 和32。
图1 三层卷积层Fig. 1 Three-layer convolutional layer
三层卷积层重建过程主要有3 个步骤:
(1)利用卷积网络的性质提取图像块的特征,进行图像块的提取和特征表示。
(2)将(1)中的低分辨率维度特征映射到当前维度特征从而实现特征非线性映射。
(3)图像重新进行卷积重构,实现最终的重建。
1.3 性能指标
(1)PSNR。 峰值信噪比(Peak Signal to Noise Ratio, PSNR)是最普遍、使用最为广泛的一种图像客观评价指标,它基于对应像素点间的误差(即基于误差敏感的图像)进行质量评价[7]。 由于并未考虑到人眼的视觉特性(人眼对空间频率较低的对比差异敏感度较高,人眼对亮度对比差异的敏感度较色度高,人眼对一个区域的感知结果会受到其周围邻近区域的影响等),因而可能会出现其评价结果与人的主观感觉不一致的情况[8]。 峰值信噪比的求值公式(2)如下:
PSNR 的单位是dB,一般取值范围:20 ~40,数值越大,表示失真越小,获取的图像质量越好。 其中均方误差(Mean Squared Error, MSE)作为损失函数,用来检测模型预测值和真实值之间的差距[9],表示真实值与预测值差平方的期望,值越大,表示预测效果越差。 均方误差公式(3)如下:
其中:H、W 分别为图像的高度和宽度。
(2) SSIM。 结构相似性(Structural Similarity Index,SSIM)是一种衡量两幅图像相似度的指标,给定两个图像x 和y, 两张图像的结构相似性可按照公式(4)~公式(6)求出[10]:
其中:μx是x 的平均值, μy是y 的平均值,是x 的方差,是y 的方差,σxy是x 和y 的协方差。c1,c2是用来维持稳定的常数。 L 是像素值的动态范围。k1= 0.01,k2= 0.03。 结构相似性的范围为(0,1)。 数值越大,图像越相似,当两张图像一模一样时,SSIM 的值等于1。
2 超分辨率重建实验
2.1 实验环境及图像来源
本次实验,硬件系统为Windows10 +Intel(R)Core(TM) i7-6700 CPU @ 3.40GHz- 3.41gHz,实验环境为Python3.6+Tensorflow1.12.0。
本文图像采用公共数据集Set14 部分图像以及自选图像,图像格式均设置为.bmp,因其采用位映射存储格式,除了图像深度可选外,不采用其他任何压缩,由于.bmp 文件格式是Windows 环境中交换与图有关数据的一种标准,因此在Windows 环境中运行的图形图像软件都支持.bmp 图像格式,并且能够快速读取.bmp 格式的图片。 因此,.bmp 文件格式的图片是非常适合训练的图像格式。
2.2 实验设计及分析
本次实验分别采用Bicubic 和SRCNN 两种方法进行,训练次数分别为1、10、100。 首先,采用Bicubic 算法进行实验,当训练次数增加之后,损失函数(Loss Function)和PSNR 两个指标一直趋于不变,说明训练次数的增加对训练效果没有改变作用。对比输入图和输出图,不难发现,使用Bicubic 进行实验,图像分辨率略有提高,但效果较差,细节部分仍然模糊。 再使用SRCNN 算法对同一数据集进行超分辨重建。
图2~图4 为进行超分辨率重建之后的结果,(a)为输入低分辨率图像,(b)为使用Bicubic 进行超分辨率重建的图像结果,(c)为使用SRCNN 进行超分辨率重建的输出图像。
图2 人物重建结果Fig. 2 Character reconstruction results
图3 动画重建结果Fig. 3 Animation reconstruction results
图4 葡萄重建结果Fig. 4 Grape reconstruction results
观察图2~图4,(a)是分辨率较低的输入图像,细节部分比较模糊,(b)是经过Bicubic 重建之后的图像,图像清晰度有了提升,但图像噪声依然比较大,细节部分仍需完善,但经过SRCNN 进行超分辨率重建训练出图像,无论是女人图像、动画哪吒还是葡萄的超分辨率重建图像,其细节部分相比输入图和Bicubic 输出图像都有明显的提升,边缘明显锐化,整体图像清晰度有很大的提高,视觉清晰度有明显的改善。
视觉方面来看,图像的超分辨率重建效果明显,为了更加准确地评价两种方法的超分辨率重建性能,本文使用PSNR 和SSIM 作为评价指标,进行超分辨率重建的结果判断,结果如表1 所示。
表1 PSNR 和SSIM 结果比较Tab. 1 Comparison of PSNR and SSIM results
从表1 可以看出,SRCNN 的PSNR 指标比Bicubic 高出了3.338 db,说明SRCNN 的去噪能力明显优于Bicubic;SRCNN 的SSIM 指标比Bicubic高出了6.076%,因此图像经过SRCNN 算法重建之后,还原程度更高,说明基于深度学习的SRCNN 算法在图像超分辨重建中比传统Bicubic 算法有更好的性能。 从原理分析,传统的插值算法,没有考虑边缘等特性,图像处理后模糊的现象仍需改善,会在一定程度上影响图像的质量,而SRCNN 很好的去掉了噪声对于图像细节的影响,有效的提高了超分辨率重建的图像质量。
3 结束语
本文对比分析了Bicubic 算法和深度学习SRCNN 算法的图像超分辨率重建性能,相比于Bicubic,SRCNN 在超分辨率重建实验中能更有效提高图像分辨率,解决边缘部分模糊问题。 当然,SRCNN 也存在着训练收敛较慢,准确率有待提高等诸多问题。 目前,基于深度学习的超分辨率重建方法已有很多,越来越多的研究者不断进行研究探索,图像超分辨率重建技术在未来的发展空间也是值得期待的。