基于改进EDSR的轻量化机载图像超分辨率算法

2022-11-03 12:29王辰北张海军王浩然
电光与控制 2022年10期
关键词:维数分类器分辨率

王辰北, 张海军, 王浩然

(1.中国航空工业集团公司洛阳电光设备研究所,河南 洛阳 471000;2.光电控制技术重点实验室,河南 洛阳 471000)

0 引言

近年来,随着显示技术的发展,高分辨率数字化显示器广泛应用于机载座舱中。然而,受限于特定波段图像传感器的性能以及视频传输链路等因素,存在显示器与视频源分辨率不匹配的问题,例如某视景增强系统(EVS)中平视显示器(HUD)的显示分辨率为1280×1024(单位为像素,下同),而红外传感器的分辨率仅有640×480,直接使用插值法匹配二者分辨率,会损失大量图像细节,导致图像显示模糊。因此,有必要在显示模块之前引入超分辨率处理模块。

基于卷积神经网络(CNN)的超分辨率(SRCNN)算法,凭借优秀的超分辨率效果(PSNR及SSIM)成为目前最先进的超分辨率算法。SRCNN算法的问题在于计算量(FLOPs)巨大,处理单幅图像的计算量往往是吉次或太次量级的。

目前最先进的国产AI加速芯片,如海思Hi3796 CV300以及寒武纪Cambricon-1H等,其算力效率均为2 Tops/W(1012·s-1·W-1)左右,在机载嵌入式环境下,由于资源有限,用于卷积神经网络加速的芯片功耗应控制在5 W以内,因此,最大算力为10 Tops(AI计算通常将浮点数计算转换为INT8定点数计算,本文中FLOPs与Tops等价)左右;另一方面,机载环境对图像处理的实时性要求较高,至少应达到60 帧/s。目前,先进的EDSR和RDN等超分辨率算法单幅图像的计算量均在400吉次以上,因此硬件暂时无法满足计算量要求。

为解决这个问题,本文在EDSR算法的基础上,分析计算量和各个参数的关系。通过引入前级分类器,提出了一种轻量化的超分辨率算法C-EDSR,有效减少了EDSR算法的计算量。仿真实验结果显示,本文提出的C-EDSR与EDSR相比,在PSNR平均损失0.026 dB、SSIM平均损失0.000 176的条件下,计算量减少61.1%。

1 基于神经网络的超分辨率算法

1.1 超分辨率算法的基本原理

DONG等[1]提出的SRCNN是首个基于CNN的超分辨率算法。该算法首先将低分辨率小图像进行双立方卷积插值(Bicubic)的预处理,将图像尺寸放大,得到低分辨率大图像;再将低分辨率大图像输入超分辨率网络,经过3层网络处理,得到高分辨图像。SRCNN网络结构如图1所示。

图1 SRCNN网络结构

随着SRCNN的提出,KIM等[2]提出了VDSR,LEDIG等[3]提出了SRResNet,LIM等[4]提出了EDSR,ZHANG等[5]提出了RDN。在主流的超分辨率算法中,EDSR在加深网络层数的同时,降低了计算的复杂度;对比几种先进的超分辨率算法,由于EDSR移除了BN层,使得计算大大简化,也为硬件实现打下了良好基础。图2为EDSR模型网络结构。

图2 EDSR模型网络结构

关于减少超分辨率算法计算量,已经有学者做了一些研究,FSRCNN[6],ESPCN[7]和LapSRN[8]分别用反卷积、亚像素(shuffle)以及拉普拉斯金字塔的方式减少了算法计算量。

1.2 超分辨率算法的计算复杂度分析

通常CNN的计算量90%以上来源于卷积操作。在卷积操作中有几个关键的参数:卷积核的尺寸n,输入通道数cin,输出通道数cout,步长s。根据卷积操作的原理可以得到乘法计算量的表达式为

(1)

加法计算量的表达式为

(2)

由式(1)可以看到,卷积操作主要的计算量来源为:卷积核大小n,输入、输出通道数cin和cout,步长s。

1.3 EDSR算法计算量详细分析

EDSR算法的流程为:1) 图像通过卷积层进行特征提取;2) 图像特征通过数个残差块进行非线性映射;3) 图像特征进行上采样,放大图像尺寸;4) 图像特征通过卷积层恢复出超分辨率重建图像。

假设模型放大倍数为2,输入的低分辨率图像为X,输出的高分辨率图像为Y。首先是X作为输入,经过一层卷积W1(该卷积层的参数,下同)有

F1=W1*X

(3)

经过16个残差块,残差块的输入Bn-1和输出Bn的关系为

Bn=Bn-1+Wn-1,2*max(Wn-1,1*Bn-1,0)

(4)

将F1作为B0输入,经过16个残差块后,得到输出为B16,再经过一层卷积有

