APP下载

一种注意力机制与SRGAN网络结合的超分辨率算法

2021-12-08章韬略周永霞

小型微型计算机系统 2021年12期
关键词:残差分辨率卷积

章韬略,周永霞

(中国计量大学 信息工程学院,杭州 310018) E-mail:361082923@qq.com

1 引 言

从低分辨率(LR)图像中评估得出高分辨率(HR)图像,这一任务被称为超分辨率(SR).超分辨率在各个领域都有着良好的发展前途,例如军工领域、农业领域,又或者是在医学方面有着至关重要的作用.超分辨率在近几年兴起的人工智能行当里具有举足轻重的意义.

Harris在20世纪60年代时第一次提出了根据传统的提高图片质量的超分辨率方法,这在当时是首开先例的.之后产生了例如基于差值[1]的方法、基于超分辨率重建的方法[2]、基于机器学习的方法[3],但是这些算法的效果虽有所提高却并不显著.比如使用差值方法计算时,首先假设每个像素的灰度值在连续的变化,之后再计算出相邻像素灰度值的变化通过公式计算得出需要插入灰度值的值.但是这种方法的缺陷是并没有考虑到在实际生活中一张照片每个像素之间的变化都是非常的随机性的以及复杂的因此这种方法的效果并不理想.

最早将深度学习方法引入超分辨率的研究的学者是Dong[4].他通过卷积的方法将一张图片做卷积导入神经网络,这是第一次使用深度学习的方式来解决提升图片质量的问题.这种算法虽然只有3层的卷积网络来将图片由低分辨率转化成高分辨率,相比传统的所有算法,不仅视觉效果上有显著的提升,而且在评价一张照片质量好坏的PSNR(峰值信噪比)以及SSIM(结构相似性)指标上也有了明显的改善.但是由于这个算法输入的图片是双三次差值得到的高分辨率图像,因此卷积的计算量较为复杂同时,超分辨重建的效率也较为低下.为了解决这个问题,Shi[5]等研究出ESPCN模型,该模型通过直接在低分辨率图上进行卷积提出Feature Map,然后用子像素卷积层来改变图片输出大小,这种方式相较于SRCNN重建效率有了很大的提升.但是当放大倍数过大时,会导致重建图像高频特征不明显,细节过于平滑跟真实图像有较大差距.

此后,Kim[6]根据高低分辨率图像之间的低频特征具有相似性这一特征,新研究出了一种模型(VDSR),为了加快模型训练的收敛速度,其使用了残差学习.然而还是存在收敛速度和梯度信息传递艰难的问题.于是在此基础上,Tai[7]等发表DRRN模型,将其卷积深度加深到52层,同时在网络模块上使用递归权重共享的方法,可是实验结果虽有一定的提升,但是效果却并不明显.

直到Ledig[8]等提出了SRGAN模型,他们将生成对抗网络首次引入超分辨率领域,将低分辨率的图像传输到生成网络中训练生成一张高分辨率图像并将其传输给鉴别网路.同时高分辨率图像传输到鉴别网络中,将其与生成网络生成的图片进行对比,循环往复的进行训练,直到鉴别器无法判断哪一张是真实图片哪一张是生成的图片时,说明模型已经模拟出高分辨率的图片了.实验表明这种方法要比之前的线性网络生成的高分辨率图像在图像逼真度上跟高.

本文算法以SRGAN网络为基础,对网络的结构做出改变,引入RCAN[9](Residual Channel Attention Networks)注意力机制模块,同时增加网络深度以更好的表达高频特征.在损失函数上,由于MSE(均方误差)有平方项加大了大误差对图像超分辨率的影响,因此改用L1损失函数[10].通过实验证明,SRGAN超分辨率产生的伪影有一定程度的减少,模型稳定性增强了许多,并且有较好的实验结果.

2 超分辨率重建模型

SRGAN是将生成对抗式网络应用于超分辨率的网络,网络框架如图1所示,SRGAN的效果是能将超分辨率放大因子提高,研究表明当放大倍率为X4或是X8的时候超分辨率所达到的效果较好.由于基于传统的超分辨率网络重建[11]亦或是线性网络所获得的图像会产生较为平滑的图像质量,对相关细节的还原度并不好.但是SRGAN则相当于两个模拟的模型互相进行对抗的过程,G网络根据训练集生成伪高分辨率图片,D网络根据真实高分辨率图片来判断G网络产生的图片与真实图片相比有多少误差,不断的进行循环往复生成验证的过程.G和D的对抗公式如公式(1)所示.

图1 SRGAN网络框架Fig.1 Network Framework of SRGAN

