一种基于改进AOD-Net 的航拍图像去雾算法

2022-07-03 02:11李永福崔恒奇张开碧
自动化学报 2022年6期
关键词:雾气航拍尺度

李永福 崔恒奇 朱 浩 张开碧

随着无人机航拍技术的日益成熟,无人机航拍技术逐渐被频繁地应用于复杂环境地图测绘[1],辅助驾驶[2]以及道路监控[3]等领域.然而,由于航拍无人机与拍摄对象的距离通常较远,因此航拍图像更容易受雾霾环境的影响.在雾霾环境中,地面拍摄的普通图像中近景受到雾霾的影响较小,而航拍图像整体都会包含浓度较高的雾霾,这极大地影响了航拍图像的成像质量.此外,航拍图像的比例尺较大,这要求航拍图像具有极高的成像质量从而保证拍摄对象清晰可见,而雾霾环境中采集的航拍图像的信息量会严重下降,其实用价值也会大打折扣.因此,为了降低雾霾环境对航拍图像的影响,需要对无人机采集的有雾航拍图像进行去雾处理,同时需要增强去雾图的视觉效果,强化图像中的特征信息以便于后续高级计算机视觉系统进行二次处理.

图像去雾算法可以分为基于传统数字图像处理与物理模型结合的方法[4-8]和基于深度学习设计的去雾网络模型的方法[9-16].基于传统数字图像处理与物理模型结合的方法一般以大气散射物理模型[17]为基础,在此基础上针对大气光值与透射矩阵设计求解算法以期获取准确的数值.其中具有代表性的算法有如下三种:He 等[6]提出了基于暗通道先验(Dark channel prior,DCP)的去雾方法,该方法通过寻找图像中的暗通道图像来求解透射矩阵,再结合估计的大气光值来消除图像中的雾气.Berman等[7]利用了一种边界约束和正则化(Boundary constraint and contextual regularization,BCCR)的方式来配合大气散射模型对图像进行去雾.Zhu 的团队[8]利用颜色衰减先验假设(Color attenuation prior,CAP)来获取透射图,再结合大气散射模型进行图像去雾.

随着深度学习在图像领域的发展,许多学者尝试通过设计合适的去雾神经网络来进行图像去雾.基于深度学习设计的图像去雾模型能够被进一步细分为基于大气散射模型的间接参数求解型网络模型和直接图像生成型网络模型[9-10].其中,基于大气散射模型的间接参数求解型网络模型一般是通过对大气光值或者传输矩阵进行网络设计,通过构建高效的特征提取网络结构来准确获取二者的数值,然后进而通过大气散射物理模型生成无雾图像.其中近年来具有代表性的算法有:Cai 等[11]提出了一种可以端到端进行训练的卷积神经网络模型DehazeNet,该网络可以学习有雾图像于介质传输图之间的映射关系,但是仅仅四层的单尺度直线型卷积网络的特征提取能力非常有限,很容易造成传输图的估计出现错误.Ren 等[12]提出了一种多尺度卷积神经网络(Multi-Scale Convolutional Neural Network,MSCNN)用于去雾,该网络使用精细介质传输网络对粗糙介质传输网络进行传输特征的细化,有效提升了去雾图的细节特征,然而庞大的网络结构使得该网络并不能短时高效地去雾,需要依赖强大的图形化硬件设备.Li 等[13]提出了AOD-Net去雾算法,该方法简化了去雾模型,通过对大气散射模型进行变形使大气光值以及大气透射率合并为一个参数变量,并设计了一种简单高效的特征融合型卷积神经网络来有效获取该变量的值.但是该算法处理真实雾图的时候非常容易使图像的色调丢失并且损失较多色值.而直接图像生成型去雾网络模型与间接参数求解型网络模型不同,该网络能够直接学习到有雾图像与清晰图像之间的映射关系,将这种关系以权重文件的形式保存起来,每张图像在经过加载了该权重文件的神经网络后能够直接生成清晰图像,无需依赖大气散射模型.例如,Ren 等[14]设计了一种门控融合网络(Gated fusion network,GFN),该网络通过融合白平衡派生图、对比度增强派生图以及伽马增强派生图直接端到端生成无雾图像.Chen 等[15]设计了一种门控聚合网络(Gated context aggregation network,GCANet),该网络通过编码-解码的网络结构学习到原图和有雾图之间的残差,通过将雾气的特征残差附加在雾图上即可获得去雾图像,恢复的图像会出现区域色调失衡以及图像饱和度过低的现象.Qin 等[16]设计了一种端到端的特征融合注意网络(Feature fusion attention network,FFANet)来获取雾气的残差特征,去雾后的图像通常会出现颜色失真和对比度下降的问题.虽然端到端图像生成型网络可以不依赖大气散射模型,但是对雾气分布不均匀的图像进行去雾时非常容易出现去雾不彻底的问题,并且容易出现大量的噪点.

由于AOD-Net 的网络结构非常轻巧,算法耗时极短,因此该算法非常适用于无人机航拍图像实时去雾.本文重点针对AOD-Net 去雾图的细节信息丢失严重,去雾图的对比度过强以及去雾图噪音过多的问题,提出一种基于AOD-Net 的多尺度航拍图像去雾算法.本文的主要创新点如下:

