深度学习在多天气分类算法中的研究与应用①

2020-11-06 00:46陈思玮贾克斌王聪聪
高技术通讯 2020年10期
关键词:天气现象卷积天气

陈思玮 贾克斌 王聪聪 刘 钧

(*北京工业大学信息学部计算智能与智能系统北京市重点实验室 北京 100124)(**北京先进信息网络实验室 北京 100124)(***华云升达(北京)气象科技有限责任公司 北京 100081)

0 引 言

天气影响人们工作生活的方方面面,如穿衣打扮、交通选择等日常安排;植物、农作物生长治理等民生问题;智能交通监控、无人驾驶辅助系统等智慧生活工具。随着图像理解和智能信息技术的迅猛发展,传统依靠人工观测天气的弊端逐渐显露,人工识别天气主观性强、观测频率低、耗费人力物力,且因时间、地点的限制无法全面、系统地展示数据。因此天气现象自动分类是目前主要的研究及应用方向,可以解放台站观测人员,减轻其工作压力;弥补无人观测区的数据缺漏,实现天气的实时、全面、连续、定量记录;为气象灾害和气象服务提供强有力的数据支撑,方便气象数字化、网络化、智能化部署。

近年来,基于计算机视觉和深度学习的天气自动分类研究引来广泛关注。李骞等人[1]利用天气图像的功率谱斜率、对比度、噪声和饱和度等特征对晴、阴、雾、雨4类天气进行分类识别。郭佳等人[2]基于改进的双色模型对雾、霾、沙尘等视程障碍类天气现象进行分类。Zhang等人[3]利用多天气特征和多核学习对晴、雨、雪、雾霾4类天气现象进行分类,并建立了包含20 000幅图像的MWI数据集。于浩等人[4]基于贝叶斯分类算法对雾、雨2类室外天气进行判别。史静等人[5]提出一种新的词袋模型,并结合支持向量机(support vector machine,SVM)和随机森林分类方法判别晴、阴2类天气状况。基于卷积神经网络(convolutional neural network, CNN)的模型[6,7]被用于识别雾、雨、雪等极端天气。GoogleNet、AlexNet等深度学习卷积神经网络框架[8]被用于进行天气现象分类,准确率高达92%。刘运凯等人[9]结合Mask R-CNN感兴趣区域提取和VGG-16深度学习模型进行可见光交通气象自动分类。

目前采用计算机视觉算法的天气现象判别种类单一,场景、领域有所限制,且算法很大程度依靠特征选择,泛化能力差,无法扩展到任意场景和多类天气的判别任务。相关深度学习研究虽为基于图像的天气识别提供了新思路,但其研究集中在雾、雨、雪这类天气,识别种类、场景有所限制,且准确率有待提高。因此,本文建立了一个种类多、地域广、格式规范且面向任意场景的天气现象数据集,为提升算法泛化性建立了基础;采用DenseNet[10]网络模型对天气数据进行迁移学习;利用特征复用和池化均衡结构训练调整网络结构,更有效地学习天气特征;通过调节神经网络的权值和偏置实现了图像特征有效区分。实验结果表明,该算法有效地避免了复杂特征的提取过程,扩大了研究适用场景,提升了分类准确率,为气象服务、智能交通、气象灾害等气象人工智能领域发展提供有力支撑。

1 总体技术路线

本研究将多天气的自动分类转化为深度学习和计算机视觉问题,其核心是识别天气图像的特征并准确分类。本文设计的基于深度学习天气自动分类的技术框架结构如图1所示,其技术路线为:(1)采集并建立包括雾霾、沙尘、雨、雪、霜、露6类天气现象的面向任意场景的数据集;(2)将天气数据集划分为训练样本集、测试样本集和验证样本集,对训练集进行数据增强,提升泛化性,部分样本集用于后续模型的训练、调整和性能评估;(3)使用在ImageNet数据集上训练好参数的DenseNet卷积神经网络作为预训练模型,模型包括卷积层、池化层、全连接层和分类层,使用训练样本集和验证样本集对预训练模型进行参数调整,以反向传播方式对深度模型从全连接层向前更新网络参数,不断迭代与训练以挖掘天气的内在特征与规律,形成适用于天气数据的模型结构;(4)使用测试样本集对调整后的天气模型进行分类效果评估,确定深度学习方法的可靠性。

图1 基于深度学习的多天气自动分类技术框架

2 数据采集与数据集的建立

2.1 天气现象分析

