云这一几乎日日可见的天气现象, 与天气的变化有密切联系。例如, 中国谚语中就提到, “天有城堡云, 地上雷雨临”、“空中鱼鳞天, 不雨也风颠”、“朝霞不出门, 晚霞行千里”等。云还对地热平衡、地球水循环等具有重要意义[1]。其次, 云会影响遥感卫星获取可见光或近红外波段图像, 因此识别云可以辅助卫星对系统进行校准以及进行相应科学研究[1-4]。例如, 美国国家航空航天局(NASA, national aeronautics and space administration)会根据CloudSpotters应用中来自全世界的云观测数据, 来校准CERES云观测卫星仪器。
从20世纪90年代开始, 多个自动云分类算法被提出[1-8]。早期研究主要使用卫星遥感图像和机载光学图像作为研究数据。由于这些数据分辨率低, 早期研究中云型类别数较少。文献[5]首次使用神经网络的方法, 对LANDSAT MSS单通道可见光卫星图像进行三分类(即层积云、积云和卷云), 获得了最高93%的正确率。文献[6]提出了一种无监督分类方法, 对多光谱卫星图像进行分割, 以得到不同云型的分布图。该方法包括2步:首先使用概率自组织图(PSOM, probabilistic self-organizing map)对输入图像按像素提取特征向量, 其次利用聚合层次聚类算法(AHC, agglomerative hierarchical clustering)将这些向量进行聚类, 得到分割图。文献[7]使用支持向量机(SVM, support vector machine)对MODIS数据进行三分类(无云、水云、冰云), 以辅助NASA地球观测系统(EOS, earth observing system), 测试错误率低于10%。为估计遥感图像上云覆盖比率, 针对标记数据少的问题, 文献[2]提出了一种半监督SVM方法, 对MERIS图像进行分割(分为云或陆地)。
遥感卫星数据空间分辨率低, 小面积云可能被忽略, 无法对局部地区进行观测; 时间分辨率低, 无法对特定区域进行局部的、短时、持续观测; 卫星系统复杂, 制造成本高。因此, 地面成像设备逐渐被用于云分类[1, 3, 8-16]。文献[8]首次介绍了一种使用数字图像进行云分类的方法, 但是仅将云分为5类。文献[3]利用一台室内天空成像仪, 每五分钟对天拍摄一张多光谱图像, 并将每一幅图像分为干净天空、蔽光云、薄云3类。文献[1]提出基于全天空成像仪图片, 根据图片的颜色和纹理特征使用K近邻分类器对7类云型(包括“无云”类)进行分类。文中用到的数据集由一辆德国行驶至南非的研究船获取, 覆盖了多个气候区和季节。使用随机样本进行测试, 测试准确率可达到87.52%。考虑到云的统计特征和太阳天顶角, 文献[9]提出了改进的K近邻算法。文献[10]使用SLBP(salient loocal binary pattern)算法, 将准确率提高到了92.14%。文献[11]与文献[9]的思路相似, 通过结合云图片的纹理和空间特征提高分类精度。文献[12]结合了神经网络和SVM, 将云图片的3个通道直接输入到模型中。文献[14]提出了联合一致稀疏编码算法, 引入了稀疏正则项和系数一致性限制, 使得同类云的特征分布更加紧凑。文献[15]提出使用双范数有界稀疏编码算法, 能有效提高对于复杂云类的识别准确率。文献[16]提出基于云图局部二进制模式(LBPs, local binary patterns)中旋转不变特征的出现频率, 可以提取到更稳定的局部特征。
目前的地面成像云型数据集皆由特定设备连续获取, 数据集较大。这种方法不仅数据集获取时间成本高、模型建立周期长, 而且训练好后的分类器不一定可以用到其他设备上。本文首次提出使用深度学习的方法, 对从不同成像设备、不同地区、不同时间下的数据, 训练统一的云分类网络。这样数据集建立成本降低(任何可以拍照的设备都可以用于收集数据), 速度提高(可以多个设置在不同区域同时收集)。尽管如此, 本文收集到的数据依然有限, 每类大约只有18个样本用于训练。为了防止网络过拟合, 本文采用迁移学习(transfer learning)的方法, 在GoogLeNet预训练模型上进行微调。实验显示, 6类云型(不包括“无云”类)目标分类任务测试准确率可达85.19%。
1 数据集介绍本文中, 云分类是指针对云的不同形态进行分类。云有正式的分类体系[17], 根据形状和高度, 可以将云分为十多个属、几十类。云的形态与天气有着密切关系, 例如呈棉絮状的积云一般与好天气有关。
如上文所述, 现有的云分类方法主要针对卫星遥感图像。与地面光学数据相比, 这些图像覆盖面积大、分辨率低、云型特征不突出, 且获取成本高。而现有的地面云数据集获取的时间成本高。为此, 本文首先根据数码相机拍摄到的彩色图片, 及从Google中下载的RGB图像, 采用尺寸归一化对图像进行预处理, 通过手动分类, 建立了一个6类的云型数据集。
本文挑选了特征较为明显的卷云、层云、积云等作为研究对象。原始图像的获取时间、大小不一, 且多有地面目标干扰。本文首先将这些图像的底部裁剪, 去掉地物, 然后将得到的切片放缩至224×224大小。本文未对输入图像进行亮度调整、去噪等其他预处理, 最终得到了128张云型图像。本文随机选取了80%样本作为训练集, 其余作为测试集。表 1列出了不同类云的训练集、测试集样本数目, 每类目标共约有20张图像, 每类目标测试样本有4~5张。其中, 由于层云目标出现频率较低, 数据相对较少。
云型名称 | 数据量 | ||
训练集 | 测试集 | 总数 | |
卷云 | 18 | 5 | 23 |
层云 | 14 | 4 | 18 |
层积云 | 19 | 5 | 24 |
积云 | 16 | 4 | 20 |
雨层云 | 18 | 5 | 23 |
高积云 | 16 | 4 | 20 |
图 1展示了部分数据集中的图片。从图中可以看出, 不同类型的云形态各异:卷云如细钩,层云边界模糊, 层积云成团状, 积云似棉絮, 雨层云一般呈灰黑色, 而高积云为成团的小云块。然而与其他目标识别问题不同, 云的边界不够清晰, 而且除雨层云外不同类云的颜色相似, 因此分类难度高。
![]() |
图 1 云数据集样例图片示例 |
从表 1可看出, 每类目标仅有约18个样本作为训练集, 远远少于现有云分类模型[16]。这是典型的小样本学习(FSL, few-shot learning)问题。直接使用这些数据训练神经网络, 容易造成模型过拟合, 使得学习到的模型泛化能力差。一个常见且通用的解决办法是利用迁移学习[18]。迁移学习是指将从其他任务中学习到的知识迁移到当前任务中, 例如将从街景分类任务中学习到的特征提取器应用到汽车分类网络中。本文同样使用该策略, 具体做法是在预训练模型的基础上, 使用云数据集进行微调, 以降低过拟合风险。
近年来, 深度学习应用广泛, 在图像分类、自然语言处理等领域取得了瞩目成就。其中, VGG[19]网络、GoogLeNet[20]、ResNet[21]等在大型视觉对象识别数据集ImageNet上训练过的网络, 也被应用到其他领域中。通过比较使用不同网络作为预训练模型得到的测试精度, 本文发现GoogLeNet适合作为云分类网络的预训练模型。将GoogLeNet最后一层全连接层的输入神经元个数修改为6, 其余结构保持不变, 网络结构图如图 2所示。其中, 不同颜色的矩形代表不同操作, 例如卷积、最大值池化等; 矩形中的数值代表相应操作的参数数目, 例如第2个矩形中的“7×7+2(S)”代表卷积操作的卷积核大小为7×7、步长为2、使用“SAME”方法进行边界填充。
![]() |
图 2 云分类网络结构图 |
从网络结构图中可以看出, 与一般的卷积神经网络(CNN, convolutional neural network)相比, GoogLeNet引入了Inception模块, 结构图如图 3所示。Inception模块由多个普通的卷积、池化操作组成, 这样的结构可以保证模型提取不同尺度的特征。
![]() |
图 3 Inception模块结构图 |
如前文所述, 因为训练集样本数有限, 本文仅在GoogLeNet的基础上微调, 于是学习率不能取太大。本文中, 模型的初始学习率为3×10-4, 每训练2个周期学习率减小80%, 即
![]() |
(1) |
式中:lr0=3×10-4;α=0.2, t为当前训练周期数;
![]() |
(2) |
式中:y和y′分别为图片的真实标签和预测输入;K=6为类别数目。本文使用了带动量的随机梯度下降算法作为优化器, 每次参数更新为
![]() |
(3) |
式中:γ=0.9为动量;
该模型一共被训练了5轮; 每轮将数据随机分为5批, 依次输入到网络中进行训练。数据增强可以有效防止网络过拟合。在训练网络时, 本文随机对训练数据进行以下变换, 以达到数据增强的目的:以50%的概率沿垂直轴随机翻转训练图像; 在水平和垂直方向上随机平移训练图像最多30个像素; 等概率随机缩放原始图像至0.9~1.1倍大小。训练集和测试集的损失值和预测精度随训练进行的变化趋势如图 4和图 5所示。可以看出, 虽然训练轮数少, 但网络迅速收敛, 且训练和测试准确率吻合较好, 说明数据集设置合理, 训练集与测试集偏差低。最终训练集所有样本的训练精度和测试集精度分别为82.18%, 85.19%。测试集的混淆矩阵如图 6所示, 其中横轴为样本的真实标签, 纵轴为预测的类别。可以看出, 每类目标预测效果差不多, 最多有一个样本预测错误。从图中还可以看出, 错误预测趋向于随机分布, 例如有一个层积云样本被错分为高积云, 但高积云被错分的样本的预测标签为积云。这说明, 模型并没有将某两类目标混淆。
![]() |
图 4 训练集和测试集损失变化曲线 |
![]() |
图 5 训练精度和测试精度变化曲线 |
![]() |
图 6 使用本文方法得到的混淆矩阵 |
特征提取在云分类研究中也是一个研究热点[5-6]。前人多手动设计特征, 或使用特征选择器选择最优的特征组合。深度学习的一大优势是可以自动地根据任务提取输入数据的特征并进行组合。图 7展示了本文所提出的网络对输入图片提取的特征。对输入的测试图像, 本文抽取了图 2中第3个卷积层后的特征图, 此时特征图尺寸为56×56×192。本文无法对所有特征图进行可视化, 仅随机展示了12张56×56大小的特征图。从图 7中可以看出, 该网络可以有效提取输入的积云图像的多种特征, 且这些特征具有代表性, 将天空与云区分开。这些特征涵盖了小尺度特征(左中)到大尺度特征(右中)。这种避免手动设计特征的方法, 增加了网络的自适应性。
![]() |
图 7 可视化GoogLeNet提取到的特征 |
为验证模型的泛化性能, 本文作者使用普通数码相机和手机分别在不同时间、不同区域的天空进行拍照, 将这些照片经过与训练集相同的预处理并输入到训练好的网络中进行测试。预处理后的图片和预测结果如图 8所示。需要注意, 由于文中用到的训练集大多从网上搜集而来, 其获取时间、地区、和成像传感器都与图 8中的数据不同。图 8右侧的柱状图为各个类别的预测概率。例如图 8中最上方的柱状图中“卷云”类别的预测概率为0.8, 远远高于其他类别。从结果中可以看出,网络依然能正确将图 8a)预测为卷云、图 8b)预测为积云、图 8c)预测为雨层云、图 8d)预测为层积云。其中, 前3幅图像使用数码相机拍摄, 最后一幅图像使用手机拍摄。这证明了本文所提出的方法的鲁棒性。
![]() |
图 8 泛化性能测试:测试图像 |
本文还将所提出的方法与经典的K近邻算法和SVM进行了比较。K近邻算法和SVM是前人较为常用的2类云分类算法[1, 8-9]。与本文实验设置一致, 同样使用80%数据进行训练, 其余用于测试。由于原始数据维度较大(224×224×3), 在输入到分类器前, 使用了主成分分析(PCA, principal component analysis)方法对数据进行降维, 将其降到128维。为避免数据的随机分配对结果造成的误差, 这里将数据分为5份, 进行了5折交叉验证。测试准确率如表 2所示。可以看到在少样本情况下, 传统分类器精度远远低于使用迁移学习训练到的网络。
云型名称 | 分类器 | ||
深度网络 | K近邻 | SVM | |
卷云 | 80 | 22 | 29 |
层云 | 75 | 38 | 31 |
层积云 | 80 | 24 | 26 |
积云 | 100 | 44 | 46 |
雨层云 | 100 | 27 | 36 |
高积云 | 75 | 36 | 39 |
平均准确率 | 85.19 | 32 | 34.4 |
表 3分析了使用不同深度模型作为预训练网络进行迁移学习时, 测试样本的准确率。在网络的其他参数设置完全一样的情况下, 使用GoogLeNet作为预训练模型可以获得更高的测试准确率。从表中可以看出, 本文提出的方法在6类目标上都可以获得75%及以上的准确率, 而VGG很难对层积云和雨层云进行正确识别, ResNet难以区分卷云、层云和层积云。
云型名称 | 深度网络模型 | ||
GoogLeNet | VGG | ResNet | |
卷云 | 80 | 100 | 60 |
层云 | 75 | 75 | 50 |
层积云 | 80 | 20 | 60 |
积云 | 100 | 100 | 100 |
雨层云 | 100 | 60 | 100 |
高积云 | 75 | 100 | 100 |
平均准确率 | 85.19 | 74.1 | 77.8 |
云分类算法研究对天气预报、地球环境观测等具有重要意义。通过遥感卫星数据获取到的云图像, 分辨率低、获取成本高, 不利于对局部地区进行观察。而目前地面传感器获取到的云图像时间成本高。本文使用到的数据为一般可见光照片, 这类照片通过任何可拍摄的设备在任何时间、地点都可以获取。
近年来, 深度学习被广泛用于各类实际应用中。其自动提取输入数据特征的特点, 取代了传统的特征选择器。由于目前获取到的样本有限, 本文提出使用迁移学习技术, 使用少量云数据在预训练模型GoogLeNet上进行微调。对6类云型分类, 在仅训练5个周期的情况下, 可以获得85.19%的测试准确率, 比K近邻和SVM算法分别高53.19%、50.79%。
由于训练集来源于多个拍摄设备, 本文所提出的方法可用于任何相机。对本文作者使用数码相机、手机拍摄的照片测试发现, 所训练好的网络可以用于分类与训练集获取时间、地点、来源不同的云图片。
[1] | HEINLE A, MACKE A, SRIVASTAV A. Automatic Cloud Classification of Whole Sky Images[J]. Atmospheric Measurement Techniques, 2010, 3(3): 557-567. DOI:10.5194/amt-3-557-2010 |
[2] | GÓMEZ-CHOVA L, CAMPS-VALLS G, BRUZZONE L, et al. Mean Map Kernel Methods for Semisupervised Cloud Classification[J]. IEEE Trans on Geoscience and Remote Sensing, 2009, 48(1): 207-220. |
[3] | CAZORLA A, OLMO F J, ALADOS-ARBOLEDAS L. Development of a Sky Imager for Cloud Cover Assessment[J]. Journal of the Optical society of America A, 2008, 25(1): 29-39. DOI:10.1364/JOSAA.25.000029 |
[4] | RUMI E, KERR A D, SANDFORD B A, et al. Field Trial of an Automated Ground-Based Infrared Cloud Classification System[J]. Meteorological Applications, 2015, 22(4): 779-788. DOI:10.1002/met.1523 |
[5] | LEE J, WEGER R C, SENGUPTA S K, et al. A Neural Network Approach to Cloud Classification[J]. IEEE Trans on Geoscience and Remote Sensing, 1990, 28(5): 846-855. DOI:10.1109/36.58972 |
[6] | AMBROISE C, SÈZE G, BADRAN F, et al. Hierarchical Clustering of Self-Organizing Maps for Cloud Classification[J]. Neurocomputing, 2000, 30(1/2/3/4): 47-52. |
[7] | LEE Y, WAHBA G, ACKERMAN S A. Cloud Classification of Satellite Radiance Data by Multicategory Support Vector Machines[J]. Journal of Atmospheric and Oceanic Technology, 2004, 21(2): 159-169. DOI:10.1175/1520-0426(2004)021<0159:CCOSRD>2.0.CO;2 |
[8] | SINGH M, GLENNEN M. Automated Ground-Based Cloud Recognition[J]. Pattern Analysis and applications, 2005, 8(3): 258-271. DOI:10.1007/s10044-005-0007-5 |
[9] | KAZANTZIDIS A, TZOUMANIKAS P, BAIS F, et al. Cloud Detection and Classification with the Use of Whole-Sky Ground-Based Images[J]. Atmospheric Research, 2012, 113: 80-88. DOI:10.1016/j.atmosres.2012.05.005 |
[10] | LIU S, WANG C, XIAO B, et al. Salient Local Binary Pattern for Ground-Based Cloud Classification[J]. Acta Meteorologica Sinica, 2013, 27(2): 211-220. DOI:10.1007/s13351-013-0206-8 |
[11] | ZHUO W, CAO Z, XIAO Y. Cloud Classification of Ground-Based Images Using Texture-Structure Features[J]. Journal of Atmospheric and Oceanic Technology, 2014, 31(1): 79-92. DOI:10.1175/JTECH-D-13-00048.1 |
[12] | TARAVAT A, DEL FRATE F, CORNARO C, et al. Neural Networks and Support Vector Machine Algorithms for Automatic Cloud Classification of Whole-Sky Ground-Based Images[J]. IEEE Geoscience and Remote Sensing Letters, 2015, 12(3): 666-670. DOI:10.1109/LGRS.2014.2356616 |
[13] | ZHANG Z, ZHANG Y, LIU S. Ground-Based Cloud Classification Using Pyramid Salient LBP[C]//Proceedings of the 2015 International Conference on Communications, Signal Processing, and Systems, Heidelberg, 2016 |
[14] | LIU S, ZHANG Z, CAO X. Information Integration for Ground-Based Cloud Classification Using Joint Consistent Sparse Coding in Heterogeneous Sensor Network[J]. Signal Processing, 2016, 126: 165-172. DOI:10.1016/j.sigpro.2015.06.004 |
[15] | GAN J, LU W, LI Q, et al. Cloud Type Classification of Total-Sky Images Using Duplex Norm-Bounded Sparse Coding[J]. IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing, 2017, 17: 3360-3372. |
[16] | WANG Y, SHI C, WANG C, et al. Ground-based Cloud Classification by Learning Stable Local Binary Patterns[J]. Atmospheric Research, 2018, 207: 74-89. DOI:10.1016/j.atmosres.2018.02.023 |
[17] |
狄潇泓, 王小男, 肖玮, 等. 高原边坡复杂地形下短时强降水的云型特征分类[J]. 气象, 2018, 44(11): 1445-1453.
DI Xiaohong, WANG Xiaonan, XIAO Wei, et al. Cloud Features Classification of Short-Time Heavy Rainfall in Complex Topography of Plateau Slope[J]. Meteorological Monthly, 2018, 44(11): 1445-1453. (in Chinese) |
[18] | PAN S J, YANG Q. A Survey on Transfer Learning[J]. IEEE Trans on knowledge and Data engineering, 2009, 22(10): 1345-1359. |
[19] | SIMONYAN K, ZISSERMAN A. Very Deep Convolutional Networks for Large-Scale Image Recognition[C]//International Conference on Learning Representations, 2015 |
[20] | SZEGEDY C, LIU W, JIA Y, et al. Going Deeper with Convolutions[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2015 |
[21] | HE K, ZHANG X, REN S, et al. Deep Residual Learning for Image Recognition[C]//2016 IEEE Conference on Computer Vision and Pattern Recognition, 2016 |