1) 本文在AOD-Net 的基础上学习FPC-Net对网络层的优化方式[18]对AOD-Net 的网络层进行了改良,并将改良的AOD-Net 嵌入到多尺度结构中.改良后的网络结构能够有效提升神经网络对图像细节部分的处理能力,并且能有效削减远景部分的雾气.

2) 与以往一些文献中仅仅关注图像重构的像素差异而设计的损失函数不同[11-13],本文设计的损失函数在训练网络时不仅监视了生成图与标准清晰图之间的结构差异,还关注了生成图的视觉主观感受以及图像的平滑度.

3) 与以往研究中采用唯一损失函数训练模型的方式不同[9-16],本文训练所提网络模型时采用了分段训练的方法,这种通过优化训练方式来提升网络的去雾性能的方式能够有效保留网络的模型复杂度,并且能够极大程度地保证算法的实时性.

1 AOD-Net 去雾算法

AOD-Net 算法是基于简化的大气散射模型设计的去雾算法.该算法将大气散射模型中的大气光值和透射矩阵合并为了一个过渡矩阵,然后利用多尺度特征融合网络来获取过渡矩阵中的数值,最后利用简化的大气散射模型来获得无雾图像.AODNet 算法主要包含以下5 个步骤:

步骤 1.大气散射模型的简化.清晰图与对应的有雾图像的函数关系可以表示为:

其中t(x) 表示传输图,A表示大气光值,若要恢复出清晰图像则必须准确估计二者的值,而在AODNet 中,将式(1)中的两个未知量通过数学公式变换合并为了一个未知量K,K的求解公式如式(2)所示,简化的大气散射模型如式(3)所示.

步骤 2.多尺度特征融合网络提取雾气特征.AOD-Net 采用了一种多尺度特征融合的方式来增强网络的特征提取能力,该网络的结构如图1 所示.其中第2 个特征层合并了第1 层的特征图,第3 个特征层融合了第2 层的特征图,第四层特征层合并了前3 层的特征图,最后一层输出过渡图像K的数值矩阵.该网络结构较为简单,无复杂的支路,这保证了AOD-Net 算法的实时性.

图1 AOD-Net 的网络结构Fig.1 The network architecture of AOD-Net

步骤 3.雾气数据集的生成.AOD-Net 通过设置不同的大气光值和散射系数将NYU2[19]的室内清晰图像数据集扩充为包含了多种雾气浓度的合成雾数据集.

步骤 4.设计用于训练网络的损失函数.AOD-Net选择的是最简单也是最直接的均方误差损失函数[20],该损失函数可用式(4)表示.

式(4)中的xi表示了输入网络的有雾图像,Ji表示了合成雾图对应的清晰无雾图像,f(xi) 表示AOD-Net 生成的去雾图像.

步骤 5.经过训练后的AOD-Net 可获取对应的权重文件,加载权重文件并用AOD-Net 读取有雾图像即可直接获取去雾图像.

2 改进的多尺度AOD-Net

AOD-Net 去雾算法虽然拥有非常优秀的去雾效率,但是该算法去雾后的图像非常容易出现去雾不彻底、对比度过强、边缘细节模糊以及色调偏暗的问题.因此,本文对AOD-Net 算法进行了改进.首先,针对步骤2,本文根据FPC-Net 中对网络层的优化方式改良了AOD-Net 的多尺度特征融合网络,FPC-Net 中采用了全逐点卷积与不同大小池化层结合的方式替换了大尺度卷积层,从而有效提升网络的特征表达能力[21].然后,本文构建了多尺度网络结构,提升网络对图像细节雾气的处理能力.随后,用包含了图像重构损失函数、SSIM 损失函数和TV 损失函数[22]的复合损失函数替代了步骤4中的均方误差损失函数,以有效提升多尺度去雾网络去雾图的视觉效果.最后,本文还通过分段训练的方式替换了单一损失函数训练的方式,进一步提升图像的生成质量.

2.1 单尺度AOD-Net 网络层的改良

为了提升AOD-Net 的特征表达能力,本文参考FPC-Net 的网络层优化方式来改良AOD-Net的网络结构,用该方法来强化网络的特征表达能力,本文改良的网络结构如图2 所示.这种改良方式不仅能有效提升网络对特征的表达能力,使网络更加紧凑,也能够在一定程度上减少训练时出现过拟合的现象[18].另外,本文认为第一层的特征有必要融合至第二个特征融合层,通过实验发现,这样的优化能够在一定程度上改善网络对景深雾的处理能力.

图2 本文所提的网络结构Fig.2 The proposed network architecture

本文所提的网络结构总共包含5 个全逐点卷积层,3 个不同大小的池化层,3 次特征图融合和1 次解卷积层组成.其中每个逐点卷积的卷积核大小均为1×1,输入层和输出层的1×1 逐点卷积层后无池化层和批归一化层,其余每个逐点卷积后均会连接批归一化层、ReLU 激活函数和池化层.第一个池化层的滤波核大小为3×3,padding 值为1,第二个池化层的滤波核大小为5×5,padding 值为2,第三个池化层的滤波核大小为7×7,padding 值为3,每个卷积核和池化层的滤波核的行进步长均为1,下一层输入的特征图会融合之前所有层网络输出的特征图,本文的网络结构细节如表1 所示.

