APP下载

一种基于深度学习的图像去雾方法

2019-11-08杨传栋张晓龙王昱翔

兵器装备工程学报 2019年10期
关键词:大气卷积损失

杨传栋, 陈 栋, 刘 桢,张晓龙,王昱翔

(陆军炮兵防空兵学院 弹药技术教研室, 合肥 230031)

受雾霾天气的影响,无人机、图像制导弹药等侦察打击装备获取景物图像存在色彩衰减、对比度低、信息可辨识度低等现象,这些低质图像严重影响侦察、目标识别及打击任务的完成,因此图像去雾十分重要,也是机器视觉领域热门的研究方向。目前图像去雾方法主要包括基于图像增强的方法[1]和基于物理模型复原[2]的方法。近年来深度学习凭借强大的数据学习能力,在图像去雾上取得了较好的效果[6]。

但由于室外场景范围广、景深大同时具有不同雾气浓度,会造成传播图估计不准确、细节丢失、去雾效果较差。因此本文基于深度学习的算法,首先利用一种深度估计和天空区域分割的方法合成并修正不同雾级的室外数据集,然后增加跳层连接和感知损失函数提高雾图生成网络学习传播图的能力,最后利用判别网络对结果进行精修。

1 去雾方法原理

1.1 大气散射模型

在计算机视觉领域,大气散射模型被广泛应用于去雾技术研究,可用表示为[2]:

I(x)=J(x)t(x)+A(x)(1-t(x))

(1)

式(1)中,I是观测到的有雾图像;J是真实的复原图像;A为大气光值,表明环境光的强度;t为光路传播图;x是像素位置。当大气光值均匀时,光路传播图可表示为t(x)=e-βd(x),其中β是大气散射系数,d表示景深。

由式(1)可以看到,影响去雾效果的两个重要因素为大气传播图和大气光值估计的准确性。通过卷积神经网络(CNN)从训练数据集中有效的学习大气传播图和大气光值[3],进而对带雾图像I进行复原,即:

(2)

1.2 生成对抗网络

GAN在计算机视觉领域得到广泛应用[8],能够产生高质量图像并保持更好的细节。其包括生成网络和判别网络两部分。生成网络经过博弈能够学习训练图像的分布进而生成更为真实的图像,判别网络用来区分真实数据分布和生成数据分布。通常使用CNN作为二者的基本结构,通过卷积操作(Conv)、池化操作(Pooling)、非线性激活函数映射(ReLU)和批标准化(BN)等一系列操作的层层堆叠构成特征提取网络,具备更优越的特征表达和学习能力[9]。在去雾任务中,可转化为最大最小优化问题,即:

EI~Pdata[log(1-D(Gd(I)))]+Et,J~Pdata(t,J)[logD(t,J)]

(3)

式(3)中,Gt(I)、Gd(I)表示网络生成的传播图和去雾图;t、J是对应的真值;Gt、Gd为对应的生成网络。

2 基于深度学习的图像去雾方法

2.1 去雾方法流程

基于深度学习的去雾方法分为训练过程和预测过程,其框图如图1所示。

训练过程中,用于估计大气光值和大气传播图的CNN首先在构建的合成数据集上进行有监督学习,更新CNN模型参数,随后利用式(2)得到粗估计去雾图,最后基于GAN的联合判别器,利用估计的去雾图和训练集中对应的大气传播图对CNN模型参数进行精修,经过多次迭代训练获取模型参数。预测过程中将有雾图像输入到训练好的CNN模型中,分别计算其大气光值和大气传播图,通过式(2)输出去雾图像。整个过程实现了端到端的学习,给定特定输入,即可得到对应输出。

图1 基于深度学习的去雾方法流程框图

2.2 生成对抗网络结构

DenseNet[7]以密集块(Dense Block,DB)和转换层(Translation Layer)作为网络的基本组成单元,选择该结构作为基础生成网络能够更准确、更有效地评估不同雾级雾图的大气传播图和大气光值,其工作原理框图如图2所示。

图2 DenseNet基础结构框图