天气现象指发生在大气中、地面上的一些物理过程。中国气象局在《地面气象观测规范》中将这些可观测到的物理过程分为降水现象、地面凝结现象、视程障碍现象、雷电现象及其他现象5类[11]。其中多数天气对生活影响极大,如雨雪天气会造成路面湿滑,为出行、交通带来极大的不便。雾霾、沙尘天气也影响海陆空等交通的正常运营,同时危害人体健康;霜、露附着在植物、地表上影响植物生长、不利于植物保护,甚至带来农业灾害。对此本文针对其中的雨、雪、雾霾、沙尘、霜、露6类与生产生活息息相关的天气现象进行自动分类算法研究。

2.2 数据采集与标注

为创建一个有助于未来气象领域、计算机视觉领域应用发展的数据集,本研究从多地气象观测站采集拍摄天气现象数据,并在百度、Google等各大搜索引擎、多个网络相册、多部影视作品中采集图像作为补充。数据集包括雾霾、沙尘、雨、雪、霜、露6类天气,共19 753幅图片,其中雾霾7 470幅、沙尘1 574幅、雨2 312幅、雪6 507幅、霜675幅、露1 217幅,天气数据集CCW Dataset样本见图2。

数据集面向多场景,每一幅图像的背景互不相同且复杂多变。为保证数据集的客观性,本研究对天气的理解、采集和标注均经过专业气象人员培训。

2.3 数据增强

由于深度学习方法对于数据集的要求较高,目前比较成功的神经网络参数都是百万量级的,需要大量的标记数据训练网络模型。数据增强可以利用有限的数据更好地优化网络模型,获取更优的天气现象自动分类结果。数据增强包括裁剪、翻转、尺度变换、色彩扰动、噪声扰动等。由于本文6类天气样本量不均衡;雾霾、沙尘、雨、雪4类天气场景无限制,更偏向于背景特征且有特定颜色分布,使用色彩扰动影响天气特征;霜、露为地面凝结现象,面向地面植物等细节特征,使用尺度变换使露珠等细节变形破坏天气特征。故通过镜像、翻转、裁剪、添加高斯噪声方式丰富数据集,以提高算法泛化性,防止过度拟合。数据增强后样本量如表1所示,方法使用具体如下。

(1) 将每一类天气数据选取20%作为测试集不做数据增强处理,保证算法准确率符合真实情况。

(2) 其余80%数据进行数据增强,作为训练、验证集,提升样本平衡与多样性。

(3) 对6类数据均进行镜像、翻转、剪裁、添加噪声操作。其中剪裁保证图像包含天气特征部分、添加噪声以不影响图像特征的噪点为标准。

表1 数据样本量(幅)

3 基于深度学习的天气分类模型

3.1 密集连接DenseNet模型

密集连接网络DenseNet是一种深度卷积神经网络,该网络进一步改善了现存的深度神经网络模型中的梯度弥散和模型退化问题。DenseNet网络汲取Highway Networks[12]、ResNets[13]、FractalNets[14]等模型的核心思想,通过特征复用和旁路连接方式打破传统卷积神经网络每一层网络的输入只能来自于上一层网络输出的规律。DenseNet网络结构主要由Dense Block模块和Transition Layer过渡层构成。Dense Block模块中在任意2层网络间创建直接连接,即网络中的每一层的输入都是前面所有层的输出,相较于以往逐层传递的卷积神经网络(CNN),DenseNet有更好的网络健壮性。为避免网络随层数增加,特征维度增长过快,Transition Layer过渡层在每一个Dense Block模块后引入池化均衡,降低计算量并防止过拟合的发生,提高了网络模型的鲁棒性。DenseNet网络结构如图3所示。

3.2 模型调整

由于天气现象数据集的样本分布不均衡且样本数量不够充足,从头训练卷积神经网络模型会产生模型性能不够优异且普适性差的问题。故本文采用迁移学习的方法,将DenseNet网络模型作为预训练模型。DenseNet网络经过ImageNet数据集训练,提取特征能力强大,既可以保留其结构和特性,通过其挖掘数据特征的能力使天气现象数据得到准确分类,又可以避免样本的重复标记,提高图像分类的效率、减少分类任务工作量。本文基于卷积神经网络和DenseNet模型,结合天气现象的类别与特征,构建6类天气的天气现象分类模型,模型结构如表2所示,包括输入卷积层、4个Dense Block、3个Transition Layer和1个分类层。

图3 DenseNet结构

表2 天气现象分类模型

(1) 设置3个Dense Block,模型中每一层的非线性函数由批归一化操作、ReLU激活函数和3×3的卷积组成,保证每个Dense Block中的特征图大小一致。

(2) 在Dense Block间加入Transition Layer,进行池化降维操作。

(3) 模型采用224×224的RGB图像3通道输入,第1层卷积采用7×7的卷积核提取图像特征。

(4) Dense Block中3×3的卷积前加入1×1的卷积,因为每一层的输入与前面所有层均相连,会对网络造成负担,故以此保证各通道特征融合的同时进行降维。