表1 本文所提网络的参数Table 1 The architectures of proposed network

图3 展示了本文所提网络对景深雾的处理能力.从图3 中可以看出AOD-Net 经过本文的改良,图像的远景部分的雾气能够被进一步消除,而原版的AOD-Net 处理后的图像远景部分依旧有雾气残余,这说明本节在AOD-Net 的网络上的改良是有效的.

图3 去雾效果 ((a) 有雾图像;(b) AOD-Net;(c) 改良后的AOD-Net)Fig.3 Defogging effect ((a) Fog image;(b) AOD-Net;(c) Improved AOD-Net)

2.2 多尺度网络结构的构建

AOD-Net 仅采用单尺度的网络模型对图像特征进行提取,导致其对图像细节的恢复程度较差.而多尺度结构的网络模型则对图像的细节和纹理的恢复效果较为理想[23-25].因此本文将改进的AODNet 嵌入多尺度网络结构进一步提升网络的去雾能力,多尺度网络结构如图4 所示.

图4 多尺度网络结构Fig.4 The architecture of multi-scale network

本文所设计的多尺网络首先将原始雾图I进行了2 倍和4 倍的下采样,然后将下采样4 倍的雾图输入到Scale 3 的K估计模块得到该尺度的K估计图,再结合式(3)获取该尺度的去雾图I0.25.接下来将I0.25恢复至与Scale 2 输入图一致的尺寸,然后将I0.25和2 倍下采样的原图一起输入到Scale 2的K估计模块,再模仿上一步获取该尺度的去雾图I0.5,最后,将I0.5恢复至与Scale 1 输入图一致的尺寸,将I0.5和原图I一起输入到Scale 1 的K估计模块,再根据式(3)获取最终的去雾图.需要说明的是,Scale 1 尺度上的估计模块的输入图像的尺寸大小为128×128,输入通道数为6,Scale 2 尺度上的估计模块的输入层的图像尺寸为32×32,输入通道为6,Scale 3 尺度上的估计模块的输入层的图像尺寸为8×8,输入通道为3.

2.3 损失函数的改良

本文在训练网络时采用了一种包含了图像重构损失、图像结构相似损失和TV 损失函数的复合损失函数,复合损失函数中的图像重构损失选择了常用的最小均方误差损失函数(L2损失),每张训练图的重构损失如式(5)所示.

其中Ji表示的是无雾清晰图像,xi表示了该清晰图像对应的有雾图像,Fm(xi) 代表了该有雾图像经过本文m尺度上网络去雾处理后的图像.

图像结构相似损失函数的作用是使图像视觉效果更符合人眼主观视觉感受.而SSIM 相较于峰值信噪比(Peak signal-to-noise ratio,PSNR)能直观反映生成图与标准清晰图之间的结构相似程度[26],因此该损失函数可以表示为式(6).

其中SSIM(Ji,Fm(xi))表示了合成雾图去雾后的生成图与对应的标准无雾图像之间的SSIM 数值.

图像TV 损失函数是一种能够约束图像噪声的损失函数,通过降低TV 损失函数的数值可以在一定程度上消除因去雾算法和重构损失函数带来的噪声[27].TV 损失函数的表达式如式(7)所示.

其中∇x与∇y分别表示了生成图的像素在横轴方向和纵轴方向上的梯度幅值.复合损失函数总公式如式(8)所示.

其中N代表了训练图的总量,λ1、λ2和λ3分别代表了每个损失函数的权重系数,ℓ代表了训练时设定的权重衰减因子,w代表了网络的可学习参数,ℓ‖w‖为函数约束项,作用是为了减少函数训练时出现过拟合现象.

本节所提的复合损失函数相较于AOD-Net 中使用单一的均方误差损失函数能更有效地修正生成图与清晰图之间的对比度、亮度以及纹理之间的差异.

2.4 训练方式的改良

本文所设计的网络在训练时采用了分段训练的方式,与以往单独使用一种损失函数训练网络的方法不同,这种分段训练的方式能够摆脱局部最优解,进一步优化网络生成图的质量[28].分段函数的两段分别由式(8)和式(9)组成.不同于式(8),式(9)中将重构损失函数的L2损失改为了L1损失.

在进行网络效果测试前,本文对分段损失函数的有效性进行了测试.测试实验的结果如图5 和图6所示.

图5 不同方法训练本文所提模型获得的损失曲线 ((a) 单一函数训练方法;(b) 分段函数训练方法)Fig.5 The loss curve obtained by training the proposed model with different methods ((a) The training method of single function;(b) The training method of piecewise function)

图6 不同训练方式下的SSIM 与PSNR 变化曲线((a) SSIM 曲线;(b) PSNR 曲线)Fig.6 The curve of SSIM and PSNR under different training methods ((a) The curve of SSIM;(b) The curve of PSNR)

图5(a)中的曲线分别代表了仅使用式(8)或式(9)对本文所提模型训练时的Loss 走势曲线,可以看出当训练至1 000 轮左右时两个曲线均达到收敛状态,然而此时的模型还没有达到全局最优,当本文在1 000 轮之前选择LMS,1 000 轮之后改用训练时,可以获得图5(b)中上方的曲线,反之可以获得图5(b)中下方的曲线,最终用于训练网络的损失函数如式(11)所示.