DB作为网络的基本组成单元,将每层网络以密集连接的方式连接到后续所有层中。x0是网络输入,Hl表示BN-ReLU-Conv(1*1)-BN-ReLU-Conv(3*3)复合操作,xl表示第l层输出,有:

xl=Hl([x0,x1,…,xl-1])

(4)

[x0,x1,…,xl-1]表示将第0层到第l-1层输出的各通道特征图进行合并,能够最大化特征信息的传递,保证了更好的收敛性,同时将DB内3×3卷积前增加1×1卷积降维,具有更小的参数量。下采样转换层(Transiton Down,TD)在DB之间增加1×1卷积和平均池化,即Conv(1×1)-Pooling(2×2),进一步减小通道数和尺度。

为了能够恢复到原空间分辨率,设计上采样部分,包括DB、采用上采样卷积的转换层(Transiton Up,TU)和跳层连接组成,生成网络结构如图3所示。

其中TU仅对上一个DB进行反卷积(1×1)-ReLU-BN-upsample操作,跳层连接引入下采样转换层中得到的特征图,既能为各像素学习提供更丰富的上下文信息,同时能防止梯度弥散。最后通过tanh函数将数值限制在[0,1]之间,整个网络具有更强的局部和全局特征表征能力。

判别网络对1.2节中提出网络生成的大气传播图进行精修,结构如图4所示。判别网络对生成去雾图像和训练数据集中对应的深度图进行判别,经过卷积、池化、非线性映射等操作,最后利用Sigmod激活函数将判别结果输出,认为是真实图像则为1,若判别为假则为0。

图3 生成网络结构

图4 判别网络结构

2.3 多任务损失函数

为了训练提出的网络,需要损失函数来衡量图像去雾的效果。本文使用多任务损失函数,包含判别损失、图像均方差损失和感知损失三部分。通常在GAN实际应用中将式(4)转化为最小化判别损失LG,即:

LG=-log(D(Gt(I)))-log(D(Gd(I)))

(5)

同时使用均值平方差(MSE)LMSE度量输入输出的相似度,有:

其中N为总像素数。

仅使用MSE损失往往会模糊最终结果,丢失图像细节。梯度特征能更好的保留边界特征,同时,CNN结构浅层输出能够获取图像的纹理和轮廓特征,如图5所示。

图5 梯度和VGG浅层特征图

因此通过引入了感知损失[6]Lp,生成网络利用提取到的特征,能生成更加精细的目标图像,此处感知损失由两部分组成,即:

(6)

式(6)中,Lpg是水平和数值方向的梯度损失;Hx,Hy分别为计算图像水平和竖直方向梯度;w,h表示输出特征图宽和高;Lpf表示特征损失;V1,V2是预训练过的VGG16的conv1和conv2层进行卷积操作后的特征图作为边缘提取;λpg、λpf为权重常数。

为了平衡三者,判别损失增加了权重常数λG,三部分共同组成的损失函数L为:

L=λGLG+LMSE+Lp

(7)

3 实验及分析

3.1 训练数据集修正

相对于其他任务,雾图与对应的无雾图更难获取,数据对深度学习的效果影响更为突出。室外场景景深更大,获取深度信息尤其无穷远处天空不够准确,本文对此问题进行了改进。在RESIDES数据集[9]基础上增加部分航拍图像,首先利用深度估计模型[11]对2 200张室外图片计算对应的深度信息d(x),随后利用天空分割算法[12]识别天空区域进而修正d(x),通过设置β∈[0.6,1.8],A∈[0.7,1]利用式(1)生成合成数据集,如图6所示,根据不同参数组合,每张原图对应35张不同雾级的合成雾图。可以看到通过修正训练集的深度信息更加准确,边缘尤其是天空区域得到改善。测试集从中随机选择20张作为合成数据测试集,并利用网络航拍采集雾天图像50张作为自然雾图测试集。

图6 生成及修正数据集

3.2 网络训练