F2=W2*B16

(5)

F1和F2相加有

F3=F1+F2

(6)

F3作为输入经过上采样(Upsample)处理有

F4=shuffle(W3*F3)

(7)

式中,shuffle(·)表示上采样处理。

F4作为输入,经过一层卷积得到高分辨率Y为

Y=W4*F4。

(8)

上述公式对应的计算量如表1所示。

表1 EDSR模型计算量

对于640×480的输入图像,边长各放大2倍,总计算量为428.04吉次;可以得到EDSR算法处理60 帧/s下实现640×480转1280×1024每秒需要的计算量为25.68太次,此计算量已经超出了目前航空机载环境下处理芯片理论上的最大算力。

2 轻量化超分辨率算法

为了解决EDSR算法计算量大、难以在目前航空机载环境下实现的问题,本文在EDSR算法基础上,通过引入前级分类器,提出了一种轻量化超分辨率算法C-EDSR。

2.1 轻量化超分辨率算法C-EDSR网络模型

本文提出的轻量化超分辨率算法C-EDSR网络模型如图3所示。

图3 C-EDSR网络模型

算法主要分为4步:1) 将低分辨率图像进行分割,得到N幅尺寸相同的子图像;2) 将N幅子图像分别输入分类器,分为易、中、难3类;3) 将3类图像分别输入维度为34,52和64的3个EDSR模型;4) 经过超分辨率重建处理的N幅子图像再重新组合成原尺寸的高分辨率图像。

本文引入的分类器是一个简单的分类网络,目的是依据复杂度对输入的子图像进行分类。通过引入分类器,本文算法C-EDSR与EDSR相比,在不降低效果的同时,大幅减少了计算量。接下来分别介绍引入分类器对算法效果的影响,以及对算法计算量的影响。

2.2 引入分类器对算法效果的影响

C-EDSR之所以能够在基本不降低效果的条件下大幅减少计算量,本质上是因为对于某种复杂度的图像来说,随着算法维度的增加,超分辨率效果会达到饱和,类似于神经网络训练过程中的收敛状态;对于简单类型的图像来说,维数34的模型就可以达到理想的效果,用维数52或维数64的模型处理简单类型的图像,效果不仅不会上升,甚至可能有所下降。

本文选取文献[9]中预先分类好的3类子图像作为测试集,对上述分析进行验证,实验结果如表2所示。其中,图像分为简单、中等、复杂3组,每组子图像均为6000幅。

表2 EDSR(34/52/64)处理不同复杂度图像结果

根据表2结果,选择EDSR(34)处理简单图像,EDSR(52)处理中等图像,EDSR(64)处理复杂图像,基本不会影响算法的效果。

2.3 引入分类器对计算量的影响

分类器模型的流程见图3,具体为:1) 通过1层卷积层进行特征提取,同时缩小特征图的尺寸;2) 经过3层卷积层进行非线性变换;3) 经过1层卷积层进行特征维数压缩;4) 经过池化层进一步减少特征维数;5) 最后通过全连接层输出分类标志。

上述流程中卷积部分的计算量如表3所示。

表3 分类器卷积部分计算量

后续的池化层和全连接层计算量与卷积计算量不在一个数量级,忽略不计,因此分类器的计算量为3.5兆次,加上这个计算量之后,与EDSR原算法的1.43吉次相比,只增加了0.24%,而34维的EDSR模型的计算量仅为64维的模型计算量的28%,假设有20%的子图像的类型为简单,则可以减少14.4%的计算量。

由上述分析可知,分类器的引入对于超分辨率算法来说,可以大大减少计算量。

2.4 算法模型训练过程

本文C-EDSR算法训练分为两步:1) 使用预先分类好的训练集分别训练滤波器维数为34,52和64的3个EDSR模型;2) 引入分类器,并将3个模型联合起来训练,优化模型参数的同时提高分类器的分类能力。

训练过程中要用到3种损失函数。首先给出总损失函数表达式为

L=w1×L1+w2×Lc+w3×La

(9)

式中:L1为像素误差;Lc为分类器误差;La为平均误差;w1,w2和w3分别为L1,Lc和La的系数。

其次是预训练EDSR的损失函数,本文选用L1函数,该损失函数衡量高分辨率原图x和超分辨率重建图y像素间的误差,表达式为

(10)

再次是训练分类器的Class-loss,该损失函数衡量分类误差,表达式为

(11)

式中:M为类别组数;Lc为在同一幅子图像中,各组出现概率Pi(x)的差值和,所有概率Pi(x)的和为1。

最后是联合训练使用的Average-loss,该损失函数的表达式为

(12)

式中:B为输入图像数;La为输入图像分类到每组的期望与平均值(B/M)的差值和。

训练过程曲线如图4所示。

图4 PSNR和FLOPs曲线