(5) Transition Layer中加入1×1的卷积进一步对参数进行压缩,同时选取平均池化,保留天气现象所对应的更多背景信息。

(6) 所有卷积层的步长为1,用0进行填充;所有池化层步长为2,不用0进行填充。

(7) 最后连接1个Softmax对6类特征天气现象进行分类。

4 结果验证

本研究的实验环境为Windows系统,使用Tensorflow框架设计实现。硬件配置为GPU:NVIDIA GeForce RTX 2080,8 GB RAM;CPU:Intel(R)Core(TM)i5-3470@3.2 GHz,4 GB RAM。实验数据为本文建立的任意场景的雾霾、沙尘、雨、雪、霜、露6类天气现象数据集。模型分类效果通过准确率(Precision)和损失函数(Loss)来评价。

(1)

Loss=max(y, 0)-y×t+log(1+e-|y|)

(2)

其中,Truepositives代表被模型识别为正数据的正数据,Falsenegatives代表被模型识别为负数据的正数据。损失函数Loss使用Binary Crossentropy,t为目标值,y为预测值,可反映预测结果与实际结果的差距程度,损失函数越小代表模型的分类效果越好。

4.1 数据增强与参数选择

深度学习算法所应用的数据集样本量越大越丰富,越能获得更准确的分类效果。本研究对采集的数据集进行了数据增强,为验证数据增强与扩充对深度卷积神经网络模型的训练效果,对比了数据增强前、后的数据集训练结果。

表3对比了本文算法在数据增强前后天气现象分类的效果,其中+代表数据集Dataset进行了数据增强。将数据集作为单一变量,对比准确率和损失函数,因为增强后的数据集每类天气都是10 000幅图像,分布均衡且样本量增加,使分类准确率明显提升,提升了模型训练的泛化能力;损失函数随样本量增加也有所变化,当其他参数调整到更优时,可以使损失函数降低3倍。因此适当的数据增强操作有利于深度学习模型学习数据特征。

批尺寸(Batch_size)即一次训练所选取的样本数量,它的选取不仅影响模型优化程度和速度,而且影响GPU的内存占用,与分类结果和硬件条件密切相关。Batch_size的极限值是训练集样本总数,对于小数据集,能更好地表征训练总样本的特征。但一般深度学习网络所需数据量较大,需要设置小批量训练样本。小批量样本可以加快网络训练,但同时会产生梯度估值不准确、训练时间过长、模型难以收敛问题。因为计算机GPU内存是以二进制方式存储,将Batch_size设置为2的幂次方可以加快计算速度,但是Batch_size值越大对硬件条件的要求越高,本研究的硬件条件最高可以满足Batch_size为512时的环境要求,Batch_size再增加则内存无法满足实验要求。故实验将Batch_size分别设置为16、32、64、128、256、512,比较分类准确率和损失函数选择最优参数。

表3中随批尺寸增加,原始数据集Dataset的准确率由91.36%增加到93.04%,损失函数由0.00293减小到0.000692;数据增强后的数据集Dataset+准确率由95.34%提升到96.3%,损失函数由0.00977减小到0.000275。因此,增大批尺寸Batch_size可以有效提升天气现象分类识别效果。

图4对数据增强后的数据集进行训练结果分析,比较不同批尺寸下损失函数的变化趋势发现,批尺寸越大损失函数越小,网络模型将天气图像预测为目标值的概率越大,即算法预测结果与实际结果的差距小;且可以观察到在较小迭代周期时,损失函数即可趋于稳定,并且慢慢变小,最后几乎不再下降,说明增加Batch_size可以提升模型的优化速度,减少卷积神经网络训练的时间。结合图4与表3,随Batch_size增加,天气现象分类的准确率提升,且损失函数降低明显。通过实验比较,Batch_size设置为256可以在硬件条件允许范围带来最大的分类准确率提升,设置为512时准确率提升不明显,因此选择256的批尺寸作为深度学习中每一次训练所选取的样本数量。

图4 批尺寸大小对损失函数的影响

根据硬件条件与数据集样本数量,本文中的网络参数为初始网络学习率0.1,在完成50%的迭代次数后,学习率降低到原来的10%;在完成75%的迭代次数后,学习率继续降低到之前的10%;批尺寸大小(Batch_size)为256,迭代总次数为10 000,训练过程中加入early stop机制,当连续迭代5次验证损失函数都未减小时,停止训练;数据集以6:2:2的比例划分训练集、评估集和测试集。

4.2 对比实验

(1)不同算法对比

为进一步测试本研究的深度网络模型对天气现象分类的性能,选用VGGNet、GoogLeNet InceptionV3、ResNet最近被广为研究的深度网络模型与本文中的网络模型进行对比分析。

