杨记鑫,胡伟霞,赵 杰,徐灵飞
(1.成都理工大学 工程技术学院,四川 乐山 614000;2.核工业西南物理研究院,四川 成都 610225)
图像作为一种信息载体,在人类社会中扮演着重要的角色,由于硬件设备、自然环境、人为因素和其他因素的影响,很容易造成图像模糊,在双目测距系统中,图像质量在很大程度上影响目标检测的精度。提高图像分辨率最直接的方法是从硬件方面入手,但这会面临很大的成本问题,因此采用软件技术提升图像的分辨率具有重要的意义。图像超分辨率图像重建(SR)是指通过软件算法对图像进行处理,将低分辨率(LR)图像转换成高分辨率(HR)图像的技术。随着计算机技术的不断发展,图像超分辨算法越来越完善,常用的有插值法、重建法、学习法等[1-3]。当图像放大倍数较大时,插值法得到的图像质量较差。重建法复杂度较高,图像重建效果优于插值法,基于学习的算法主要以卷积神经网络和生成对抗网络为主,后者得到的图像质量较好[4-5]。
2014年,Dong等人提出了图像的超分辨SRCNN网络,该算法的重建效果相对较高。在低分辨率图像的上采样操作中,改进的FSRCNN算法使用反卷积层[6-7]。Shi等人提出的ESPCN网络在低分辨率图像块上进行特征提取,上采样部分使用亚像素卷积,计算量较小并且重建效果较高[8]。2016年,Kim等人提出VDSR网络增加了网络层数和残差网络,提高了图像重建效果[9]。Lai等人提出的LapSRN网络通过逐步上采样的方式实现重建[10]。Kim等人提出了DRCN网络增加了残差学习网络层数以及递归神经网络结构[11]。2017年,Ledig等人提出了SRGAN网络,该网络主要由产生样本的生成器和判别真实样本还是生成样本的判别器组成,并通过不断的学习使得生成图像接近真实图像从而使重建的图像更逼真[12]。Lim等人提出的EDSR网络增加了卷积层并减少了部分残差模块,图像重建效果较好[13]。
该文提出了一种基于生成对抗网络的图像超分辨算法,并对网络结构进行改进。设计的生成器删除了残差块的BN层,增加了特征识别的相关算法,在低分辨率图像上提取特征,通过卷积计算得到高分辨率图像。在判别器中结合PatchGAN模型[14],减少了运算参数,尽可能节省运算的时间。
生成对抗网络(GAN)是通过对抗的方式去学习数据分布的一种网络模型,该网络主要由产生样本的生成器和判别真实样本还是生成样本的判别器组成,其主要网络结构如图1所示[15]。
图1 生成对抗网络模型
将一个随机样本输入到生成器G中,生成器通过计算得到一个相应的生成样本,把生成样本和真实样本同时输入到判别器D中,判别器主要区分该样本是来源于生成样本还是真实样本,并输出判别结果,然后进行误差修正,通过不断的学习,生成网络生成更像真实数据的假样本,使得生成样本与真实样本的判别结果逐渐接近,以至于判别器无法区分该数据是生成样本还是判别样本,从而提高生成样本的准确性。
若D(y)表示样本y是真实样本的概率,该网络学习过程可表示为:
Ex-Px[log(1-D(G(x)))]
(1)
其中,Pdata表示真实样本的概率分布,Px表示潜在变量x的概率分布。x和y分别对应了随机样本和生成样本。
当输入来自真实数据分布时应最大化D(y),当输入是生成器G输出的假样本时应最小化其输出D(G(x)),在模型训练过程中,也就是说生成器G希望通过最小化G(x)为假样本的概率来欺骗判别器D。生成对抗网络的训练存在很多问题,运算量大,很多研究人员提出了优化方法[16]。
文中提出的基于生成对抗网络的超分辨算法,主要工作是对生成网络和判别网络中的结构进行改进,算法结构如图2所示。输入的低分辨率的图像经生成网络输出生成的高分辨率的图像,生成网络主要由两层卷积运算进行特征提取,再经过两层亚像素卷积运算生成高分辨的图像。为了确保训练的稳定性和一致性,生成网络中不使用BN层。判别网络主要由6层卷积层组成,并且每个卷积层后使用相同的激活函数。为防止计算中梯度消失造成的误差,同时增加判别网络结构的平稳性,在判别网络的第二到五层的卷积层后面加入BN层。
图2 算法结构
传统的SRGAN生成网络主要由三部分组成:输入部分、Res Net部分、输出部分。输入图像大小为256×256×3,经过填充层和卷积层运算得到64个256×256大小的特征信息图。Res Net部分主要由九个Res Net层形成最终输出的卷积层,最后生成256 ×256×3的恢复图像,低分辨率图像通过上采样得到高分辨率图像,在较高的分辨率上进行卷积操作会增加计算复杂度。文中设计的生成网络首先是在低分辨率图像上进行特征提取,保证特征信息的准确性,其次卷积运算生成高分辨率图像。采用两层的特征提取,进一步增大特征提取的准确性,并修改了网络的参数,增加网络层深度,修改卷积核,然后再进行高分辨运算,网络结构如图3所示。
图3 生成网络结构
生成网络主要由两个部分构成:两层特征提取模块和两层图像重建模块。输入低分辨的图像,首先通过两级卷积提取特征值,提高图像特征提取的准确性。其次采用两级亚像素卷积的方式生成高分辨图像,防止单次放大产生的误差较大,也可以降低训练和测试的复杂度,减少了在输出卷积层的计算时间。
卷积运算公式为:
F(x)=x*W+B
(2)
式中,x为输入图像,W为卷积核,B为偏置。F(x)为输出图像,*为卷积运算。
每个层卷积层后面使用的激活函数为Relu函数:
F(x)=max(0,x)
(3)
该函数主要计算输入大于0的样本特征,将其他不满足的数据表示为0,可以简化网络计算,节省训练时间。
因此,每一层输出图像为:
F(x)=max(0,x*W+B)
(4)
亚像素卷积计算方式为:
F(x)=S×(W*x+B)
(5)
式中,F(x)为输出图像,S为周期的变换算子,用于实现像素的重新排列,W为卷积核,x为输入图像(即上一层的输出),B为偏置。
计算中使用相同的卷积核可以得到图片的局部细节特征,能够减少网络参数和降低网络的复杂度,多个局部特征可以计算得到全局特征。
假设输入图像大小为n×n,卷积核为f×f,在图片四周填充p层,卷积步长为s,则输出图像的大小为:
(6)
第一级卷积层采用5×5×64的卷积核,步长为1,填充为2,得到与输入图像大小相同,具有64个通道的特征图像;
第二级卷积层采用5×5×32的卷积核,步长为1,填充为2,得到与输入图像大小相同,具有32个通道的图像,前两级卷积完成特征提取。
第三级卷积层采用3×3×12的卷积核,步长为1,填充为1,采用亚像素卷积的方式将图像重新排列得到放大2倍的图像;
第四级卷积层采用3×3×12的卷积核,步长为1,填充为1,再将图像重新排列得到放大2倍,共放大4倍,得到生成的高分辨图像。
生成网络G生成的HR图像和真实的HR图像一起输入到判别网络中,判别网络主要判别图片是来源于生成图像还是真实图像,通过学习使得生成图像更像真实图像,判别网络的设计好坏影响整个生成对抗网络的运算结果。SRGAN网络中的判别网络结构相对简单,该网络细节恢复效果差,并且对测试样本比较敏感,运算参数相对较多[17]。文中判别网络的设计采用先分组再整合的思想,将生成图像划分成一定数量的图像块,计算每一部分的判别结果,然后将所有图像块的判别真假组合起来,作为最终的判别结果。判别网络D将每一张输入图像分成N×N大小的图像块,并对每一个图像块进行真假的判断,若来自生成图像,则记为1,来源于真实图像,则记为0,然后输出判断概率,将每一部分的图像判断概率组成一个矩阵,求该矩阵的平均均值作为判别器的输出。判别器主要由6层卷积层组成,判别器网络结构如图4所示。
图4 判别器网络结构
首先,将生成高分辨图像和真实高分辨图像分割成相同大小、相同数量的图像块,并对每个图像块进行标号。
然后,将每一对相对应的图像块输入到判别网络中。该网络的前5层卷积采用3×3的卷积核,最后一层采用1×1的卷积核,并且后5层卷积层都添加BN层。激活函数为LeakyReLu函数,最后使用全局平均池化操作代替全连接层[18]。
最后,将所有图像块的判别结果求均值,作为最终的判别结果。
在输入信息和输出信息间连接了多个网络。为了快捷连接,可以采用跨越几个层的残差网络[19]。为了提升算法的运算效果和节省计算时间,网络结构中增加了局部残差网络,主要结构如图5所示。
图5 残差网络结构
(7)
其中,m和u为加权系数,通过学习获得。
2.4.1 内容损失函数
采用生成对抗网络是为了重建图像,恢复从低分辨率的图像到高分辨率图像的图像信息,使用均方误差(MSE)损失函数,计算公式为:
(8)
2.4.2 对抗损失函数
生成网络的生成高分辨图像和真实的高分辨图像的对抗过程中,判别器主要是从低分辨率的图像SR生成更像真实图像的假样本,提升判别网络可得到该图像真概率,文中仍采用SRGAN的对抗损失函数,计算公式为:
(9)
2.4.3 感知损失函数
为了生成细节更加清楚的图像,考虑到生成图像和目标图像的特征图区别,使用激活前的特征层信息进行计算,文中设置感知损失函数lper,最小化两个激活特征之间的距离,感知损失函数的计算公式为:
(10)
文中使用的环境是:Intel i7-8550U CPU,Windows10操作系统,Pycharm2018,图像处理实验所采用的数据集是常见的超分辨数据集Set5、Set14、Bsd100,并采用PSNR/SSIM作为评价标准,同时记录在Set数据集的运行时间TIME,并与常用的超分辨算法双三次插值算法(Bicubic)、SRCNN、FSRCNN、ESPCN、SRGAN和文中参考的算法TESRGAN进行对比。通过多幅图片进行运算测试,计算PSNR/SSIM和TIME的平均值,实验结果如表1和图6所示。
在图6中,由图像主观质量评价可以得出,通过Bicubic、SRCNN和ESRCN算法得到的超分辨图像(a)、(b)和(c),纹理细节不易看得清楚且伴有平滑现象,而(d)、(e)和(f)是分别由SRGAN算法、TESRGAN算法和文中算法得到的HR图像,与上面三组图像有很明显的区别,在图像纹理细节和边框模糊度上得到了很明显的改善,观察翅膀和眉毛等细节可知,文中超分辨算法实现重建图像的信息相对更加清晰,视觉效果感更高。但仅局限于靠人眼的主观质量评价指标,对图像亮度变化较敏感,而不易分出中间和最右边图像的细小差异。
表1 不同算法测试对比
图6 超分辨重建效果对比
从表1可知,在数据集Set5、Set14和Bsd100的超分辨测试下,文中算法与传统的插值法Bicubic、SRCNN和ESRCN算法相比,运算时间较长,主要是由于传统的Bicubic采用数学的线性插值,SRCNN和ECPCN算法只有卷积运算,运算量相对较少,因此这三种算法运行时间较短。但与SRGAN和参考的TESRGAN算法相比,文中算法的运算时间要短,主要是由于SRGAN只采用卷积层,结构相对简单,网络初始值对网络运算结构相对敏感,计算量大,收敛难度大;而TESRGAN算法增加网络层数以及卷积核个数,使得网络需要更多的时间收敛,显著增加了网络训练时间。
从图像的峰值信噪比、结构相似性的角度评价,SRGAN、TESRGAN算法和文中算法得到的高分辨图像PSNR/SSIM值,远高于Bicubic、SRCNN和ESRCN算法,是因为生成对抗网络的代价函数使重建结果有较高的信噪比。主要是由于SRGAN网络结构相对简单,计算结果的值也可能并不是最优解。而参考中的TESRGAN算法增加了网络层数和卷积核个数,实验结果可能较好,但是也比较容易得出局部最优解。文中算法的生成网络是在低分辨率图像上提取特征值,特征提取部分采用两层卷积网络,可以提升运算结果的准确性。两级图像上采样运算,能防止单次放大产生的误差较大,也可以降低训练和测试的复杂度,减少了在输出卷积层的计算时间。重建效果优于以上几种算法。
提出的基于生成对抗网络的图像超分辨算法,主要从生成器和判别器的结构上进行改进,生成器的设计借鉴了ESPCN的模型,在低分辨率图像上提取特征,计算得到高分辨率图像,可以提升运算结果的准确性。特征提取部分采用两层卷积网络,可以提取更多的图像特征,并修改了网络的参数,增加网络层深度,修改卷积核,在保证精确度的基础上,尽可能节省运算时间。判别器的设计采用先分组再整合的思想,将生成图像划分成一定数量的图像块,计算每一部分的判别结果,然后将所有图像块的判别真假组合起来,作为最终的判别结果。经实验验证,该算法的超分辨重建效果较好,运行时间也相对较少。