本文每10 轮训练会保存一次权重文件,用网络加载每个权重文件对测试集中同一张有雾图像进行去雾,可获得150 张生成图.图6 展示了这些生成图与对应的清晰图样之间的SSIM 和PSNR 的变化曲线.从图6 中可以看出,在改变了训练方式之后,生成图的SSIM 与PSNR 值均有小幅度的提升.图7 展示了两种不同训练模式下本文模型生成的去雾图的效果.从图7 中可以看出,图7(e)与图7(c)的主观视觉效果相近,而图7(f)虚线框中的墙壁色彩相较于图7(d)更接近图7(b)的墙壁色彩.

图7 两种不同训练方法下的去雾效果 ((a) 合成雾图;(b) ground truth;(c) 所提模型用LMS 训练1 000 次的效果;(d) 所提模型用LMS 训练1 500 次的效果;(e) 所提模型用式L 训练1 000 次的效果;(f) 所提模型用式L 训练1 500 次的效果)Fig.7 Defogging effect of two different training method((a) Synthetic fog image;(b) Ground truth;(c) The proposed model was trained after 1 000 times by LMS;(d) The proposed model was trained after 1 500 times by LMS;(e)The proposed model was trained after 1 000 times by L;(f) The proposed model was trained after 1 500 times by L)

综上可知,选择式(11)作为本文所提网络的损失函数能够获得更好的去雾效果.

3 实验结果及分析

3.1 实验设备环境及参数设置

本文所提的去雾网络是基于Caffe 框架实现的,Caffe 框架通过Matlab2016a 提供的接口来运行,网络的训练与雾图处理均采用了GPU 进行加速,GPU 型号为Nvidia RTX 2 070,显存容量8GB,初始学习率大小设置为10–5,采用ADAM 优化器进行训练优化,训练轮数设置为1 500,批处理图像的数量为16,权重因子λ1设置为1[21],λ2的选值需根据实验和数据集进行测试,本文在第3.4 节给出了测试过程,该参数设置为0.84,λ3的值选用了文献[24]中的建议值2×10–8,λ4设置为1[22],动量和权重衰减因子设置为0.9 和0.0001.训练所使用的雾气数据集有AOD-Net 所提供的NYU2 合成雾数据集,内含1 449 张清晰图以及27 531 张对应的合成雾图像,同时本文还随机选择了RESIDE[29]的OTS (Outdoor training set)数据集中的500 张室外清晰图,并通过这些清晰图生成9 500 张合成雾图,两个合成雾数据集总计37 031 张图片,本文按8:1:1 的比例划分出29 616 张图片用于训练、3 707张图片作为验证集、3 708 张图片作为测试集.本文选用大疆的DJI-Mini2 无人机在雾天拍摄的低空航拍图像验证所提去雾算法处理自然航拍雾图的有效性.本文所提算法还与目前使用频率较高的几种去雾算法进行了对比,其中经典去雾算法包括了DCP[6]、BCCR[7]和CAP[8],基于深度学习的去雾算法包括了DehazeNet[11]、MSCNN[12]、AOD-Net[13]、GFN[14]、GCANet[15]和FFANet[16].

3.2 在合成有雾数据集上的实验结果及分析

本文首先在合成有雾数据集上进行去雾效果测试,所选用的测试图像均来自本文构建的测试集.采用SSIM 和PSNR 两个指标从客观数值上来评价各去雾算法的优劣,再结合各算法去雾图的主观视觉感受来系统性地评价每个算法的去雾效果.图8展示了各个去雾算法去雾后的主观视觉效果.表2展示了各去雾算法在测试集的3 708 张合成雾图上的SSIM 和PSNR 指标平均值对比.

从图8 中可以看出,DCP 算法处理的图像偏暗,并且天空区域会出现一定的失真现象(参考图8(c)建筑物与天空的交界处).BCCR 算法去雾后的图像会出现明显的噪声,并且图像的对比度过高(参考图8(d)室内沙发的颜色和电视塔周明暗区域的颜色).CAP 算法对图像的去雾程度不足(参考图8(e)中室内图像依旧残留较多雾气),并且图像的饱和度过高(参考图8(e)中电视塔天空的色泽).DehazeNet算法去雾后的图像会残留较多雾气(参考图8(f)室内的远景区域),但该算法对图像色调的恢复程度较高.SCNN 算法对图像色彩的恢复程度较弱但该算法对图像色调的恢复程度较高,且图像部分区域依旧有大量雾气残余(参考图8(g)电视塔图片的边角区域).AOD-Net 去雾后的图像的饱和度和对比度都过强,导致图像整体偏暗(参考图8(h)中室外场景的天空区域),此外过于简单的损失函数使其对于雾气集中区域的恢复效果较差(参考图8(h)中图书馆中间区域的雾气).GFN 算法去雾后的图像对比度过强,过强的对比度会导致图像中色值偏低的区域损失大量的细节信息(参考图8(i)的室内图像中有明显偏暗的区域,室外夕阳图中建筑物的颜色也明显偏暗).GCANet 处理后的图像有明显的雾气残留(参考图8(j)中天空背景和建筑物交界区域的雾气残余).FFANet 去雾后的室内图像较为清晰,其去雾图的整体色调和细节恢复程度均与清晰图非常接近.本文所提算法去雾后的图像的饱和度相对清晰图会更高一些,室内外图像上的去雾效果略弱于FFANet(参考图8(k)和图8(l)的图书馆远景部分),相较于AOD-Net 在主观视觉效果上有了一定的改善,不会出现太多过暗的区域,且去雾程度也更理想.