实验环境为NVIDIA1070GPU,处理器为Intel(R) Core(TM) i5-8400CPU,内存16 GB,编程使用pytorch框架进行训练和测试。网络输入尺寸为512×512,因此训练集中图像被随机裁剪为固定尺寸。通过最小化式(7)的损失L,对生成网络和判别网络进行端到端的交替迭代训练,二者批大小均设置为1,并采用Adam优化算法,学习率均设为2×10-3,β设为0.999,权重衰减设为0.000 05,进行500 000次迭代训练达到0.002,达到了较好的结果。

3.3 算法定性及定量评价

为验证本文算法对雾图的去雾效果,本文选择经典的基于图像增强的Retinex算法[1]、基于复原的DCP算法[2]及基于深度学习的DehazeNet[3]、AODNet[4]、DCPDN[5]算法作为对比算法,分别在合成数据集和自然雾天图像数据集上进行比较。部分图像去雾效果如图7、图8所示。

图7为大景深的合成雾图去雾效果。Retinex算法对不同场景需要手动调节参数,在水面部分出现色彩扭曲;DCP算法由于对颜色信息过于依赖,容易造成颜色的过饱和,如天空、建筑物颜色失真;基于深度学习的AODnet、DCPDN等算法由于在训练过程中使用了大量室内训练集,造成处理强度不够,仍然留有少量雾气,整体偏暗。本文提出算法能够较好地估计大景深雾图的雾气分布及程度,去雾后的远处和近处建筑物、舰船边缘特征和细节丰富,信息更为完整,同时整体色调更接近真实图像,去雾效果更好。

图8为对实际航拍浓雾场景图像的去雾效果。Retinex算法整体色调过亮,导致前景处颜色失真;DCP对远处建筑去雾效果较好,但仍存在色调过饱和的问题,树木道路颜色失真;AOPNet、DehazeNet能在一定程度去除浓雾,但仍然有一定的雾气残留,并且对车辆和远处建筑物细节有所丢失。本文提出算法去雾整体色调真实自然,对车辆和远处建筑物的细节能有效保留,对远处天空区域能明确区分,整体上效果优于其他算法。

图7 不同算法对合成雾图的去雾结果

图8 不同算法对自然雾图的去雾结果

为了从定量角度进行对比,选择峰值信噪比(PSNR/dB)、结构相似度(SSIM) 作为有参考的评价指标,选择平均梯度(Average gradient)、信息熵(Entropy)作为无参考评价指标,去雾效果评价指标均为取值越大,结果越好。在所有测试集图像上进行测试并计算指标均值。同时基于本实验环境对算法运行时间进行比较。结果如表1、表2所示。

表1 不同算法对合成雾图去雾效果评价指标

表2 自然雾图去雾效果评价指标及运行时间

从去雾效果指标看,本文算法在合成雾图测试集上,PSNR和SSIM均为最高,表明去雾结果与真实图像更接近;平均梯度和信息熵均有更高的值,表明算法结果边缘信息得到更好的保留,对比度、清晰度及细节信息均优于其他方法。同时从算法速度看,在基于深度学习的同类方法中有较短的处理时间,并快于传统的基于复原的DCP算法。综上所述,本文算法能较快地对不同雾级图像处理得到高质量、噪声少的去雾图像。

4 结论

本文提出了一种基于深度学习的图像去雾方法,利用一种深度估计和天空区域分割的方法合成并修正了不同雾级的室外数据集,利用跳层连接和增加感知损失函数,提高了雾图生成网络学习传播图的能力,通过判别网络对参数进行更新。实验结果表明,在不同雾级的合成雾图和自然航拍雾图上,本文提出算法能较快地得到更加自然清晰的去雾图像,主客观指标优于其他算法。为在恶劣环境中完成侦察打击等军事任务提供了一个可参考的图像处理方案。

猜你喜欢

大气卷积损失
洪涝造成孟加拉损失25.4万吨大米
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
宏伟大气,气势与细腻兼备 Vivid Audio Giya G3 S2
一种并行不对称空洞卷积模块①
如何“看清”大气中的二氧化碳
大气光学现象
两败俱伤
从滤波器理解卷积
损失