张 雪, 贾克斌, 刘 钧, 张 亮
(1.北京工业大学 信息学部,北京 100124;2.先进信息网络北京实验室,北京 100124;3.华云升达(北京)气象科技有限公司,北京 102299)
云作为一种重要气象因素,是水气循环的中间环节,不同形态和数量的云常伴随不同的天气现象,因此云量的观测对天气预测具有一定的指导意义。云量检测是检测云体积的大小,用云体遮蔽天空视野成数的指标来衡量云量。准确分割云图,获取有效的云量信息,不仅能提升天气预报的准确性,也为飞行保障、人工增雨等提供帮助[1]。
目前云图来源有卫星遥感观测得到的云图和地基观测得到的云图,本研究针对从地面观测得到的地基云图,它有形状、结构、纹理等精细的云体细节信息,能更有效地分割云图、检测云量,进而有效辅助局部区域内的天气预测。近几年,地基云图的观测主要靠人工目测,由观测员根据自己的经验对观测到的云量进行判断,但这个方法存在受主观意识和情绪干扰、成本高等弊端,所以基于地基云图的云量自动检测方法逐渐发展起来,而云图分割是实现云量自动化检测的关键步骤。
近年来,不少学者提出了越来越多的云图分割方法,最初提出基于阈值的分割方法,Yamashita等[2]通过定义天空指数SI和亮度指数BI,用SI和BI阈值将云和天空分开;周文君等[3]用全天空成像仪观测云量,通过统计分析像素点红蓝比值,设定阈值小于0.62为晴空,阈值大于0.66为云体;Zhu等[4]提出一种局部阈值算法,根据不同区域的特征使用不同的阈值来区分云体和天空,提高了云图分割精度。
随着深度学习和卷积神经网络的快速发展,越来越多的深度学习结合卷积神经网络方法被用到地基云图的检测上。毋立芳等[5]提出一种基于超像素分析的全卷积网络(Fully Convolutional Networks,FCN)和深度卷积神经网络(Convolutional Neural Networks,CNN)结合的FCN-CNN云图分割方法,该方法首先通过超像素分析实现云图每个像素点近领域的聚类,然后将聚类结果输入FCN-CNN,可以得到较精确的分割结果。沈慧想等[6]提出一种对称式密集连接卷积神经网络对云图进行分割,该方法首先通过普通卷积提取云图特征,然后经过密集连接块和上采样模块处理特征图,最后并联融合网络浅层和深层特征,实现云图分割,该方法在一定程度上提高了地基云图分割的精度,但是模型参数量太大,严重影响了训练速度。Dev等[7]利用Encoder-Decoder架构,提出了一种基于深度学习的云图分割网络CloudSegNet,使云图分割准确率达到了94%。
随着卷积神经网络在图像分割领域发展得越来越成熟,也有不少卷积神经网络用于云图分割技术,通过对大量数据的学习,提取精细的云体特征,使网络鲁棒性更高、泛化能力更强,进而达到更佳的分割效果。但现有云图分割网络模型参数量较大,运算复杂度较高,导致训练速度慢,难以实际部署。因此研究一种低参数量、低显存占用的云图分割技术,实现云图的精准分割对研究气候变化、天气预测等气象领域问题具有极大的实际应用价值。本文构建了标准GT地基云图数据集HBMCD_GT,基于这一数据集,提出了一种基于地基云图的轻量化分割网络LGCSegNet(Lightweight Ground-Based Cloud Image Segmentation Network),可以在低运算量前提下更好地提取云体特征信息,实现对云图的精确分割。
本文构建的云图分割数据集HBMCD_GT是在HBMCD数据集[8]作为原图片的基础上进行构建的,具体构建步骤如图1所示。
图1 HBMCD_GT数据集构建流程
HBMCD数据集中的图片大多是白天云图,会有很强的太阳光,严重干扰了云图分割,因此为了构建标准的GT地基云图数据集,主要有以下两个步骤:① 训练一个分割效果较好的分割网络,辅助云图分割;② 将云图YCrCb的Y通道分量进行阈值分割后的结果与云图分割的0-1图像矩阵相与,再进行人工校准标注,最后得到精准的GT图。
上述步骤①的流程如图1(a)所示,选用分割效果表现出色的UNet作为预训练网络,用开源的分割数据集SWIMSEG[9]和SWINSEG[10]作为训练数据,但是这两个数据集中图片数量都比较少,为了保证训练网络的性能,将上述两个数据集进行数据扩增,用扩增后的数据来训练UNet网络,扩增前后数据如表1所示。
表1 数据集扩增前后数据量对比
标准GT地基云图数据集构建步骤②的流程如图1(b)所示,首先将HBMCD的原始图片输入预训练网络UNet,得到0-1图像矩阵;接着将原始图片在YCrCb颜色空间提取Y通道分量,然后利用阈值判断太阳光和云体,大于阈值判断为太阳光,小于阈值判断为云体;最后将阈值判断结果与0-1图像矩阵相与,达到去除太阳光的目的,效果如图2所示。
图2 分割数据集制作步骤分割效果图
为保证数据集的置信度,通过对分割图逐张进行人工校准标注,最后形成标准的HBMCD_GT数据集。
将现有的开源云图分割数据集与本文构建的数据集进行对比,如表2所示,SWIMSEG数据集是白天地基云图的原图和GT图,而SWINSEG数据集是夜晚地基云图的原图和GT图。以上两个数据集中云图的GT图数量比较少,本文构建的数据集既包含白天云图的GT图也包含夜晚云图的GT图,图片数量较多,为后续云量检测提供了坚实的数据基础。
表2 数据集比较
由于现有云图分割方法分割效果不佳,无法解决太阳光干扰,并且网络模型参数量和运算复杂度高,不便于实际部署应用,因此采用在语义分割上表现较好的Encoder-Decoder框架思想构建本文网络模型LGCSegNet,网络结构如图3所示。图片输入网络后,首先进入Encoder模块,通过一层3×3卷积和最大池化层提取图像浅层特征信息,然后通过特征提取单元和下采样单元提取图像深层特征。为了提升神经网络特征提取的效果,在加深网络深度的前提下保证网络参数量尽可能小,通过重复4次Down-Conv达到目的,每个Down-Conv模块由不同个数的特征提取单元和一个下采样单元组成,经过4个Down-Conv模块后,特征进入一个1×1的卷积;接着进入Decoder部分,该部分采用了4个Up-Conv的上采样单元和1个final Up-Conv的上采样单元,在Up-Conv上采样单元中也使用了膨胀卷积,能有效降低参数量,避免特征损失。
图3 LGCSegNet网络结构
在Encoder模块中利用卷积层和池化层提取不同尺度的特征,其流程为:224×224的输入图像首先经过一个3×3卷积层和最大池化层得到112×112大小的图像特征,然后再通过4个Down-Conv模块,每个Down-Conv模块的输出特征大小是输入该模块特征的一半,最后经过一个1×1卷积得到7×7大小的特征。其中4个Down-Conv模块构成了Encoder模块特征提取的主要部分,而每个Down-Conv本质是由不同个数的特征提取单元和一个下采样单元构成,所以特征提取单元和下采样单元的设计是本文网络设计的重要环节之一。
为了减少参数量,本文借鉴MobileNet[11]的设计思想,在特征提取单元中采用深度可分离卷积,其基本思想是把标准卷积分解成深度卷积(Depthwise Convolution,DWConv)和1×1逐点卷积(Pointwise Convolution),先用深度卷积实现每个卷积核对应一个输入通道,然后再用1×1的逐点卷积来组合不同通道深度卷积输出的信息,这个过程不仅可以有效减少参数计算量和模型大小,而且还保证了特征提取单元的宽度和深度。为了提取更多丰富的云体结构特征,在深度卷积中加入不同膨胀率的膨胀卷积(Dilated Convolution),使模型在同一层有不同的感受野,有效降低模型深度。本文还使用了跳跃连接提取残差特征,最后,使用通道打乱方法打乱通道间信息,弥补了通道连接带来的损失,接着利用一个全局平均池化和两个全连接层对打乱后的通道进行整体特征提取,并将输出结果与原通道特征图进行逐元素相乘,实现通道权重分配,提升模型能力,这就是注意力机制(Attention)[12],特征提取单元模型设计如图4所示。
图4 特征提取单元模型
在下采样单元中,首先通过一个1×1卷积整合通道间信息,然后同时经过3×3的平均池化和最大池化,提取局部区域的整体和轮廓信息,保留主要的特征信息,降低信息冗余,完成不同尺度特征的下采样。接着将平均池化和最大池化的输出分别经过一个1×1卷积后实现通道相连,增加通道宽度,下采样单元网络模型设计如图5所示。
图5 下采样单元网络模型
为了重现提取的特征,需要将Encoder模块得到的特征经过上采样单元还原到图像原始尺寸,这个过程称为Decoder。在本文中,使用了4个Up-Conv和1个final Up-Conv上采样单元,为了减少模型参数量,在Up-Conv中,首先经过一个1×1卷积,再经过上采样增大特征尺寸,最后通过一个深度卷积和膨胀率为1的膨胀卷积,如图6(a)所示;而与Up-Conv结构相比final Up-Conv只是将深度卷积和膨胀卷积换成了普通的3×3卷积,如图6(b)所示。由于深度卷积在减少参数量的同时可能会损失一些特征,所以采用concatenate方法将Encoder模块与Decoder模块具有相同尺度特征的通道进行合并,以实现更精细的图像特征重现。
图6 上采样单元网络模型
为了满足实验过程中快速处理数据的要求,本文实验在实验室GPU上进行,在处理器为Intel®Xeon®Silver 4114 CPU @2.20 GHz,运行内存为32 GB DDR4,显卡为Nvidia GeForce RTX 2080的硬件环境下,搭建Ubuntu 18.04的操作系统,并在该操作系统上用Pytorch 1.4框架和Python 3.7搭建网络,实现网络的训练、验证和测试。
本文将HBMCD数据集中11000张图片和本文构建的对应HBMCD_GT作为数据集,为了让模型充分学习云图特征,达到较好的实验效果,将训练集、验证集、测试集按8∶1∶1的比例分开。网络训练批次batch_size设为32,训练迭代次数epoch设为100,学习率为0.01,损失函数是交叉熵函数,优化器是Adam,为了避免实验过拟合,在训练时使用early stop,当迭代次数达到20次时,若验证损失依然没有减小,就停止训练。
本文实验评价指标是像素准确率(Pixel Accuracy,PA)、平均交并比(Mean Intersection over Union,MIoU),其计算公式为
(1)
(2)
式中:TP(True Positive)为被模型分类正确的正样本;TN(True Negative)为被模型分类正确的负样本;FN(False Negative)为被模型分类错误的正样本;FP(False Positive)为被模型分类错误的负样本;n为类别数。为了保证最终实验结果的可信度,重复6次实验并取其均值作为每个实验指标的最终结果。
将网络分割效果图与原图、GroundTruth真值图进行对比,如图7所示,本文所提出的模型LGCSegNet能分割出大部分的云体,只有一些与天空颜色相近的云体和丝缕状云体难以被分割出来。
图7 网络云图分割结果
为了证明本文模型LGCSegNet在地基云图上较优的分割效果,将本文模型和几种在语义分割上表现优秀的经典网络进行对比,主要对比指标是像素准确率和平均交并比,对比实验结果如表3所示。
表3 网络性能比较 单位:%
从表3中可以看出,RefineNet、DeepLab-V3、PSPNet和SegNet网络的分割准确率和平均交并比远小于LGCSegNet网络;虽然经典的分割网络UNet和FCN的分割准确率只比LGCSegNet网络低1%左右,但是其平均交并比低于LGCSegNet网络近3%,所以本文提出的模型LGCSegNet具有最高的分割准确率和平均交并比,也证明了模型LGCSegNet有较优的分割效果。
接着将上述的几种网络在参数量、运算量和单张图像预测耗时上进行对比,结果如表4所示,其中运算量是网络模型的浮点运算次数,也就是网络模型的时间复杂度,它决定了模型的预测时间,时间复杂度越大,模型预测的时间就越长。
从表4中可以看出,除了本文网络LGCSegNet,其他网络的参数量都在10.00 MB以上,运算量都在10.000 GB以上,单张图像的预测时间均在2.900 s以上,而LGCSegNet网络的参数量和运算量跟其他网络相比都很小,参数量只有0.31 MB,运算量只有0.108 GB,单张图像预测的时间也只达到了2.742 s,相比其他网络模型,本文网络模型参数量较少,时间复杂度较低,进一步减少了模型预测时间,达到了网络轻量化的目的。由此证明,本文提出的LGCSegNet模型不仅能精准分割云图,而且只用了较低的参数量和时间复杂度,占用较低的显存,耗费较少的预测时间,为实际部署应用奠定了良好的基础。
表4 几种网络模型的轻量化对比
最后将在云图分割任务上表现较好的网络FCN、UNet和LGCSegNet在模型训练Loss(网络输出与真实标签之间的误差)上进行对比,Loss收敛情况如图8所示,从图8中可以看出,对比3条Loss曲线收敛情况,本文模型LGCSegNet的收敛效果最好,进一步证明LGCSegNet网络性能较优,在地基云图分割任务上具有较好的表现。
图8 LGCSegNet、UNet和FCN网络Loss对比
实现云量的自动化精准观测可以有效减小由气象观测员主观因素影响带来的识别误差,节约人力成本。为了解决现有云图分割网络效果不佳、显存占用高等问题,本文利用“Encoder-Decoder”网络模型框架,结合不同层次特征通道合并思想,设计并构建了一个轻量化的地基云图分割网络模型LGCSegNet。该网络能精确提取云图特征,在一定程度上避免了特征的边界损失,将本文模型与经典的语义分割网络模型进行对比实验,本文模型可以使分割准确率达到96.83%,平均交并比达到86.00%,在轻量化方面,该网络不仅能提升云图分割准确率,而且能大量降低参数量、运算复杂度和显存占用,为云图分割的实际应用提供了较大可能。大量的实验数据证明本文构建的网络模型能在轻量化的前提下实现高准确率的分割效果,可以为后续的天气预报等领域的研究提供有效依据。本文虽然实现了云图的分割,但没有涉及云图分类的问题,后续可以实现云图分割与云图分类的联合检测,进一步提高分割和分类准确率。