基于迁移学习的天气图像识别
2021-01-07
(中国海洋大学数学科学学院,山东 青岛 266100)
恶劣的天气条件会对我们的生产、生活产生影响。如果不能准确识别、及时加以判断,将会导致人类的生命及财产安全受到威胁。天气有时候变化非常快。尤其是雾天、雨天、雪天、沙尘等极端天气会对各行各业造成影响。机场的天气预报和交通管控、港口的气象服务等领域都需要知道天气状况的真实情况,同时还希望能够实时监测天气状况,以便及时做出处理措施[1-4]。这对天气状况的识别精度和识别实时性提出了高要求。
目前,传统的天气识别是依靠传感器或者人类自己的视觉来完成。传感器的前期安装和后期维护需要耗费大量的人力、物力和财力,而且天气状况的识别精度和实时性会受到周围环境的影响,导致天气识别出现误差。相比而言,天气图像的获得是比较容易的。因此,基于天气图像的天气识别方法逐渐盛行起来。Lu 等[5]通过提取图像的天空、阴影、映射和薄雾特征,实现了晴天和多云的天气分类;Roser 等[6]和Yan 等[7]通过计算天气图像不同区域的亮度、饱和度和色彩等,利用支持向量机实现了车载视觉系统的晴天和雨天的识别。马啸等[8]和孟凡军等[9]在传统K均值聚类的基础上,通过提取图像饱和度分量作为识别雾霾天气的特征,从而实现了雾霾天气的识别。于浩等[10]通过提取图像的色相、饱和度和亮度等特征,采用贝叶斯分类,实现对雨天和雾天的识别。
上述这些方法的缺点是手动提取特征,模型只能识别2 类或3 类的天气,适用性不广,准确率低,模型的鲁棒性差。针对上述的不足,本文以6 种对人们日常经济活动有影响的天气(阴天、雾天、雨天、沙尘天、雪天和晴天)为研究对象,采用基于Xception 模型的迁移学习方法来对天气图像进行识别,并且与VGG16[11]、VGG19[12]、ResNet50[13]、InceptionV3[14]模型进行了对比实验。其实验结果表明,所构造的天气模型对于天气图像的总体识别率达到94.39%。
1 卷积神经网络与迁移学习
1.1 卷积神经网络
卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现[15-16]。它包括卷积层、池化层和全连接层。卷积神经网络一般采用卷积层与池化采样层交替设置,即连续的卷积层接一层池化采样层,池化采样层后接连续的卷积层,这样卷积层提取出的特征,再进行组合形成更抽象的特征。全连接层在整个神经网络中起到分类器的作用,最后形成对图片对象的描述特征。
1.2 迁移学习
迁移学习的目的是将源领域学习到的信息应用推广到目标领域的学习过程中[17]。以天气图像为例,训练一个天气识别的分类器所需的数据集是巨大的,对时间和算力有相当高的要求,如果从头训练,基本上来说是不可能的。因此可以考虑在ImageNet 等大规模数据集上对网络模型进行训练,再将模型及参数推广到天气识别领域。虽然这些模型参数并不是针对天气图像识别的,但是经过简单的调整和训练,就可以很好地迁移到本模型中,同时无需大量的算力支撑,便能在短时间内训练得出满意的效果。
1.3 Xception 模型
Xception[18]网络结构运用了Inception 结构的思想,并且在基于Inception 结构上提出了强假设,即空间卷积和深度卷积不相关,分开操作效果更好。本文使用深度可分离卷积替换Inception 结构,同时引入残差网络结构。在Xception 网络结构中先用一个尺寸为1×1的卷积核进行卷积,然后连接M个尺寸为3×3的卷积,M由输入的数据决定,M中的每个卷积核都只负责一部分,最后再将提取到的特征进行拼接,图1 所示为极致的Inception结构。
图1 极致的Inception 结构
深度可分离卷积先进行通道卷积(滤波器中的一个卷积核卷积上一层的一个通道),然后用尺寸为1×1的卷积核进行卷积。极致的Inception 结构是先用尺寸为1×1的卷积核进行卷积,然后进行通道卷积。图2 所示为深度可分离卷积示意图,其中M由输入的数据决定,表示通道数。
Xception 网络架构有14 个模块,36 个卷积层,除了第一个模块和最后一个模块,其他每一个模块都使用了残差结构,即Xception 结构是引入了残差结构和深度可分离卷积。图3 为Xception 网络结构图。
图2 深度可分离卷积
图3 Xception 网络结构图
2 基于Xception 迁移学习模型的天气图像识别
2.1 数据集的选择
本文从网上收集了6 750 幅天气图像来作为数据集。它们的来源有论文、游客照、新闻报道、航拍等。它们被分为6 类,分别为阴天、雾天、雨天、沙尘天、雪天和晴天,每个类有1 125 幅图像。本文选取其中900 幅图像作为训练样本,225 幅作为验证样本。图4 是部分天气图像。
2.2 图像预处理
图4 部分天气图像
图像预处理包括图像空间尺度变化(缩放、平移、旋转、镜像、裁剪等)和图像均值和方差平衡[19]。因为使用的是小样本,图像预处理可以增强数据样本,防止过拟合,提高天气模型的性能。图5 是处理前的图像与处理后的图像对比。
图5 处理图像对比
2.3 实验环境
实验硬件环境、软件环境如表1 和表2 所示。
表1 硬件环境
表2 软件环境
2.4 迁移学习模型
Xception 的预训练模型是笔者在François Chollet数据集上训练而成的,网络用TensorFlow 深度学习框架,在60 块K80 上实现,训练时间为72 h。在训练过程中,使用SGD(batch gradient descent)进行梯度下降,学习率设置为0.045。最终的预训练模型保存形式为网络架构和权重,它的大小为88 MB,参数个数为2 291 万0 480,深度为126 层。
因为预训练的数据集和本文的天气图像数据都是图像数据,所以图像底层的浅层次特征是能够迁移的。本文的天气图像分类任务是符合迁移学习的条件的,所以本文的迁移学习是基于Xception模型的迁移学习。使用Xception 的预训练模型进行迁移学习,就是把在ImageNet 数据集上已经训练好的权重迁移到本文的天气图像分类任务中,实现过程如图6 所示。
图6 迁移学习流程
为了预训练模型更加符合天气图像的分类任务,对已经训练好的Xception 模型进行了改进,改进的Xception 模型一共有44 层:前41 层的结构和参数设置与Xception 网络结构相同;第42 层为新添加的全连接层,节点数设置为1 024,因为原来的全连接层的权重和天气图像分类任务不匹配,需要重新训练此全连接层;第43 层为新添加的Dropout 层,参数设置为0.5,可以防止过拟合,提高模型的泛化能力;第44 层为新添加的Softmax 层,节点数设置为6,因为最终任务要分为6 类。
2.5 模型训练结果及分析
天气模型经过120 次迭代,并且对数据集进行了5 折交叉验证。其结果表明:在训练集上的准确率为94.39%,训练集上的误差为0.15;在验试集上的准确率为85.56%,验证集上的误差为0.39。由此可知,训练的模型能够得到较高的准确率和较低的误差。
为了清楚地知道模型的误分类情况,以便对模型做出有针对性的调整,本文构造测试集600 张,每类100 张,统计每类分类的准确率。混淆矩阵如表3 所示。
表3 测试结果混淆矩阵
2.6 Xception 模型与其他模型的比较
为了说明所构建的Xception 天气识别模型的效果,选择了其他迁移学习模型与其进行比较,使用同一数据集进行训练,模型训练参数相同、迭代次数相同以及相同的硬件环境和软件环境,比较的内容包括识别准确率、识别误差、参数数量。其比较结果如表4 所示。
表4 Xception 模型与其他模型的比较
从表4 可以看出,相比于其他迁移习模型,本文构造的天气识别Xception 模型在准确率和误差上有了很大的提高,而且参数更少。这表明所构造的Xception 模型在天气图像识别问题上的表现是比较优秀的,构造的模型是可行的。
3 结论
本文利用迁移学习的知识,在Xception 模型的基础上,添加了一个全连接层,全连接层后使用Dropout 正则化方法,最后一层选用softmax 函数作为输出。实验结果表明,对于小样本的天气图像识别问题,新Xception 模型可以达到显著提高天气图像识别的目的,模型具有较高的准确率和鲁棒性。但同时存在以下问题需要进一步研究。
1)在训练过程中,是否存在更优的调参策略,有待进一步确定。
2)是否有更好的模型或其他改进的模型用于天气图像识别,并且识别效果更好。