minGmaxDV(D,G)=Ex-Pdata(x)[logD(x)]+
Ez-Pz(Z)[log(1-D(G(Z)))]

(1)

其中x为真实样本;D(x)是x经过鉴别器以后,判断为真实图片的概率;Z为输入噪声,G(Z)是噪声经过生成网络输出的样本.

2.1 网络模型

SRGAN的网络是由生成网络和判别网络来组成,低分辨率图像由生成网络放大后重建出高分辨率图像,鉴别网络对低分辨率图像和高分辨率图像进行判断,输出鉴别概率用于真假判断.网络中的损失函数加入了鉴别损失用于引导生成网络生成高质量的伪高分辨率图像.

SRGAN生成网络原来主要由亚像素层和残差块组成,但是产生的效果图在高频特征上的表现并不好,因此通过阅读论文加入了注意力机制,特别是对高频特征的处理.

2.1.1 生成网络

本文生成网络模型如图2所示,其结构包含6个残差模块和长跳跃连接.同时,每个残差组块包含有10个短跳跃连接以及残差通道注意力块.这种残差模块包含残差模块的结构能够使超分辨率算法训练更深.而且,引入残差注意力块是为了更好的复原高频图像信息.在2.2中会详细介绍生成网络中残差通道注意力块的构成.

图2 SRCAGAN生成网络模型图Fig.2 SRCAGAN generates network model diagrams

2.1.2 鉴别网络

本文训练鉴别网络是线性网络结构,参考了Ledig[8]等提出了SRGAN模型中鉴别网络的结构,具体结构如图3所示,模型第1层为一个2D卷积和一个Leaky ReLu激活函数,之后是7个由卷积、BN层、Leaky ReLu激活函数组成的模块.最后一部分由平均池化层、2个卷积层和一个Leaky ReLu函数构成.为了简化计算过程和避免在网络结构中引入最大池化层的操作,模型使用Leaky ReLu作为激活函数.随着网络模型层数的加深,提取特征能力增强,图片特征数目不断增加而每个提取特征的卷积尺寸在持续变小.Leaky ReLU激活函数在负值数保留的效果比ReLU函数好,使模型能避免稀疏梯度,因此选用Leaky ReLU作为激活函数.模型最后将参数传入两个全连接层与最后的sigmod激活函数,得到通过生成网络产生的假图片与真实图片比较的相似度概率.经过与生成网络的持续对抗,直到鉴别网络得出的数值趋近稳定.为了避免梯度消失,在Leaky ReLU之后,网络里通过使用批量归一化来增强泛化能力.

图3 SRCAGAN鉴别网络模型图Fig.3 SRCAGAN identification network model diagrams

2.2 注意力机制

专注高频的注意力机制模块称为CA,它是在参考了RCAB(残差通道注意力块)以及CBAM[12](Convolutional Block Attention Module)两个模型以后得出,它是由一个平均池化层,两个卷积层一个ReLu激活函数构成一个模块,而另一个模块由最大池化层、两个卷积层以及一个ReLu激活函数组成.两个模块的输出相加以后形成一个残差块.输出是由输入x与通过卷积层处理后的输出y相乘所得.通过这种方法可以使得重要通道即高频特征权重更大,对图片效果质量提升幅度小的部分的通道权重减小.具体结构如图4所示.

图4 ResCA注意力机制模块图Fig.4 ResCA attention mechanism module diagram

一般的CA主要包括以下3个部分:

1)squeeze即CA(Channel Attention)是将图片各个特征压缩成一个点,SA(Spatial Attention)是将n个特征压缩成一个图谱.

2)excitation即通过全连接层,为了得到1×1×C的向量(CA),而通过通道(channel)之间的联系,从而得到1×1×C的向量(CA);或者通过卷积层,获取空间区域关系得到H×W×1的一张图(SA).

3)scaling,同sigmoid将attention map转换成0-1之间的图,然后与输入进行点乘.

受到EDSR残差模块[13]的启发,由于残差块和残差块之间的长跳跃连接能够让网络的主要部分将注意力更多的集中在低分辨率特征的信息上,因此,本文将若干ResCA模块连接,组成RResCA模块.模型如图5所示.

图5 RResCA模块Fig.5 Module of RResCA

因为在文献[13]中已经证明,使用叠加的残差块和长跳跃构建的深度的神经网络,表现较好.因此残差组由若干RResCA模块组成.但是由于网络过深会造成训练困难,所以将总的残差RResCA模块数定为5和10,通过两者比较来得到最好的训练效果.