图8 合成有雾图像的实验结果展示 ((a) 有雾图像;(b) Ground truth;(c) DCP;(d) BCCR;(e) CAP;(f) DehazeNet;(g) MSCNN;(h) AOD-Net;(i) GFN;(j) GCANet;(k) FFANet;(l) 本文算法)Fig.8 Experimental results of the synthetic fog images ((a) Fog image;(b) Ground truth;(c) DCP;(d) BCCR;(e) CAP;(f) DehazeNet;(g) MSCNN;(h) AOD-Net;(i) GFN;(j) GCANet;(k) FFANet;(l) Proposed algorithm)

从表2 中客观数值指标可以看出,本文所提算法在合成有雾图像数据集上的SSIM 均值和PSNR均值相较于AOD-Net 均有一定幅度的提升,整体效果略弱于FFANet 以及GCANet.需要说明的是,FFANet 的网络层数多,模型更为复杂,因此其网络对合成雾图的去雾效果与清晰图更接近,仅通过合成雾数值指标对比并不能确定更适合航拍图像的算法,因此本文在第3.3 节和第3.5 节将会分别展示各个算法在真实自然雾图上的表现以及参数量和耗时的对比.

表2 在合成有雾图像上的SSIM 与PSNR 结果Table 2 Comparison of SSIM and PSNR tested on synthetic fog images

3.3 在自然航拍雾图上的实验结果及分析

为了进一步体现本文所提算法的去雾有效性,本文用大疆DJI-Mini2 无人机在重庆拍摄了20 张真实有雾航拍图像,并用各去雾算法在该组有雾航拍图像上进行实验,图9 展示了各去雾算法在四张具有挑战性的航拍雾图上的去雾效果.从图9 中可以看出各个去雾算法在航拍雾图上的去雾表现与合成有雾数据集上的表现基本一致,其中DCP、GFN和GCANet 算法对小范围的雾气去除效果不理想(参考图9(b)、图9(h)和图9(i)的塔尖铁框中的雾气有残余).BCCR 去雾后的图像有明显的色彩失真现象(参考图9(c)的浓雾区域出现了色彩分层).AOD-Net 图像整体亮度偏低,细节可见性较差.CAP 和FFANet 仅去除了图像中部分雾气,整体图像依旧残留有大量雾气(参考图9(d)的高速路右侧的区域和图9(j) 高塔周围大量残余的区块雾).而DehazeNet 与MSCNN 对远景部分的雾气去除程度较差(参考图9(e)和图9(f)的大桥图像的远景部分依旧可以看见大量残存的雾气).本文所提的去雾算法对航拍雾图的去雾效果较为自然,去雾图较少出现过亮或者过暗的区域,不足之处是对景深雾的去除效果不佳,这可能是由于训练数据是合成雾而非自然雾导致的.

图9 真实有雾航拍图像的实验结果展示 ((a) 有雾图像;(b) DCP;(c) BCCR;(d) CAP;(e) DehazeNet;(f) MSCNN;(g) AOD-Net;(h) GFN;(i) GCANet;(j) FFANet;(k) 本文算法)Fig.9 Experimental results of the real aerial fog images ((a) Aerial fog image;(b) DCP;(c) BCCR;(d) CAP;(e) DehazeNet;(f) MSCNN;(g) AOD-Net;(h) GFN;(i) GCANet;(j) FFANet;(k) Proposed algorithm)

与有ground truth 作为对比的全参考指标不同,由于真实有雾图像没有对应的无雾图像用于测试SSIM 和PSNR 指标.因此,本文选择使用如下8 种不同的客观数值评价指标来测试所提模型在真实雾图上的有效性:

1) 增强图像的盲图评测方法BIQME (Blind image quality measure of enhanced images),该方法是一种包含了图像对比度、锐度、亮度、色彩保真度以及自然程度这五种图像因素在内的打分机制,可以在综合五种影响程度上给出一种较为可信的评判分数[30].

2) 雾气密度评估方式FADE (Fog aware density evaluator),该方法可以直接评测一幅图像中雾气保留的程度[31].

3) 能见度指数VI (Visibility index),该值用于评测去雾后图像的能见度,主要评测景深雾的消除效果[32].

4) 真实性指数RI (Realness index),该值重点用于评测人眼视觉主观感受,这种视觉感受程度也能够在一定程度上反映去雾后图像的颜色失真程度[32].

5) 基于人类启发感知的图像融合质量评价CB(Chen-blum metric),该方法重点用于测试输入与处理图之间的对比度特征得分[33],其值不仅反映了图像对比度信息,也反映了原始图像保留的信息量[34].

6) 图像视觉信息保真程度评价VIF (Visual information fidelity),该方法是利用处理后图像信息与原始图像信息进行比对,得分值可以反映图像因处理算法而导致图像的失真程度[35].

