基于多尺度反向投影的图像超分辨率重建算法
2020-07-21熊亚辉陈东方王晓峰
熊亚辉,陈东方,王晓峰
(武汉科技大学 a.计算机科学与技术学院; b.湖北省智能信息处理与实时工业系统重点实验室,武汉 430065)
0 概述
单幅图像超分辨率(Single Image Super-Resolution,SISR)重建一直以来都是图像处理领域的研究重点,旨在将一张低分辨率(Low-Resolution,LR)的图像恢复成给定的高分辨率(High-Resolution,HR)图像。SISR广泛应用于图像压缩、医疗成像、遥感成像、公共安防和视频感知等诸多领域。经过多年的发展,已取得大量关于SISR技术的研究成果。一般来说,超分辨技术主要分为3种类型:基于插值[1-2]的方法、基于重建[3]的方法和基于学习的方法。其中,基于插值的方法主要分为双线性插值、双三次插值(Bicubic)等算法,其方法简单直观,能够快速得到相应的结果,但是图像重建之后容易存在锯齿、模糊等一系列问题。基于重建的方法有迭代反投影算法[4]和凸集投影算法等,其主要关注图像的高频信息,通过一系列方法恢复图像的高频细节部分。这类算法的迭代次数较少,容易忽略某些重要的细节信息。基于学习的超分辨率方法是近年来超分辨率研究的热点,采用机器学习技术通过事先给定的范例学习LR和HR图像块间映射关系的先验知识,利用这种先验知识能够更好地恢复图像的细节信息,其主要包括邻域嵌入法[5-6]、稀疏表示法[7-9]和基于深度学习的超分辨率算法[10-12]等。
近年来,基于深度学习的超分辨率算法越来越得到研究学者的关注。SRCNN[13]是深度学习应用于超分辨率重建上的开山之作,它采用前端升采样网络结构,直接使用双三次插值算法将LR图像升采样至目标分辨率大小,并将其作为输入,使用深度卷积网络模型重建得到HR图像。ESPCN[14]采用后端升采样网络结构,直接将LR图像作为输入,通过深度学习网络来提取特征,得到细节纹理更清晰的LR图像,再将其作为输入,利用反卷积网络将LR图像上采样至目标分辨率大小,从而得到HR图像。VDSR[15]将残差网络的思想引入到超分辨率重建的领域中,但其只学习图像的高频残差部分,忽略了图像的低频部分,且加快了网络的收敛速度。LapSRN[16]使用的是渐进式升采样网络结构,它的升采样过程不是一步完成,而是采用拉普拉斯金字塔的方式,产生一些中间层次的重建图像作为后续模块的输入图像,直至图像放大到目标大小的HR图像。
上述基于深度学习的超分辨率重建算法虽然取得了较好的重建效果,但是仍然存在一些不足。如ESPCN[14]采用后端升采样网络结构,它的特征提取部分一直在LR空间进行,在最后阶段使用反卷积层将图像进行放大,没有考虑到LR到HR空间的映射变换,容易造成特征信息提取不充分等问题。VDSR[15]采用前端升采样网络结构,需要对图像进行双三次插值放大处理,将会丢失一些图像细节信息,采用递进的层级网络,使得每一个卷积层只能获取到紧邻的上一个卷积层输出的图像特征,仅采用来自LR空间的最后一个卷积层的特征映射进行图像的放大,不利于特征复用,且未充分利用各层之间的图像特征。LapSRN[16]使用渐进式升采样网络结构,它利用不同的倍增系数在一个前馈网络里构建多张超分辨率图像,是单个上采样网络的堆叠,且十分依赖于第一次放大的重建图像结果,如果第一次重建时有特征丢失,后面重建时之前丢失的特征将难以提取。
上述算法都没有考虑到LR图像重建到HR图像时的重构误差优化问题,且其映射关系由最后一层来决定。为了解决上述方法中存在的问题,本文提出一种基于多尺度反向投影的图像超分辨率重建算法。基于迭代反向投影[17]的思想,使用迭代式的升采样和降采样网络结构构建反向投影层,交替使用升采样和降采样来提取图像特征,优化图像重建过程中的重构误差。将局部残差学习和全局残差学习相结合,在反向投影层(Back Projection Layer)中使用局部残差学习,在反向投影模块(Back Projection Module)中使用全局残差学习,实现特征复用,减少网络冗余,加速参数更新的速度,提高网络的收敛速度。基于GoogleNet[18]的思想,使用多尺度的卷积核提取不同尺度下图像的高频信息,通过级联的方式将其连接,得到高分辨率重建结果。
1 相关工作
1.1 迭代反向投影算法
迭代反向投影(Iterative Back Projection,IBP)[16]算法应用于单幅图像进行超分辨率重建时,一般包括以下3个步骤:
步骤1对于现有的原始LR图像Il插值得到模拟的HR图像Ih,通过降质模型产生对应的LR图像。
Ih=Il↑s
(1)
Il=(Ih*g)↓s
(2)
其中,Il表示输入的LR图像,Ih表示使用双三次插值算法得到的HR图像,Il表示通过降质模型后产生的LR图像,*表示卷积运算操作符,g表示卷积核,↑s表示上采样运算符,↓s表示下采样运算符。
步骤2计算每次迭代过程中图像的重构误差,计算方法如下:
Er=Il-Il
(3)
其中,Er为原始图像和通过降质模型后产生的LR图像之差。
步骤3将式(3)中得到的重构误差进行升采样插值并反投影到重建的HR图像中,得到最终的HR图像,计算方法如下:
(4)
1.2 SRCNN
SRCNN[13]首次将深度学习的思想引入到超分辨率重建中,不同于传统的基于插值的超分辨率重建算法,SRCNN[13]通过对图像进行卷积的方式去学习HR和LR图像之间的端对端映射。网络结构分为3部分,具体如图1所示。其中,特征提取层使用9×9的卷积核进行特征提取,非线性映射层使用1×1的卷积核将LR特征映射为HR特征,图像重建层使用5×5的卷积核重建得到HR目标图像。
图1 SRCNN网络结构
2 基于多尺度反向投影的图像超分辨率重建
受到SRCNN[13]的启发,本文算法主要分为3个部分,分别为浅层特征提取模块、反向投影模块和图像重建模块。本文算法的网络结构如图2所示。
图2 本文算法的网络结构
2.1 浅层特征提取模块
在整个网络的初始阶段,设置一个浅层特征提取模块。该模块引入了GoogleNet[18]的思想,在此过程中,使用3×3、5×5、7×7等3种不同像素的卷积核对图像进行卷积处理。利用3种不同像素的卷积核对图像进行特征提取,可以从LR图像中得到更多的细节信息。本模块使用2个卷积层进行特征的提取,第一层的卷积核大小分别为3×3、5×5、7×7,第二层的卷积核大小均为1×1。使用的激活函数为PRelu。经过第一层和第二层卷积层后提取得到的特征图的计算方法如下:
F1=HSFE,3×3(IL)
(5)
F2=HSFE,1×1(F1)
(6)
其中,IL表示原始的LR图像,HSFE,3×3(·)表示可以使用3×3像素的卷积核对LR图像进行卷积处理。同样,采取同样的方式使用5×5和7×7像素的卷积核对LR图像进行卷积处理。F1表示经过第一层卷积后提取到的特征图,F2表示经过第二层卷积后提取到的特征图,HSFE,1×1(·)表示使用1×1的卷积核对图像进行卷积处理操作,目的是为了降低特征图的维度,减少参数,缓解后面训练的难度。
2.2 反向投影模块
基于IBP[17]算法的思想,反向投影层主要分为升采样和降采样2个部分。
2.2.1 升采样
升采样主要分为以下4个步骤:
步骤1对原始图像进行反卷积操作,得到上采样后的特征图,计算方法如下:
(7)
(8)
其中,D表示下采样卷积核。
(9)
其中,Er表示将2次LR图像的高频残差部分进行反卷积操作后得到的特征图。
步骤4将Er加入到第一次卷积后得到的HR特征图中,得到整个升采样的结果,具体如下所示:
(10)
2.2.2 降采样
降采样与升采样结构类似,也主要分为4个步骤:
步骤1对图像进行卷积操作,得到下采样的特征图,计算方法如下:
(11)
步骤2对下采样后的图像再进行上采样操作,得到图像的计算方法如下:
(12)
(13)
其中,E′r表示将2次HR图像的高频残差部分进行卷积操作后得到的特征图。
步骤4将E′r加入到第一次卷积操作后得到的LR特征图中,得到降采样的结果,计算过程如下:
(14)
反向投影层的主要目的是作为一种高效迭代过程来优化重构误差,更深地挖掘LR和HR图像直接的相互依赖关系。在整个网络结构中交替使用升采样和降采样,利用这2个相互连接的采样模块来学习LR到HR的非线性关系。其中,升采样生成HR特征,降采样将其投影到LR空间。通过在升采样和降采样过程中的特征提取,不断调整LR到HR的图像映射关系。在升采样和降采样传递过程中,每一层升采样的输入都来自所有前面升采样层的输出,降采样的处理方式与升采样相同。这样可以实现特征的重复利用,减少网络的冗余,与VDSR[15]不同的是,数据聚合的方式不是对特征映射直接求和,而是采用级联的方式连接,在输入到下一层之前,使用1×1卷积层来降低通道数。反向投影层(Back Projection Layer)网络结构如图3所示。
图3 反向投影层网络结构
在反向投影层中,升采样和降采样的层数设置比为T∶(T-1)。整个反向投影模块中,设置M层反向投影层来进行实验。将每个反向投影层生成的HR特征图进行级联,输入到图像重建模块。
F=H([F1,F2,…,Fn])
(15)
其中,[F1,F2,…,Fn]表示n个反向投影层输出的级联,H表示1×1的卷积函数,F表示经过1×1卷积层后特征融合的输出。
2.3 图像重建模块
浅层特征提取模块采用多尺度的方式对图像进行特征提取操作,得到3个不同尺度的特征图数据。将3个特征图相加,并通过卷积核为1×1的卷积操作来改变其特征维度,将3个不同尺度的特征进行融合。最后,使用卷积核大小为3×3的卷积操作去重建图像,得到最终的HR图像。
Fn-2=(∑HUD,3×3+∑HUD,5×5+∑HUD,7×7)
(16)
Fn-1=HRe,1×1(Fn-2)
(17)
Fn=HRe,3×3(Fn-1)
(18)
其中,∑HUD,3×3、∑HUD,5×5、∑HUD,7×7分别表示3×3、5×5、7×7等3种不同尺度下所提取的特征图之和,Fn-2,Fn-1,Fn分别表示整体网络的最后3层。HRe,1×1(·)表示使用1×1卷积核时的卷积操作,HRe,3×3(·)表示使用3×3卷积核时的卷积操作。
2.4 损失函数
为了防止过拟合,同时为了防止最后得到的图像过于平滑,造成失真,本文选择L1(x)函数作为整体网络的损失函数,具体如下所示:
(19)
其中,Yi表示LR图像,Xi表示HR图像,x为权值参数和偏置参数的集合,i表示整个训练过程中多次迭代训练的序列号。
3 实验结果与分析
3.1 实验环境设置
实验的系统环境为Ubuntu18.04,CPU为Intel Core i7-4700k,GPU为RTX-2070,深度学习框架为Tesnorflow1.2,加速库为CUDA Toolkit 10.0。
3.2 数据集及优化方法
实验使用的训练数据集为DIV2K[19],由1 000张1 920×1 080的高清图像组成,适合应用于超分辨率训练。测试集使用Set5、Set14[20]和Urban100等公开的标准测试集来评估实验结果。
将训练集中的图像顺时针旋转90°、180°、270°,扩增后的数据是原来的4倍,再将图片进行步长为16的裁剪,将图片裁剪为若干个128×128像素的子图像,每次从中选择64张图片作为一个Batch,使用双三次插值算法对子图像分别进行2倍、3倍和4倍的下采样,得到像素大小为64×64、42×42、32×32的LR子图像。将这些子图像作为整个网络的输入。
实验中使用的优化器为Adam[21],动量因子0.9,权重衰减le-4,它能够自动调整学习率,参数的更新不受梯度的伸缩变换影响,同时计算高效且对内存的需求较小。学习率初始设置为0.000 1,网络每迭代20 000次,学习率衰减为原来的0.9倍。
3.3 评价标准
本文采用峰值信噪比(Peak Signal Noise Ratio,PSNR)和结构相似性(SSIM)2种客观评价指标来验证实验效果。其中,PSNR的计算方法如下:
(20)
(21)
其中,X(i,j)表示当前图像,Y(i,j)表示参考图像,MSE表示X(i,j)和Y(i,j)的均方误差(Mean Square Error,MSE),H、W分别表示图像的高度和宽度,n为每像素的bit数,一般取8。PSNR的单位为dB,数值越大表示图像的失真越少,重建效果越好。
SSIM也是一种评价图像质量的指标,分别从亮度、对比度和结构3方面对图像的重建效果进行评价,其计算公式如下:
SSIMm,n=Lm,n·Cm,n·Sm,n
(22)
(23)
(24)
(25)
3.4 实验分析
为了更好地验证本文算法的图像重建效果,将从以下5个方面进行实验。
3.4.1 反向投影模块层数设置
研究表明网络深度对整体网络性能有重要的影响,适当增加网络层数可以提取到更多的特征,提高图像的重建效果。为了达到最佳的实验结果,本文对上述升采样和降采样的层数T以及反向投影层的层数M进行设置。实验以倍增系数scale=4为例,采用Set5测试集进行3组实验,分别设置T=4、M=6,T=5、M=6,T=6、M=6,对应网络层数为42层、54层和66层,实验结果如图4所示。从图4可以看出,初始阶段T=6、M=6时PSNR的值最高,随着迭代次数的增加,T=5、M=6层的网络和T=6、M=6层的网络差距越来越小,只保持微小的优势,考虑到运算的复杂度和时间成本,实验最终选择T=5、M=6的网络模型。
图4 不同层数的PSNR与迭代次数的关系
3.4.2 收敛速度
文献[22]表明,权重参数的更新与损失函数的梯度呈正相关的关系,梯度越大,权重的更新速度越快,网络收敛速度也越快。本文采用迭代式升采样和降采样网络模型,其在特征提取的过程中,与VDSR[15]和LapSRN[16]2种算法使用普通的卷积层来提取图像的特征不同,其是在不断升采样和降采样过程中提取特征的,在反向投影层中,首先使用升采样将图像映射到HR空间上,将LR到HR的投影误差添加到HR特征图中。然后使用降采样将图像从HR空间又映射到LR空间中,再将HR到LR的投影误差添加到LR特征图中。通过这种交替使用升采样和降采样来不断调整图像LR到HR的映射关系,优化它们的非线性关系,从而达到提升LR到HR重建效果的目的。本文算法将原有算法中优化上一层卷积网络到下一层卷积网络的误差调整为直接优化LR到HR的误差,这样会加快网络参数的更新速度,从而使得网络的收敛速度加快。
本文算法在反向投影模块中引入了全局残差学习和局部残差学习的思想,让模块中的每一层与之前所有层都相连,充分利用每一层的特征信息,实现特征复用,有效减少网络的冗余。这样在反向传播时,每一层网络的梯度都会接收前面所有层的梯度,相较于VDSR和LapSRN的每一层网络输入都是上一层网络输出的处理方式,本文算法的权重参数更新速度更快,且网络收敛速度也更快。为了比较算法的收敛速度,在倍增系数scale=4,测试集为Set5的条件下,使用DIV2K作为训练集进行实验,在其他条件保持相同的情况下,实验结果如图5所示。从图5可以看出,相较于VDSR和LapSRN,本文算法的收敛速度更快,且效果更好。
图5 不同算法的PSNR与迭代次数的关系
3.4.3 反向投影层验证
反向投影层(Back Projection Layer)中交替使用升采样和降采样网络来提取图像特征。升采样和降采样可以理解为网络自我纠正的过程,将上采样和下采样提取到的投影误差提供给采样层,这样不断地迭代来产生更优解。本文进行4组实验,在其他条件保持一致的情况下,将反向投影层中的升采样和降采样替换为普通的卷积层,层数用C表示,C为反向投影层中升采样和降采样的层数之和,倍增系数scale=4,测试集使用Set5,实验结果如图6所示。从图6可以看出,相对于去除升采样和降采样的网络,含有升采样和降采样的网络的PSNR更高,且收敛速度更快。
图6 不同网络结构的PSNR与迭代次数的关系
3.4.4 不同尺度卷积核对图像重建效果的影响
在图像超分辨率重建中,特征信息需要在不同尺度上进行处理,图像的结构信息也往往是不同尺度,这是因为单一尺度的特征提取不足以完全恢复图像的高频纹理区域。
为了更好地验证使用多尺度卷积核的必要性,本文算法使用不同尺度大小的卷积核进行实验。在浅层特征层提取特征时,其他条件保持不变,使用3×3、5×5、7×7的单个卷积核和混合使用3×3、5×5、7×7不同尺度的卷积核进行对比实验。实验倍增系数scale=4,测试集使用Set5,以PSNR作为判断标准,结果如表1所示。从表1可以看出,相对于单独使用1个卷积核来提取浅层特征,本文算法可以获得更好的PSNR值。实验证明不同尺度的卷积核能够提取到图像的多种特征,对这些特征信息的融合映射更能充分学习LR图像与HR图像之间的对应关系,从而保证重建图像的细节清晰性。
表1 不同尺度的卷积核在Set5测试集下的PSNR
3.4.5 本文算法与其他主流算法重建效果对比
实验将本文算法与Bicubic、SRCNN[13]、ESPCN[14]、VDSR[15]、LapSRN[16]5种主流算法进行对比,用于测试本文算法的性能。实验选用Set5、Set14和Urban100作为测试集,从3个测试集中选择边缘细节丰富的3张图片进行测试。为了显示纹理细节的重建效果,将特定的图像区域进行放大,观察其细节重建效果。图7、图8和图9展示了本文算法与其他主流算法在超分倍增系数scale=4下测试图像的重建效果。从图7~图9的主观视觉效果上来看,Bicubic整体的效果最差,重建图像较为模糊,基本看不清楚细节信息。SRCNN[13]和ESPCN[14]能够基本反映出图像的特征轮廓,但是在图像边缘区域锯齿比较严重。VDSR[15]和LapSRN[16]可以比较清楚地看清图像的细节信息,但是相对于本文算法来说,重建图像的清晰度不够,在细节信息的重建效果上也不够锐利。综上所述,从主观视觉效果上看,本文算法在细节信息的重建效果上优势更为明显。
图7 Butterfly在不同算法下的重建效果对比
图8 Chimpanzee在不同算法下的重建效果对比
图9 Building在不同算法下的重建效果对比
下面采用PSNR和SSIM 2种指标对算法进行客观评价。表2为以上几种不同的算法在测试集Set5、Set14和Urban100上分别放大2倍、3倍和4倍情况下PSNR和SSIM的平均值。由表2可以看出,相较于传统的Bicubic、SRCNN[13]和ESPCN[14]3种算法来说,本文算法的PSNR和SSIM的数值均有明显提升。相对于VDSR[15]和LapSRN[16]2种算法来说,本文算法的PSNR提高了0.5 dB左右,SSIM提高了0.05左右。
本文算法在浅层特征提取层中使用了多个不同尺度的卷积核对LR图像进行特征提取,得到多个维度的特征信息。在反向投影层中,交替多次使用升采样和降采样,并将它们通过级联的方式连接起来,同时多个反向投影层之间也用级联进行连接,使得最后得到的HR特征图能够利用到之前所有升采样和降采样网络提取到的特征。综合主观效果和客观指标2个方面的因素,本文算法相对于主流超分辨率重建算法能够得到更好的实验结果。
表2 6种算法在不同测试集下的PSNR和SSIM
4 结束语
本文提出一种基于多尺度反向投影的图像超分辨率重建算法。利用迭代反向投影算法的思想,同时将多尺度卷积核的概念引入到算法中,采用多个相互依赖的升采样和降采样模块对图像进行特征提取,在迭代过程中,不仅可以利用升采样模块生成多样的HR图像特征,而且还可以利用降采样层将其映射到LR图像上,能够更加完善地获取图像细节信息。通过实验对比可以看出,本文算法相较于现有主流算法Bicubic、SRCNN、ESPCN、VDSR、LapsRN的优越性。在下一步实验中,可以引入生成对抗网络的思想对网络的结构进一步优化,减少网络的计算复杂度和训练时间,还可以尝试使用多注意力机制通道网络对算法进行相应的改进,以获得更好的重建效果。