同时去掉SRGAN 中生成网络所带的所有BN层,因为去除掉BN层已经被证明在不同的PSNR-oriented任务中对网络的性能有显著性的增强同时能减少网络训练时计算的复杂度,包括超分辨率和去模糊[14].BN层作用是在模型训练期间批量将图片用均值和方差处理的方法所有特征进行归一化处理,在测试期间时使用训练模型时得到的估计均值和方差代入模型进行测试.然而,在训练数据集和测试数据集两方统计数据相差较大时,使用BN层经常会产生让人不适的伪影,这是由于BN层在一定程度上减弱了模型的泛化能力.以经验观察到,BN层有可能当网络较深或者在GAN网络的训练下产生伪影.这些伪影偶尔出现在迭代和不同设置之间,缺少稳定性.因此,为了训练的稳定性和一致性去除了BN层.此外,去除BN层有助于提高泛化能力,减少模型计算复杂度和服务器内存使用.

2.3 损失函数

SRGAN的损失函数如公式(2)所示:

(2)

其中:lX损失函数名为最小绝对值偏差:

(3)

L1损失函数在误差计算方法上是属于原始的,它对较大的误差项不会有过大的惩罚,同时各个像素点相对于真实图片像素之间的误差对于L1损失函数的改变量和误差之间的绝对值成正比例关系.根据WGAN网络,将L1损失函数设计为公式(2)、公式(3).

其中(IH)x,y为根据损失函数计算得到的高分辨率图像,(GθG(IL))x,y则为重建图像.

除了L1损失函数的相关实验,本文还做了一系列MSE损失函数的对比实验.通常在超分辨率网络的重建模型中经常会使用MSE损失函数,它是通过直接优化高分辨率与低分辨率图像各个像素之间的平方差.使其生成的图像的PSNR即峰值信噪比比较高.

虽然MSE损失函数的收敛性较好,但是它对异常点的加权通常都较大,使其误差较大的项相比于误差较小的项影响更大.同时MSE是使用原始度量的方法,这也是导致人眼的直观感受并不友好,常常造成伪影的原因.公式(4)为MSE损失函数的公式.

(4)

在超分辨率重建的过程中,只要图像有一点噪声,对重建的效果都会有极大的影响,因为在超分辨率重建中很多算法会将这些噪声放大.这时候 为了保持图片光滑完整性,需要将一个正则项添加到这个最优化模型中来.其中TVloss是通常会使用的一个正则项.图片中相邻像素之间的差值可以通过使用TVloss来解决一定的问题.见公式(5)、公式(6):

(5)

对抗损失具体公式如公式(6)所示:

(6)

3 实验及分析

3.1 实验环境及其数据集

本实验采用的GPU是NVIDIA GeForce GTX TITAN X,编程语言为python,IDE为Pycharm 2017,深度学习框架为pytorch.

训练时采用VOC2012数据集,放大倍数为X4.在测试时使用Set5、Set14、Urban100以及BSD100 4个数据集,横向比较了Bicubic算法[16]、SRCNN算法[4]、SRResNet[8]算法以及SRGAN算法.本实验是在SRGAN的基础上更改的模型,因此重点与SRGAN算法比较超分辨率的PSNR值、SSIM值和图片的视觉效果.

3.2 评价标准

本实验主要使用峰值信噪比(PSNR)、结构相似性(SSIM)用作评价图片的两个标准.

3.2.1 PSNR

峰值信噪比是现今应用最普遍的一种评价图片质量好坏的标准.通常是使用均方误差的方法来对图片质量作判断.对于单色W×H的高清原图与超分辨率得到的图片通过均方误差公式MSE得到:

(7)

而对于三色高清原图与超分辨率得到的图片,每个像素有3个通道,因此公式为:

(8)

所以峰值信噪比的公式可得为:

(9)

通常峰值信噪比的值越高意味着超分辨率重建图像的效果越好,然而自从GAN网络出现以后,将人的视觉感知引入超分辨率中.GAN网络虽然在峰值信噪比不如之前的线性网络,但是在人的视觉感知效果上却比其余线性网络要好很多.

3.2.2 SSIM

结构相似度是图像超分辨率重建的另一个应用较为广泛的测量指标,反映了人眼视觉效果的真实感受.SSIM的公式是基于样本x,y之间3个指标相互衡量:亮度l(luminance)、对比度c(contrast)和结构s(structure).公式为:

(10)

(11)

(12)

SSIM(x,y)=[l(x,y)α·c(x,y)β·s(x,y)γ]

(13)

3.3 实验结果分析

在本实验中,本文分客观评价结果和主观评价结果两方面来表现模型的超分辨率能力.不仅纵向对比本文模型所使用的网络深度、损失函数,还横向对比各个时期具有代表性的超分辨率模型.