VGGNet[15]通过反复堆叠3×3的卷基核和2×2的最大池化层成功构建16~19层深的网络模型,证明了增加网络深度可以提升网络性能。GoogLeNet[16]中引入Inception结构,利用密集成分近似最优局部稀疏解,在保证高计算性能的同时减少参数。Inception-V3 中通过将较大的2维卷积拆分为2个较小1维卷积的方法达到节约参数、加速预算、减轻过拟合、增加模型表达能力的目的。ResNet网络模型在网络结构中引入残差网络概念,即允许前面层输出直接传递给后面层进行输入,通过多个有参层学习输入输出之间的残差表示,使神经网络可以通过学习上一个网络输出的残差替代传统学习整个输出的方式,达到模型训练收敛速度更快、分类更精准的效果。

表4中比较了5个模型的训练准确率、测试准确率、损失函数与内存使用大小。其中显存占用大小是输入张量大小、前向及反向传播的模型大小和参数值之总和。本文改进的DenseNet深度网络模型的天气现象分类效果明显优于VGG、Inception-V3、ResNet这3个流行模型,其测试准确率高达96.29%;损失函数值为0.000570,分类预测值最接近真实值;模型所占内存为510.66 MB,模型最轻量。本文模型因采用特征复用和旁路连接的密集连接网络结构,使网络变窄、参数减少、降低了计算量,且特征和梯度能更有效地传递,故本文算法有更好的学习和分类性能。

表4 不同模型的性能比较

(2)算法调参效果的比较与讨论

本文基于DenseNet的深度网络模型对天气现象数据集进行特征提取、识别分类,使用微调策略不仅可以使模型适应天气现象数据集,还可以通过反向传播调整网络参数形成较有针对性的算法模型。在调参过程中,首先将网络除最后一层外所有层的参数都进行冻结,即设置网络参数不可更新。然后逐层向前解冻,通过反向传播调整网络参数。调参效果的对比如表5所示,其中解冻0层代表只解冻全连接层,解冻1层代表向前解冻1个Dense Block模块,依此类推。表5中的结果表明,随着解冻层数的增加,天气现象分类准确率先升高后降低,解冻3层时算法识别率最高为97.51%,但较解冻2层的97.48%准确率提升不明显。当解冻4层时识别率下降。这是因为本文的天气现象数据集样本量不足,造成了网络模型的过拟合问题,难以带来更好的调参策略。且随解冻层数增加,模型训练带来更多的参数、更大的计算量,对硬件环境提出更高的需求。故基于算法准确性和模型轻量化的考量,认为本文算法在解冻2层时训练效果最佳。

表5 解冻不同层数的调参效果比较

5 结 论

本文对深度学习算法在天气现象分类中的应用展开了研究,并取得了很好的分类效果。应用计算机视觉和深度卷积神经网络实现天气现象的自动分类,不仅解决了依靠人工观测天气现象主观性强、观测频率低、耗时耗力的问题,还能够缓解依靠雷达、传感器等硬件条件观测天气成本高、难维护的问题。在研究中首先建立了一个适用于任何场景的6类天气(雾霾、沙尘、雨、雪、霜、露)数据集,相比已有的相关研究,该数据集场景无限制、天气类别多且样本量大。然后基于Densenet模型提出了改进的深度学习算法,较传统计算机视觉方法,分类准确率提升5%~20%,省去了人工主观提取天气特征的过程,泛化能力更强;相较大多数卷积神经网络,本文算法模型参数更少,分类性能更优,取得了最高97.51%的分类精度。研究证明,本文算法实现了对多天气现象的高效、准确分类,为气象领域的人工智能发展提供了助力。

尽管如此,深度学习在天气现象自动分类的应用中仍需继续探索研究。对于深度学习算法而言,一个高质量、大样本的数据集是后续工作的基础与依托。本文的数据集虽较以往研究有所突破,但采集的图像数据不均衡,其中“霜”和“露”天气的样本量较小,对深度学习的分类识别准确性有所影响。建立分布均衡、样本量更大的数据集将提升算法准确性、为模型训练奠定更坚实的基础。对于深度网络模型而言,引入更先进的算法和网络结构可以优化网络性能,提高算法的泛化能力,为天气现象分类带来更大突破。

猜你喜欢
天气现象卷积天气
《奇怪的天气:关于天气的50个秘密》
基于3D-Winograd的快速卷积算法设计及FPGA实现
天气冷了,就容易抑郁吗?
谁是天气之子
盛暑天气,觅得书中一味凉
卷积神经网络的分析与设计
从滤波器理解卷积
与龙卷风共舞
Weather(天气)
新巴尔虎左旗常见天气现象分析