姜玉宁,李劲华,2,赵俊莉
(1.青岛大学数据科学与软件工程学院,山东青岛 266071;2.青岛市船舶建造智能精度测量工程研究中心,山东青岛 266071)
单帧图像超分辨率(Single Image Super-Resolution,SISR)重建作为低层次计算机视觉处理任务,在军事、遥感、医学和视频监控等领域应用广泛。SISR 的目标是从单幅低分辨率(Low Resolution,LR)图像中恢复出高分辨率(High Resolution,HR)图像,主要有基于插值的算法、基于重建的算法和基于学习的算法。基于插值的算法[1-3]是利用相邻像素点的信息预估HR 图像像素值,其计算较简单,可在线性时间内生成图像的超分辨率(Super-Resolution,SR),但其未考虑整张图像的语义,导致生成的图像缺少原始图像高频细节信息且无法实现图像锐化,即使增加图像的像素点视觉效果也较模糊,存在严重的失真现象。基于重建的算法是在LR 图像与HR 图像之间引入图像先验或约束条件,利用样本信息计算得到真实数据的分布情况。基于重建的算法包括凸集投影法[4]、迭代反投影法[5]和最大后验概率估计法[6],该算法由于受计算资源和先验条件约束,因此无法生成高质量图像。
近年来,基于深度学习的算法相继出现。文献[7]采用SRCNN方法将卷积神经网络(Convolutional Neural Networks,CNN)应用于SISR 重建,随后多种基于CNN 的网络架构设计[8-9]和训练策略[10-11]被提出,然而这些方法均倾向于输出过度平滑且高频细节缺失的结果。针对该问题,文献[12]提出在特征空间而非像素空间计算的感知损失优化超分辨率模型,有效避免了输出过度平滑与高频细节缺失问题。文献[9,13]将生成式对抗网络(Generative Adversarial Networks,GAN)[14]引入超分辨率重建任务,以促使网络生成更真实自然的图像。文献[15]在超分辨率生成式对抗网络(Super-Resolution Generative Adversarial Networks,SRGAN)结构的基础上使用去除批量归一化(Batch Normalization,BN)层的残差块(Residual Block,RB)并提出增强深度残差网络,获得更丰富的高频细节信息。文献[16]以残差密集块(Residual Dense Block,RDB)作为生成网络的主体,虽然可提升图像重建效果,但图像伪影较多。
为提高图像重建质量,本文提出一种纹理增强的生成式对抗网络超分辨率(Texture Enhanced Super-Resolution Generative Adversarial Networks,TESRGAN)重建算法。使用去除批量归一化层的残差密集块构成生成网络,以VGG19 网络作为判别网络的基本框架,在加强前向特征复用、减少参数量的同时控制生成图像的训练方向,融合纹理损失函数、感知损失函数、对抗损失函数和内容损失函数构成生成器的目标函数,并在Set5、Set14 和BSD100 数据集上重建图像。
GAN 是一种通过对抗过程估计深度学习中生成模型的新框架,其结构如图1 所示,主要包括生成器G和判别器D。GAN 的基本思想是零和博弈论,其采取对抗学习的方式训练和优化模型达到纳什平衡[17],估测数据样本的潜在分布并生成新的数据样本目标。GAN 的生成器和判别器用任意可微分的函数表示,分别以随机变量z和真实数据x作为输入。G(z)表示由生成器生成的服从真实样本分布pdata的数据。判别器D可视为二分类器,如果判别器D的输入为真实数据,则其输出1,否则其输出0。生成器G的目标是迷惑判别器D使其对生成器G输出的评价结果接近1。生成器G与判别器D相互对抗迭代优化,直到判别器D无法区分输入样本是来自生成器G还是来自pdata,此时可认为已获得目标生成器G。
图1 GAN 结构Fig.1 GAN structure
GAN 目标函数的表达式为:
生成器G要最小化目标函数以生成能更好地迷惑判别器D的样本数据,而判别器D要最大化目标函数,使判别器D能更好地分辨样本数据的真伪。
在深度学习网络中,梯度消失和梯度弥散问题常随网络层数的增加而加重。针对该问题,ResNets[18]、Highway Networks[19]和Stochastic depth[20]等网络应运而生。虽然这些网络的结构与训练过程不同,但其关键点都在于创建了从前期特征层到后期特征层的短路径。为保证不同特征层之间信息流的最大程度传递,文献[21]提出一种密集卷积网络(Dense Convolutional Networks,DenseNet)。DenseNet 的每一层均从其所有前馈层中获得额外的特征输入,并将其自身的特征图传到后续所有层中进行有效训练。假设DenseNet 有L层,则其中有(L+1)/2 个连接,而L层的传统神经网络有L个连接。因此,DenseNet 是一种更深层和有效的卷积网络,其密集连接机制如图2 所示(其中C表示级连接操作)。该网络可显著缓解梯度消失问题,其增强特征传播、鼓励特征复用的结构设计可大幅减少参数量。目前DenseNet 已广泛应用于图像分类[21]、语义切割[22]和语音识别[23]等领域。
图2 DenseNet 的密集连接机制Fig.2 Dense connection mechanism of DenseNet
为解决GAN 训练不稳定与网络易崩溃的问题,文献[24]提出Wasserstein 生成式对抗网络(Wasserstein GenerativeAdversarial Networks,WGAN),用Wasserstein距离代替JS 散度来度量真实样本和生成样本之间的距离,无需平衡生成器与判别器的训练程度并可确保生成样本的多样性。但WGAN 采取的权重剪枝策略会导致参数集中化以及调参时梯度爆炸与梯度消失问题。为此,文献[25]在WGAN 基础上提出梯度惩罚Wasserstein 生成式对抗网络(Wasserstein Generative Adversarial Nets-Gradient Penalty,WGAN-GP),进一步改进网络的目标函数并惩罚判别器对输入的梯度,其性能优于WGAN。WGAN-GP 可稳定训练针对图像生成和语言模型的GAN 架构,不需调整超参数,并能以更快的收敛速度生成比WGAN 质量更高的样本。WGAN-GP 未改变GAN 结构,仅从目标函数的表达式及优化方法的选择上对WGAN 进行改进。
本文提出的TESRGAN 算法以生成式对抗网络为框架,主要包括生成网络和判别网络,TESRGAN算法结构如图3 所示。生成网络的输入是LR 图像,经卷积提取特征后输入残差模型进行非线性映射,再通过上采样层和卷积层重建图像后输出生成的HR 图像,并将其与真实HR 图像输入判别网络,经由卷积(Conv)层、LeakyReLU 函数和BN 层构成的特征提取模块以及由全局平均池化(GlobalAverage Pooling,GAP)操作、LeakyReLU 函数、全连接层(Dense(1))与Sigmoid 函数构成的线性分类模块处理后,可判别输入样本的真假。
图3 TESRGAN 算法结构Fig.3 Structure of TESRGAN algorithm
2.1.1 生成网络
网络的BN 层在训练期间易引入伪影并限制泛化能力,去除BN 层可降低网络的计算复杂性,并提高网络在超分辨率任务[15]和去模糊任务[26]上的重建性能。为提高图像重建质量,本文提出的TESRGAN在SRGAN生成网络的结构上进行改进,移除SRGAN中所有BN层,用LeakyReLU 函数代替ReLU 函数作为网络的非线性激活函数以避免梯度消失,LeakyReLU 函数的计算公式如下:
其中,x为输入,y为输出,a为范围为(0,1)的实数。
由于深层次网络与多级连接可提高网络性能[23,27-28],因此本文使用残差密集块代替SRGAN的残差块构成生成网络基本单元。残差密集块比残差块结构更深且更复杂,其兼具残差网络与密集连接的优势,能在增加网络深度的同时提升图像特征信息利用率,最终提高重建图像的质量,残差块和残差密集块的结构如图4 所示。本文TESRGAN 算法的生成网络为包含36 个残差块的深层网络,因此其具有更大的容量和更强的语义信息捕捉能力,能减少重建图像的噪音,生成具有真实精细纹理的图像。
图4 残差块和残差密集块的结构Fig.4 Structure of residual block and residual dense block
2.1.2 判别网络
TESRGAN 算法的判别网络以经典的VGG19 网络为基础架构,包括特征提取模块和线性分类模块。特征提取模块共有16 个卷积层,在每个卷积层后使用LeakyReLU 作为激活函数。为避免梯度消失并增强网络稳定性,特征提取模块中除了首个卷积层之外,其他每个卷积层后均设置BN 层。判别网络需对输入的样本图像进行真假判断。为避免网络训练速度过慢与增大过拟合风险,本文使用全局平均池化[29]操作代替全连接层,计算特征提取模块中每层特征图的像素平均值,并对其进行线性融合后输入Sigmoid 激活函数,最终网络输出判别器对输入样本图像的分类结果。判别网络的训练有助于生成网络重建出更接近真实图像的高分辨率图像。
损失函数是影响图像重建质量的重要因素。为恢复图像高频信息,提升图像直观视觉体验,本文采用调整的感知损失函数Lper、纹理损失函数Ltex、内容损失函数Lcon以及对抗损失函数Ladv的加权值作为训练生成网络的目标函数LG,并在优化过程中分别从高频、低频两个角度完成目标图像重建,损失函数表达式如下:
其中,λ和η为损失函数的平衡系数。
1)内容损失
为保证重建图像与低分辨率图像之间低频信息的一致性,本文采用均方误差(Mean Squared Error,MSE)损失函数作为网络的内容损失函数,用于优化生成的HR 图像与真实HR 图像对应像素之间的平方差,缩小像素之间的差值能有效保证重建图像信息的准确性,从而使重建图像获得较高的峰值信噪比。内容损失函数的计算公式为:
2)对抗损失
基于生成网络和判别网络的对抗博弈机制,生成网络输出一张HR 图像后利用判别网络可得到该图像真假概率。为使重建图像通过判别器D甄别的概率最大化,本文采用WGAN-GP 的对抗损失函数替代GAN 的对抗损失函数以惩罚判别器D对输入的梯度,对抗损失函数的计算公式为:
优化后的对抗损失函数可稳定训练针对图像生成和语言模型的GAN,无需调整超参数,能以更快的收敛速度生成质量更高的样本。
3)感知损失
为获得亮度信息准确与纹理逼真的图像,本文设置基于VGG 网络的感知损失函数Lper,使用激活前的特征层信息进行计算,在预训练深度网络激活层上定义Lper以最小化两个激活特征之间的距离,感知损失函数的计算公式为:
其中,Wij和Hij为VGG 网络中特征图的维度,φij为VGG 网络中第j次卷积后第i次最大池化操作前得到的特征图。感知损失函数Lper改进了原始设计的不足:(1)对深层次网络,激活后的特征会很稀疏,而稀疏特征只能提供弱监督造成图像质量低劣;(2)使用激活后的特征层信息导致重建图像的亮度与真实HR 图像不一致。
4)纹理损失
感知损失虽然能整体提升重建图像的质量,但会引入多余的高频结构,本文采用文献[13]提出的纹理损失函数构成生成器总损失函数。纹理损失函数Ltex可促进纹理信息进行局部匹配,分别提取生成网络和判别网络卷积中间层输出的特征映射图并计算相应的Gram 矩阵,利用得到的中间层Gram 矩阵值和损失函数L2计算网络的纹理损失函数,其计算公式为:
其中,G为Gram 矩阵,G(F)=FFT。纹理损失函数为减少图像伪影以及产生更逼真的纹理提供了有效监督。
本文通过图像重建实验对TESRGAN 算法进行验证。实验环境为NVIDIA 显卡GeForceMX150、Intel®CoreTMi7-8550U CPU@2.00 GHz、8 GB RAM,编译软件为Pycharm 2017 和MATLAB 2018a。实验采用DIV2K 数据集对网络进行训练,该数据集有1 000 张RGB 图像,分别取其中的800 张、100 张和100 张图像作为训练集、验证集与测试集,通过将图像随机水平翻转和垂直旋转对训练集进行扩展。在常用的基准数据集Set5、Set14 以及BSD100 上进行测试实验,HR图像与LR图像之间的下采样因子为4,HR图像被裁切为128像素×128 像素的图像块,输入批量大小设置为16。
实验训练过程如下:先训练以损失L1为目标函数的生成网络,以此网络作为生成器G的初始化设置,使用损失函数LG训练生成器G,其中λ=5.0×10-3,η=1.0×10-2,初始学习率为1.0×10-4。训练过程中使用Adam 算法进行优化,交替更新生成网络和判别网络直到网络模型收敛。此外,为保证深层次网络的稳定训练,在TESRGAN 算法中采用残差缩放策略通过乘以常数β∈(0,1)来缩小残差(本文中β=0.2),再将其添加到主路径,以防止训练过程不稳定并修正错误的初始化参数,从而避免因初始参数设置不合理造成网络输入信号的错误被放大的可能性。
为准确评价图像质量并证明TESRGAN 算法的有效性,本文采用峰值信噪比(Peak Signal to Noise Ratio,PSNR)和结构相似性(Structural Similarity,SSIM)作为图像质量评价指标。PSNR 从像素点差异衡量图像的失真度,SSIM 从亮度、对比度和结构衡量图像的相似度。若PSNR 值与SSIM 值越大,则表示图像重建结果越接近原始高分辨率图像,其计算公式如下:
3.2.1 客观效果
本文在Set5 数据集和Set14 数据集上进行超分辨率实验,对比分析引入RDB 结构、纹理损失函数Ltex和改进对抗损失函数Ladv、感知损失函数Lper对图像超分辨率重建算法性能的影响。表1 为不同条件下图像超分辨率重建算法在Set5 和Set14 数据集上的PSNR,可以看出上述措施均可提高算法的超分辨率重建性能,且4 种措施联合使用时效果最佳。
表1 不同条件下图像超分辨率重建算法在Set5 和Set14 数据集上的PSNRTable 1 PSNR of image super-resolution reconstruction algorithm on Set5 and Set14 datasets under different conditionsdB
将本文TESRGAN 算法与Bicubic[2]、SRGAN[9]、EDSR[15]以及ESRGAN[16]等算法在Set5 数据集、Set14 数据集和BSD100 数据集上的图像重建结果进行对比,结果如表2 所示。可以看出,TESRGAN 算法在上述3 个数据集上的PSNR 值均高于其他算法,其SSIM 值除了在Set14 数据集上略低于ESRGAN算法外,在其他两个数据集上均高于对比算法。
表2 5 种算法在Set5、Set14 和BSD100 数据集上的图像重建结果Table 2 Image reconstruction results of five algorithms on Set5,Set14 and BSD100 datasets
上述5 种算法在Set5 数据集、Set14 数据集和BSD100 数据集上的运行时间如表3 所示。可以看出:Bicubic 算法因仅有插值操作而耗时最短,其他算法含有大量卷积层造成网络训练速度较慢,其中SRGAN 算法因网络结构中未去除BN 层导致重建速度最慢;TESRGAN 算法因引入深层次网络与纹理损失函数的计算,速度略慢于EDSR 算法和ESRGAN 算法。结合表2 和表3 可知,TESRGAN 算法在未延长较多运行时间的情况下,其PSNR 值和SSIM 值较其他算法更高,表明本文算法具有更好的图像重建效果。
表3 5 种算法在Set5、Set14 和BSD100 数据集上的运行时间Table 3 Running time of five algorithms on Set5,Set14 and BSD100 datasetss
3.2.2 主观效果
从Set5 数据集和Set14 数据集中各选取一张图像,将上述5 种算法的图像重建效果进行对比,结果分别如图5 和图6 所示。可以看出:Bicubic 算法的重建细节信息太少,生成的图像很模糊;SRGAN 算法和EDSR算法虽然恢复了部分高频信息,但图像边缘锐化效果较差;ESRGAN 算法重建图像整体效果较好,却引入伪影和噪音信息;TESRGAN 算法的重建效果在锐度和细节方面均优于其他算法。由图5 中放大的细节可以看出,TESRGAN 算法图像重建后得到的帽子纹理更清晰。由图6 中放大的细节可以看出TESRGAN 算法得到的图像纹理细节更清晰且亮度信息更准确。
图5 不同算法在Set5 数据集上的图像重建效果Fig.5 Image reconstruction effect of different algorithms on Set5 dataset
图6 不同算法在Set14 数据集上的图像重建效果Fig.6 Image reconstruction effect of different algorithms on Set14 dataset
本文在生成式对抗网络的基础上,提出一种图像超分辨率重建算法。通过去除批量归一化层并引入残差密集块增加生成网络深度,根据WGAN-GP 理论改进对抗损失加快网络模型收敛,使用激活前的特征计算感知损失并引入纹理损失,以提高图像局部纹理细节匹配度。实验结果表明,与SRGAN 和EDSR 等算法相比,该算法在未延长较多运行时间的情况下,重建结果的纹理细节更清晰且亮度信息更准确。后续将针对特定领域与场景的图像进行超分辨率重建,进一步提升重建质量。