7) 基于图像梯度的处理性能评价GB (Gradient-based performance metric),该值是一个常用的图像质量评估指标,通常被用来评估图像的边缘信息丢失程度[36].

8) 图像熵评价指标Entropy,该值通常用于评测处理后图像中信息的复杂程度,即信息量的多少,常被用于测试各类图像增强或复原算法的优劣[37].

其中BIQME、VI、RI、CB、VIF、GB 以及Entropy 的值越大代表去雾图效果越好,而FADE 的值越小代表图像去雾程度越高.

图10 和表3 展示了所有对比算法与本文算法在8 种评价指标上的客观数值对比,从中可以看出本文算法的FADE、CB、VIF、GB 以及Entropy均排名前三,这说明本文去雾算法在去雾程度、对比度、色彩保真程度、边缘信息保留程度以及图像信息量上有着较为优秀的表现,而其余略弱于其它对比算法的指标相较于AOD-Net 也有一定程度的提升,这说明本文对于AOD-Net 的改进在各项对比指标上有着全面的提升.此外,我们利用本文数据集训练了FFANet 后,发现该网络仅对雾气分布均匀的图片去雾效果良好,而对于雾气浓度分布不均的真实图像表现较差,这可能是因为该网络较深,对训练雾图数据的拟合程度较高,一旦雾气浓度和雾气分布与数据集中的合成雾气差别较大时,该网络的适应性相较于浅层网络会下降得更多.

另外,由于本文在网络层中相较于AOD-Net额外引入了池化层,但这种逐点卷积与N×N大小的池化层组合的方式与N×N大小的单卷积层的感受野是一致的,并且两者在特征提取的效果上可以划等号[21],因此,额外引入的池化层相较于AODNet 并不会丢失更多的细节特征,而本文还进一步通过多尺度框架提升了网络对细节处雾气的特征提取能力,从表3 中GB 与Entropy 两项定量的图像信息保留量指标也证实了本文的改良方式相较于AOD-Net 能够保留更多的细节信息.

表3 在真实航拍雾图上的客观数值评价:(1) 最好的结果;(2) 次好的结果;(3) 第三好的结果Table 3 Objective numerical evaluation on the fog map of real aerial photography:(1) The best result;(2) The second-best result;(3) The third-best result

3.4 损失函数的消融实验结果及分析

本文在损失函数的设计上采用了多个损失函数组合的方式.为了体现每个损失函数对最终生成图像的影响,本文进行了相关的消融实验,所用图片取自AOD-Net 测试图像集中提供的真实City 雾景图.消融实验结果如图11 所示.从图11 中可以看出,组合损失函数L中缺少了L1与L2会出现图像的色调偏暖,而且图像的饱和度较差(参考图11(c)的天空区域的颜色和房屋墙体的颜色),这说明图像重构损失函数会影响去雾图像的色彩.当L中缺少了LS时图像的对比度会过高,而且图像的亮度偏低(参考图11(d)中的图像的亮度),这是由于LS中带有SSIM 函数,而SSIM 函数的计算与图像的亮度,结构信息以及对比度有直接关系,因此,LS会影响去雾图的对比度以及亮度.当缺少LTV时,建筑物表面会出现大片的伪影,例如图11(e)中建筑物表面出现了大量灰色覆盖,并且建筑物边缘信息损失严重,这说明LTV会直接影响图像的边缘信息以及主观视觉感受,缺少多尺度框架会导致近景部分出现过度去雾而导致对比度升高,图像变暗,而远景区域的雾气去除程度则较弱.图11(g)为图2所示网络结构的测试结果,选用了与AOD-Net 中相同的均方误差损失函数.将图11(g)与图11(f)进行对比,可以看出图2 所示的网络比AOD-Net 拥有更强的远景雾去除能力,进一步佐证了第2.1 节中改良的有效性.同样地,本文也在测试集图片组上测试了消融实验每种情况下的数值指标对比,从表4中也能直观看出缺少任何一个部分均会导致最终图像的视觉感受、真实程度、去雾程度、边缘信息有一定程度的下降,这也证明了本文改良的网络结构以及损失函数每个部分的必要性.

表4 消融实验中的数值指标Table 4 The numerical index in ablation experiment

图11 消融实验结果 ((a) 航拍雾图像;(b) 本文方法;(c) 缺少L1 与L2;(d) 缺少LS;(e) 缺少LTV;(f) 无多尺度(Mutil-Scale,MS)结构;(g) 无MS 结构和L (损失函数为均方误差);(h) AOD-Net)Fig.11 Experimental results of ablation study ((a) Aerial fog image;(b) Proposed algorithm;(c) w/o L1 and L2 loss function;(d) w/o LS loss function;(e) w/o LTV loss function;(f) w/o MS structure;(g) w/o MS structure and L(The loss function is the mean square error);(h) AOD-Net)

