王知人, 谷昊晟, 任福全, 史紫腾, 王 瑞
(燕山大学 理学院 河北 秦皇岛 066004)
图像超分辨率(super-resolution,SR)技术是从模糊不清的低分辨率(low-resolution,LR)图像中重建出更加清晰的高分辨率(high-resolution,HR)图像。SR主要在各种计算机视觉任务中应用广泛,例如安全和监视成像、医学成像和图像生成。目前图像SR算法主要包括基于插值的、基于重建的和基于学习的方法[1]。基于插值的算法虽然简单、运算速度快,但是重建效果不够好、稳定性差。基于重建的算法受先验知识影响较大,重建效果不稳定。基于学习的算法是目前超分辨率领域中发展前景最好的一类算法,在计算机视觉领域获得了明显的优势。比较传统的方法有基于局部线性嵌入的方法[2]和基于稀疏表示的方法[3]。Dong等[4-5]首次将三层卷积神经网络(convolutional neural network,CNN)引入图像SR,提出了基于深度卷积神经网络的图像超分辨率方法(super-resolution convolutional neural network,SRCNN),建立了插值LR图像与其对应HR图像之间的端到端映射,其重建效果比传统的非深度学习方法有显著提升。然而,基于CNN的SR算法容易受到卷积核大小和卷积层数量的影响。Kim等[6]通过使用20个卷积层的网络深度,使感受野变得更大,构建了基于深度超分辨网络(very deep network for super-resolution,VDSR),并利用残差学习和梯度裁剪,降低网络的训练难度,然后在VDSR的基础上构建深度递归卷积网络(deeply-recursive convolutional network,DRCN)[7],引入递归学习以进行参数共享,降低了网络参数。Zhang等[8]提出的基于深度卷积去噪先验图像超分辨率网络(deep CNN denoiser prior for image restoration,IRCNN),Shi等[9]提出的多尺度超分辨率网络(multiple scale super-resolution network,MSSRNet),在网络中引入了扩张卷积技术,使网络的参数进一步减少,重建效果良好。
然而,以上这些方法都需要将原始LR图像应用到网络之前对其进行插值处理,网络从插值LR图像中提取特征,无法建立端到端的LR与HR图像映射。这个预处理步骤不仅增加了网络的计算复杂度,而且使原始LR图像过于平滑和模糊,从而造成细节上的丢失。为了解决这个问题,Dong等[10]提出基于卷积神经网络的快速图像超分辨率网络(fast super-resolution convolutional neural network,FSRCNN),直接将原始LR图像作为输入,不需要先使用双三次插值将输入图像放大,而是使用反卷积层对输出特征进行放大,实现上采样。Shi等[11]提出了基于高效亚像素卷积神经网络的图像超分辨率网络(efficient sub-pixel convolutional neural network,ESPCN),网络直接对LR图像进行特征映射,并且引入了一个有效的亚像素卷积层,它的作用和反卷积层一样用来实现上采样。以上方法都是直接在低分辨率空间中进行映射,并通过引入反卷积层或亚像素卷积层对网络最后输出的低分辨率特征进行放大。这些操作使网络计算的复杂度大大减小,增加网络训练的效率。
另一方面,这些网络都是以链式方式堆叠构建模块的。它们忽略了充分利用来自多层卷积层的信息,只考虑了卷积层最后输出的特征。每一个卷积层都会产生不同的独特特征。深层网络生成的分层特征对提高图像SR重建效果具有很大作用。Ledig等[12]首次将生成对抗网络用于图像超分辨率重建(super resolution generative networks,SRGAN),其中的生成网络部分利用残差网络(residual networks,ResNets)实现了信息层与层之间的传递。Tong等[13]构建了基于密集网络的图像超分辨率网络(super-resolution dense network,SRDenseNet),通过密集网络加强了特征传播,实现了多层特征的融合,进一步提升了重建效果。
本文提出了一种多映射残差卷积神经网络(multi-mapping residual convolutional neural network,MMRCNN),它使用深度网络作为基本框架,使用跳跃连接来显著增加映射阶段的输出特征数量,降低深度网络训练的难度。此外,本文引入批量归一化(batch normalization, BN),以提高MMRCNN的模型训练性能。为了建立从原始LR到HR图像的端到端映射,避免额外的计算开销和重建伪像,本文选择在重建期间进行上采样而不是预处理。
本文的创新点主要有3方面:
1) 提出了一个从原始LR到HR图像的端到端映射。直接对LR图像进行训练,不进行预处理。计算成本较低,避免了重建伪像。
2) 利用残差学习建立多映射网络。不仅可以解决网络退化问题,而且可以使用多个分支映射来获得更丰富的鲁棒特征,克服了单一级联网络输出导致的特征集不足的弊端。
3) 使用批量归一化来优化网络。最后,本文的MMRCNN在量化指标和视觉质量方面都能实现较好的效果。
如图1所示,MMRCNN可以分解为3个部分:特征提取、非线性映射和超分辨率重建。前两部分是卷积层(convolutional layer),用Conv来表示,最后一部分是反卷积层(deconvolutional layer),用Deconv来表示。下面为MMRCNN模型的网络结构介绍。
图1 MMRCNN网络架构Figure 1 The architecture of MMRCNN network
1.1.1特征提取 第1层为Conv+PReLU层,使用64个大小为5×5×c的滤波器来生成64个特征图,然后使用参数修正线性单元(parametric rectified linear unit,PReLU)进行非线性处理。这里c表示图像通道的数量,灰度图像时c=1,彩色图像时c=3。
1.1.2非线性映射 第2~16层为Conv+BN+PReLU层,使用64个尺寸为3×3×64的滤波器,并且在卷积与PReLU之间添加批量归一化操作[14]。此外,将非线性映射中每3个卷积层分为1个单元,即将15个卷积层分为5个单元,这样可以使映射之后得到的特征与原有的特征存在一定的差异性。最后,对卷积层添加5条跳跃连接来建立多映射网络模型,保证每一个单元的输出可以直接与重建模块相连接,充分地提取图像的内部信息。
1.1.3重建 最后一层为Deconv层,反卷积层可以看作是卷积的逆过程。本文使用反卷积操作对图像进行上采样,用c个大小为9×9×64的滤波器来重建输出。
残差网络和跳跃连接由He等[15]提出,这种网络结构使得深层网络的训练更加容易,从而可以提升深度网络的性能。图2为残差块的基本结构。
图2 残差块的基本结构Figure 2 The basic structure of the residual block
如图2所示,残差网络在卷积层上使用跳跃连接来建立层与层之间的连接。残差块函数定义为
y=F(x,{Wi})+x,
(1)
其中,x和y分别代表残差结构的输入和输出,函数F(x,{Wi})代表残差映射。深层网络会产生退化问题,这种情况是由冗余的网络层产生的。假设网络中的冗余层学习到的映射为恒等映射,即y=x,那么深层网络就相当于变成了浅层网络,模型的训练效果会更好。残差网络的残差结构使原始要学习的y,被表示成y=F(x)+x,因此对恒等映射y=x的学习,就转换为对残差函数F(x)=y-x的学习。当F(x)=0时,就相当于拟合恒等映射函数y=x,相比于用非线性层的堆叠来拟合恒等映射,网络层学习F(x)=0更为容易。利用这种残差学习策略,可以使深层卷积神经网络的训练变得更为容易,提升模型重建效果。本文对映射中的卷积层添加5条跳跃连接,建立多映射模型,充分提取每部分的特征信息,提高超分辨的效果。
本文在网络的每一层的非线性映射之前使用批量归一化[14]和缩放移位步骤,以减轻每个卷积层输入数据分布的变化,即减轻内部协变量偏移。批量归一化每次激活时仅添加两个参数,并且可以使用反向传播来更新参数。批量归一化具有训练速度快、性能好、初始化灵敏度低等优点。通过实验发现,在残差学习基础上使用批量归一化可以实现更好的超分辨率性能。
数据集:本文参考了不同的基于学习的SR方法的训练集。SRCNN采用Yang等[3]的91幅图像(91images)以及ImageNet数据集两种训练集来训练。FSRCNN使用General-100与91images联合作为训练集。VDSR使用291幅图像作为训练集,其中包括91images及BSD200,并使用旋转以及缩放处理,来增加训练集。本文采用的训练集同样为291幅图像,包括91images、General-100和BSD100[16],并使用与VDSR相同的方式进行数据增强。首先,将原有图像进行旋转90°、180°和270°处理,这样数据量会增加为原先的4倍,然后再将旋转后的图像进行0.6、0.7、0.8和0.9倍的缩放处理。经过多角度的转换后,本文的训练数据变为原来的20倍,即291×4×5=5 820张训练样本。测试阶段选取了图像集5(set5)[17]和图像集14(set14)[18]两个通用的数据集。
实验细节:训练时,首先对训练图像进行随机剪裁,获得一系列33×33像素的HR子图像{Xi},然后对子图像{Xi}进行双三次下采样,缩到原图的1/3大小,得到一系列低分辨率图像,然后再次使用双三次上采样,放大3倍,得到与HR图像样本{Xi}相对应的LR图像样本{Yi}。本文按照步长为14的大小从原始训练图像中提取样本,经过实验,更小的步幅没有带来明显的效果提升。从实验效果来看,训练集足以训练本文的深度网络。网络的最大迭代次数设置为1×105,每种算法的放大倍数都选取为3倍。本文在训练过程中仅仅针对Y通道进行训练。本文实验环境为Matlab2016a和Caffe深度学习框架。
评价标准:本文选择峰值信噪比(peak signal-to-noise ratio,PSNR)和结构相似性(structural similarity,SSIM)[19]来作为评价图像重建质量的重要指标。两者数值越高,模型效果越好。
2.2.1客观量化评价 本文在set5和set14这两个测试集上详细对比了Bicubic(BI)、ScSR[3]、KSVD[20]、ANR[1]、NE+NNLS[2]、NE+LLE[21]的PSNR值,具体数据如表1和表2所示。在整体数据集上对比了Bicubic、SRCNN-Ex[5]、FSRCNN[10]、VDSR[6]、MSSRNet[9]、ZSSR[22]的PSNR值和SSIM值,其中除Bicubic外,其他5种方法都是基于深度学习的图像超分辨方法,具体数据如表3所示。表1~3中最好的结果用粗体表示。
表1 set5测试集上,不同图像超分辨率方法的PSNR对比Table 1 The PSNR of different image super-resolution methods on the set5 test set
表2 set14测试集上,不同图像超分辨率方法的PSNR对比Table 2 The PSNR of different image super-resolution methods on the set14 test set
表3 set5和set14上,不同图像超分辨率方法的平均PSNR对比Table 3 The average PSNR of different image super-resolution methods on the set5 and set14
由表1~3的实验数据可以看到:在set5数据集上,MMRCNN算法的重建质量要优于其他几种传统算法。在set14数据集上,除barbara图像略低于其他几种传统算法外,另外几种情况下的重建质量也要优于其他几种传统算法。在整体数据对比上,MMRCNN的重建效果比其他几种基于深度学习的算法较好。
2.2.2视觉效果 图3~8所示为部分测试图像的重建效果图,本文选择了6个图像来进行观察。这里只显示了BI、SRCNN-EX[5]、FSRCNN[10]和MMRCNN的超分辨率重建图像。从视觉效果来看,MMRCNN算法具有较好的重建效果,细节更完善,更接近原始图像。例如,由图3~6的局部放大图可以看到,MMRCNN算法重建的图像更加清晰、噪声更少、细节更加完整。由图7~8的局部放大图可以看到,MMRCNN算法的重建图像纹理更加清晰、边缘更加完整、锐度更强、与原图效果更逼近。
图3 关于图像baby的重建效果比较Figure 3 Comparison of reconstruction effect of image baby
图4 关于图像butterfly的重建效果比较Figure 4 Comparison of reconstruction effect of image butterfly
图5 关于图像baboon的重建效果比较Figure 5 Comparison of reconstruction effect of image baboon
图6 图像pepper的重建效果比较Figure 6 Comparison of reconstruction effect of image pepper
图7 图像zebra的重建效果比较Figure 7 Comparison of reconstruction effect of image zebra
图8 关于图像ppt3的重建效果比较Figure 8 Comparison of reconstruction effect of image ppt3
本文提出了一种用于图像超分辨率的多映射残差卷积神经网络,有效地解决了传统方法中单一映射输出不能完全提取图像特征集的问题。该算法通过跳跃连接大大提高重建模块的训练特征集,提高超分辨率重建图像的质量。同时该算法集成了批量归一化,加快了训练过程,提高了超分辨率性能。实验结果表明,本文算法的重建效果在客观图像量化评价和视觉效果上均有所改善和提高,能够恢复更多的图像细节,具有更好的视觉效果。在未来,将继续研究合适的CNN模型,进一步提高模型的重建性能。