3.3.1 模型算法对比

本文采用CA-10(即10层注意力机制网络)比较当损失函数为MSE与L1时各模型超分辨率所得结果的效果.放大系数k为4.

在实验过程中,尝试了5、10、15个注意力机制残差块,在进行15个残差块的时候,由于参数过多,训练时极易造成内存过载,因此在对比时只选用5和10个残差块.

由表1可知,SRCAGAN-10在Set5和Set14上的PSNR以及SSIM的表现力都要比SRCAGAN-5要强上一些,因此在后续与其他算法模型比较时,选用SRCAGAN-10作为对比模型.

表1 5层注意力模块与10层的对比结果(k=4)Table 1 Comparison of 5 levels of attention module with 10 levels of attention module(k=4)

3.3.2 客观评价结果

本小节将就Set5和Set14以及BSD100 3个数据集对比各个算法模型和本文算法的差别.

Set5和Set14数据集是低复杂度单图像,它是基于非负领域嵌入得到的用于超分辨率研究的数据集.即基于低分率的图像将其通过深度学习算法重建得到高分辨率图像.该数据集在2012年法国贝尔实验室研究发行,广泛用于超分辨率的研究.

BSD100数据集是为了进行图像分割研究与图像边沿检测的研究而提供的一个数据集.其内容包含30个受到测试的人用手工标记的方法标记的1000个Corel数据集的图像分割.当中的50%的分割是呈现主体色彩图像,而另外的50%则是通过主体灰度图像所获得的.该数据集在2001年由UC Berkeley提出.

由表1、表2、表3得知,SRResNet在PSNR和SSIM上表现最好.然而SRResNet是残差线性网络,对高频特征的还原效果并没有本文的效果好,因为本文所加入的注意力机制残差块就是主要针对高频特征的还原,所表现出来的图像在人眼视觉效果上要比SRResNet所产生的图像好很多,下一节将主要分析主观评价结果.

表2 在Set5和Set14上PSNR、SSIM对比结果(k=4)Table 2 Comparison of PSNR and SSIM on Set5 and Set14(k=4)

表3 在BSD100上PSNR、SSIM对比结果(k=4)Table 3 Comparison of PSNR and SSIM on BSD100(k=4)

3.3.3 主观评价结果

实验选择重建后PSNR值最高的SRResNet、改进前的SRGAN、以及改进后本文的模型做重建后视觉效果的对比.由图6可知,虽然SRResNet重建所得的图片PSNR和SSIM值都有较好的表现,但是在第1排少女图像中,胸前的锁饰较为模糊,没有SRGAN和本文所重建得到的图片视觉效果好.同时SRGAN与本文模型所得图片相比较,SRGAN的图片较为平滑,在视觉效果上也是没有本文模型所恢复的细节好.而在第2排的猴子图像中,本文在猴子触须上恢复的细节也要比前两个模型恢复的效果更好,因此本文对高频特征细节的恢复上有一定的优势,恢复出来的图像跟原始图片也更相近.

图6 各算法重建效果对比Fig.6 Comparision of the reconstruction effect of each algorithm

4 总 结

本文基于SRGAN超分辨率网络在高频细节上时常产生伪影而针对性的引入注意力通道网络.同时由于深度学习卷积神经网络过深,基本上都存在着训练时间过长、超分辨率效率较低的问题,在生成模型上删去了不必要的批规范化操作卷积层.在判别模型上,使用SRGAN原有的鉴别器来指导超分辨率模型的训练.在损失函数上使用L1损失函数来对图片超分辨率视觉效果的进一步提升.在Set5、Set14以及BSD100数据集上PSNR上分别提升了0.72dB和0.60dB以及1.42dB相比SRGAN重建结果均有一定的提高.但是由于使用了L1损失函数,忽略了图片部分的高频特征,导致重建图片在一些细节上和真实图片仍有差距.同时,由于网络深度的原因,导致算法计算量太大,在训练时效率还不够高.接下来会从这两方面入手研究如何进一步提高图像重建的效果.

猜你喜欢

残差分辨率卷积
基于全卷积神经网络的猪背膘厚快速准确测定
基于残差-注意力和LSTM的心律失常心拍分类方法研究
用于处理不努力作答的标准化残差系列方法和混合多层模型法的比较*
融合上下文的残差门卷积实体抽取
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
我国科学家发明计算超分辨图像重建算法拓展荧光显微镜分辨率极限
基于深度残差网络图像分类算法研究综述①
ARM发布显示控制器新品重点强化对分辨率的支持