图4中:PSNR曲线体现了模型的效果随训练次数增加不断上升;FLOPs曲线体现了模型计算量随训练次数增加不断下降;epoch代表将整个训练集遍历一次的训练量,即一个循环。

本文首先训练了维数为34,52和64的3组EDSR模型,模型维数依据文献[9]确定。其中,34维的模型参数量为64维的模型参数量的30%,52维的模型参数量为64维的模型参数量的66%,这与文献[9]的参数选取方法一致,文献[9]的实验也表明此方法选取参数可以得到较好的结果。

EDSR(34)模型训练过程如PSNR曲线所示,其余类似。用3组模型联合训练得到C-EDSR模型,训练过程如FLOPs曲线所示。

2.5 实验结果与分析

本文所有实验均在Python3.7,PyTorch-GPU和CUDA 11.3软件环境以及Quadro M4000显卡硬件环境下进行。

经过以下仿真实验,对比了本文的C-EDSR算法与几种典型的超分辨率算法。

实验结果中的PSNR表示峰值信噪比,通过信噪比衡量超分辨率图像和原图像之间的差异;SSIM表示结构相似性,从亮度、对比度、结构等方面衡量2幅图像的差异;PSNR值和SSIM值越大,代表超分辨率效果越好。

为了使测试集尽可能贴近机载环境下拍摄到的图像,本文选择公开的航拍测试集,包括卫星遥感采集的测试集DOTA-v1.5 和无人机采集的测试集VisDrone。其中,DOTA-v1.5测试集选取40幅图像构成本文的测试集,VisDrone选取100幅图像构成本文的测试集。本实验计算FLOPs时按输入32×32图像计算。结果如表4、表5所示。

表4 DOTA-v1.5测试集实验结果

表5 VisDrone测试集实验结果

根据以上数据可知,本文C-EDSR算法的效果(PSNR及SSIM)优于BICUBIC,SRCNN和FSRCNN,效果与EDSR相当(PSNR下降少于0.03 dB,SSIM下降少于0.000 2),效果低于RDN;从计算量方面考虑,根据前文的理论推导,EDSR算法在60帧/s下实现640×480转1280×1024每秒需要的计算量为25.68太次,已经超出现有机载环境下处理芯片的最大算力,而本文算法的计算量为EDSR的40%左右,即每秒10太次左右,目前的处理芯片理论上可以满足本文算法的需求,而RDN又比EDSR的计算量高一个数量级。综上,本文C-EDSR算法是目前航空机载环境下超分辨率效果最优的算法。

VisDrone测试集的100幅测试图像中包含黑夜、日间普通光照条件以及日间强光条件等各种光照条件下拍摄的图像,因此上述数据还表明本文算法对光照条件有一定的鲁棒性,而光照条件也是机载环境下的一个重要考虑因素。

从DOTA-v1.5数据集中选取10幅高分辨率图像构成测试集,对EDSR与C-EDSR进行测试,并进一步详细对比,结果如表6所示。

表6 EDSR与C-EDSR结果对比

根据上述所有共计150幅测试图像的实验结果可知,C-EDSR与EDSR相比,PSNR平均下降0.026,SSIM平均下降0.000 176,结合表2、表3,与各种算法对比的实验结果中,PSNR和SSIM的下降基本可以忽略不计;因此,本文C-EDSR与EDSR相比,在重建效果基本不降低的条件下,计算量减少61.1%。

图5是各种算法对测试集DOTA编号为P0217的图像的处理效果,所有图像的处理方式均为先将原图缩小为原来的1/4,再用相应算法放大4倍得到超分辨率重建图。

图5 各种算法效果对比

3 结束语

本文以EDSR为基础,分析了模型的网络结构和算法计算量。本文在EDSR的基础上,通过引入前级分类器,提出了轻量化超分辨率算法C-EDSR;经过仿真实验验证,本文C-EDSR算法与EDSR算法相比,在PSNR及SSIM基本不降低的条件下,计算量减小61.1%。结合国产AI芯片的性能参数可知,目前机载嵌入式平台硬件算力理论上能满足C-EDSR算法60 帧/s的实现需求,为进一步在机载平台上实现实时超分辨率图像重建奠定了基础。

猜你喜欢
维数分类器分辨率
少样本条件下基于K-最近邻及多分类器协同的样本扩增分类
一类一维齐次Moran集的维数结果
学贯中西(6):阐述ML分类器的工作流程
线性变换的核空间在求若尔当矩阵上的一个研究结果
我国科学家发明计算超分辨图像重建算法拓展荧光显微镜分辨率极限
基于朴素Bayes组合的简易集成分类器①
探析几何学“维数”与空间“维”数的区别
基于AdaBoost算法的在线连续极限学习机集成算法
ARM发布显示控制器新品重点强化对分辨率的支持
从600dpi到9600dpi