接下来为了确定本文λ2的取值,我们采用了一种范围缩小的方法,通常λ2的取值在0 至1 之间[26],于是本文每0.1 为间隔训练了模型,并对图像进行了主观和客观分析,另外,由于λ2关系到图像的视觉成像效果,因此,本文在记录客观数值指标时选择记录了FADE、VI、RI 与CB 四个评价指标来观测不同的λ2对图像的去雾程度、能见度、色彩保真度以及对比度的影响,以此来确定λ2的大致取值范围,图12 给出了不同取值的λ2对去雾效果的影响,可以看出当取值为0.7 时图像饱和度过高,而当取值为0.9 时则会导致图像去雾效果变差;从图13 则可以看出λ2取值在0.8 至0.9 之间时可以取得最优的指标,因此可以确定最优解在0.8 至0.9 之间.接下来继续以0.01 为间隔测试了0.81~0.89 范围内的λ2的最优值,通过图14 可以看出,综合四种对比指标,λ2的取值为0.84 时最适合本文雾气数据集的训练.

图12 所提算法在λ2 不同取值时的去雾效果Fig.12 The dehazing effect of the proposed algorithm at different values of λ2

图13 λ2 不同取值时的图像指标变化(λ2=0.1~0.9)Fig.13 The change of image index when λ2 takes different value (λ2=0.1~0.9)

图14 λ2 不同取值时的图像指标变化(λ2=0.81~0.89)Fig.14 The change of image index when λ2 takes different value (λ2=0.81~0.89)

3.5 算法的耗时及模型参数对比

本文所提算法不仅关注了去雾图像的视觉效果和图像质量,同时还尽力保证了去雾实时性.表5展示了各算法在原始分辨率和缩小分辨率的航拍雾图上的处理耗时,其中DCP、BCCR、CAP、DehazeNet、MSCNN 均在Matlab2016a 上运行,使用CPU 来处理图像.GCANet 和FFANet 采用的Pytorch-gpu 框架,而AOD-Net、GFN 和本文算法均采用MatCaffe-gpu 框架,从表中可以看出采用GPU 加速的算法在图像处理耗时上要明显低于采用CPU 进行图像处理的算法,其中AOD-Net 的去雾速度最快,而本文所提去雾算法的处理速度仅次于AOD-Net,处理640×480 分辨率大小的航拍视频的帧率可达到35.71 FPS,基本能够满足该分辨率下的航拍图像实时处理.

表5 去雾耗时对比(s)Table 5 Comparison of the defogging time-cost (s)

此外,由于无人机能够携带的硬件设备有限,因此需要轻量级的模型,在考虑到后续图像还需要经过目标检测模型的处理,因此本文的模型需要预留较多的内存给其余算法模型.表6 展示了每种算法的参数量以及模型大小.从中可以看出本文模型的参数量在多尺度结构的影响下相较于AODNet 有较大的上升,这也使得本文模型体积相较于AOD-Net 更大,达到了286.5 KB,参数量和模型大小分别相较于AOD-Net 增加了10.9 倍和31.2 倍,但相较于其它对比模型,本文模型依旧较好地控制在了1 MB 以下,综合去雾性能,去雾速度及模型大小,本文模型依旧是较理想的无人机图像去雾算法.

表6 参数量与模型大小比较Table 6 Comparison of the parameters and model size

3.6 雾天航拍图像的目标检测实验

本文还测试了所提算法对目标检测算法的辅助效果.为了体现所提去雾算法性能的优秀,本文用目标检测算法分别对有雾图像中的车辆和去雾后图像中的车辆进检测,目标检测算法使用的是YOLO算法[38],视频来源于大疆Mini2 拍摄的雾天道路情况,我们从15 s 的视频中随机抽取了50 帧图像进行车辆检测测试.

车辆检测的主观视觉效果如图15 所示.从图15中可以看出,在未被去雾算法去雾之前,图像中能被YOLO 算法检测出来的车辆数量有限,并且检测的置信度数值较低,如图15(a)所示.DCP、CAP、AOD-Net 以及FFANet 去雾后的图像中能被YOLO 算法较为准确地确定6 辆车,但DCP、CAP以及FFANet 去雾后的图像中容易出现误检测的现象.BCCR、DehazeNet 与本文去雾算法效果较为理想,YOLO 算法能够准确地框出7 辆车,MSCNN、GFN 以及GCANet 效果较差,能被确定的车辆数均低于5 辆.

图15 航拍去雾图像中车辆检测结果示例 ((a) 原图;(b) DCP;(c) BCCR;(d) CAP;(e) DehazeNet;(f) MSCNN;(g) AOD-Net;(h) GFN;(i) GCANet;(j) FFANet;(k) 本文算法)Fig.15 Example of aerial image dehazing in vehicle detection ((a) Original;(b) DCP;(c) BCCR;(d) CAP;(e) DehazeNet;(f) MSCNN;(g) AOD-Net;(h) GFN;(i) GCANet;(j) FFANet;(k) Proposed algorithm)

表7 展示了50 帧图片中框选出车辆的置信度的平均数值,并标记出了表内效果最好的前三个数值,从表中的客观数值指标中能够看出本文所提去雾算法去雾后图像中被检测出的目标车的置信度数值最高,该值相较于去雾前图像提升了22.31%,此外图中被检测出的车辆数辆仅次于BCCR,综合检测度可以看出,本文提出的算法配合YOLO 检测算法能够有效检测无人机雾天图像中拍摄的车辆,具有一定的应用价值.

表7 车辆检测的置信度数值,标出三个最优的结果:(1) 最好的结果;(2) 次好的结果;(3) 第三好的结果Table 7 Confidence value of vehicle detection,marking the three best results:(1) The best result;(2) The second-best result;(3) The third-best result

3.7 在无雾图像上的实验结果及分析

为了体现本文算法的稳健性与鲁棒性,所提算法除了在第3.2 节与第3.3 节中对有雾航拍图像进行测试,还对20 张随机拍摄的无雾图片补充了测试实验,图16 展示了各算法在清晰无雾图像上的去雾效果对比,表8 展示了各算法处理的无雾图像与原图之间的PSNR 与SSIM 值,其中最优值用粗体加下划线标出,次优值用粗体标出.从表8 可以看出,本文算法对无雾图像的处理效果较为理想,而从图16中能看出,本文算法对无雾图像处理后依旧在某些区域出现了轻微的过度去雾现象,这种现象相较于其它对比算法要更加轻微.具体表现见图16(k)路面颜色,部分路面的颜色相较于原图的路面颜色要深一些,这说明了本文会把灰色路面上磨砂区域的颜色错误判断为雾气进行过度去雾.结合有雾图像与无雾图像的处理结果,可以看出虽然本文模型仅采用了合成雾图进行训练,但却够在一定程度上区分有雾与无雾图像,对有雾图像能进行有效去雾,而对输入的自然清晰图像的去雾负面影响较小,这也体现了本文改进的算法具有一定的鲁棒性.

表8 清晰航拍图像上的客观数值评价Table 8 Objective numerical evaluation on the clear images of aerial photography

图16 清晰图像上的去雾效果对比((a) 原图;(b) DCP;(c) BCCR;(d) CAP;(e) DehazeNet;(f) MSCNN;(g) AOD-Net;(h) GFN;(i) GCANet;(j) FFANet;(k) 本文算法)Fig.16 Comparison of dehazing effects on clear images ((a) Original;(b) DCP;(c) BCCR;(d) CAP;(e) DehazeNet;(f) MSCNN;(g) AOD-Net;(h) GFN;(i) GCANet;(j) FFANet;(k) Proposed algorithm)

3.8 所提去雾算法的局限及结论

本文所提算法虽然在薄雾图像与无雾图像上拥有较好的处理效果,但是在某些场景下效果较差,其一是在浓雾情况下,本文的算法较难消除浓雾带来的影响,无法恢复因浓雾遮挡的图像细节,例如图17(a)内大面积的浓雾,另外这种大面积且分布极其不均匀的雾气会使本文算法在雾气较薄的区域进行过度去雾,这会导致出现如图17(a)内出现对比度升高而变暗的现象,原因可能是因为λ2的数值不合适,使训练出的模型不能适配这种雾气浓度分布极其不均的图像.其二是本文算法在处理强光源区域时会把强光当成浓雾进行处理,这会导致算法在去雾时出现一定程度的失真现象,并且色彩保真度也较低,例如图8(l)第四列图像、图17(b)和图17(c)部分高曝光区域周围的天空出现了一定程度的失真,并且从表2 的PSNR 以及表3 的RI 定量指标可以看出,本文算法去雾后图像的色彩保真程度相较于对比算法并不算优秀,综合第3.2 节,第3.3 节,第3.7 节以及第3.8 节的实验及结论,可以判断本文模型能够胜任的环境为薄雾、无雾环境.目前还无法胜任的复杂环境为极低能见度的浓雾,并且抑制强光的能力较弱,未来需要考虑设计更优质的损失函数或改进模型以及在训练数据集中加入复杂环境的图像来提升算法适应性与泛化性.

图17 去雾失败时的示例图Fig.17 The example images of failure in defogging

4 结论

针对航拍图像易受雾气干扰、AOD-Net 对图像细节恢复程度较差以及图像偏暗的问题,本文提出了一种基于改进AOD-Net 的航拍图像去雾算法,并与DCP 算法、BCCR 算法、CAP 算法、DehazeNet算法、MSCNN 算法、AOD-Net 算法、GFN 算法、GCANet 算法以及FFANet 算法进行了对比.本文对AOD-Net 的网络结构、损失函数以及训练方式进行了改良,实验结果表明,本文算法虽然在去雾速度上相较于AOD-Net 有所下降,但去雾图的对比度、色彩饱和度、色调恢复程度以及图像明暗度相较于AOD-Net 均有较大改善.此外,本文所提算法去雾后的图像的多项评价指标数值相较于AODNet 均有明显的提升.需要说明的是,本文算法在浓雾图像和强光源图像上的表现不太理想,因此后续需要考虑增加此强光以及浓雾的训练数据,同时考虑设计自适应对比度拉伸方法来减少因过度去雾导致图像过暗的现象.最后,综合主客观效果、算法耗时以及雾天航拍图像中目标检测的效果,本文算法是一种较为优秀的航拍图像去雾算法.

猜你喜欢
雾气航拍尺度
雾气一样的摆渡船
雾气一样的摆渡船
财产的五大尺度和五重应对
山中雾气
航拍巴彦呼硕
水天月
航拍,苍穹下的醉美视角
难忘的航拍
陕西画报航拍
宇宙的尺度