1. 引言
1.1 题目概述
卫星云图包含丰富的云信息,可以直观地看到云系统的形状和演变。卫星云图也被广泛使用,如天气分析、降水估计和暴雨短期预报系统。为了使云图识别客观自动化,扩大卫星云图在天气预报和环境监测中的应用,有必要进行云图定量自动识别研究。云图自动识别包括云图分割和识别两部分。云图分割的研究一直在探索中,存在许多困难。本文主要探索和研究基础云图云分割技术的需要。
1.2 研究意义
随着科学技术的不断发展,气象观测领域的计算机技术和传感技术取得了很大的进步。目前,温度、气压、湿度和风的观测方法已基本实现自动化。然而,在云观测中,只有云高的测量才能实现自动化,云和卫星云图的自动分割技术仍处于探索阶段,其困难在于,云图上往往有各种不同的云,此外,云系统的灰度随云系统的类型、区域和时间而变化。同时,云系统的形状非常不规则,不能简单地用阈值或形状将不同的云系统分开。 目前对云图的研究大多集中在卫星云图上,而从地面向上拍摄的基础云图研究较少。目前,云图云系统的分割也需要手动分割,这将带来许多缺陷。首先,手动分割将消耗大量的人力和精力。其次,人工分割很难清楚地划分图像边缘或单个小云,这将带来一定的精度误差,影响云识别的准确性。因此,本研究对地基云图的自动分割具有一定的价值。
2. 数据准备
2.1 数据准备
2.1.1 数据集介绍
本实验采用给定的卫星云图数据集。该数据集共有600个分辨率 256*256 的彩色 jpg 在图片中,我们发现地基云图观察到各种不同地形的云图,包括山、海、稻田、山脊等地形,难以识别。同时,了解到地基云观测数据主要包括云量、云、云底高度,根据 云可以分为三者的不同表现 3 族、10 属、29 类有种类多、变化快、相似、易与天空背景融合等特点。因此,考虑到本实验适用于各种地形,在选择训练集和测试集时进行了初步筛选。经过筛选,我们选择了地形、云量等影响因素 cloud101-cloud300、cloud401-cloud500 以及 cloud601-cloud700 作为我们的训练集,其余的作为测试集。一些原始数据如下所示。
2.1.2 数据增强
建立完整的训练数据集需要相应的标签。一般来说,图像卷积神经网络输入是图像,标签(或输出结果)是根据任务确定的。以分类任务为例,标签是一个单一的类别,以目标检测为例,输出是 4 维向量。语义分割结合图像分类、目标检测和图像分割,通过一定的方法将图像分割成具有一定语义的区域块,识别每个区域块的语义类别,实现从底层到高层的语义推理过程,最终获得具有逐像素语义标记的分割图像。其本质是对图像中的每个像素进行分类,在图像中的每个像素上贴上标签是语义分割的标记过程。一般来说,这项工作需要我们手工完成,工作量很大。本文的研究内容是识别卫星云图中的云系统,即云和非云的判断,这是一项二分类任务。所选云图分割标签如下所示 本文使用 MATLAB 标注工具箱 imageLabeler 人工完整标记,用于云标记后 python 转换出相应 PNG 格式标记图像。在图像标记过程中,由于是人工标记,因此缺乏云边界标记。相应部分的标记结果图如下所示。
3. 模型构建
3.1 设计思路
基于基础云图的划分属于语义划分在计算机视觉问题中的应用。语义划分结合图像分类、目标检测和图像划分,通过一定的方法将图像划分为具有一定语义意义的区域块,识别每个区域块的语义类别,实现从底层到高层的语义推理过程,最终获得具有逐像素语义标记的划分图像。 在基础云图中,需要将属于云的像素分为一类,属于天空的像素分为一类。由于缺乏气象专业知识,我们只划分云图的语义,没有进一步划分不同云的实例。 由于深度学习在语义分割方面取得了巨大的成功,我们选择了基于深度学习的语义分割模型。常用的语义分割模型包括 FCN、SegNet、DeepLab 系列模型。 基于语义分割模型的利用 CNN 在网络提取特征分类的基础上,面临着需要改善感觉野生和选择合适的空间信息的问题。我们选择使用空洞卷积来降低采样率,并确保感觉野生 DeepLabv3 模型。 DeepLabv3 该模型属于谷歌团队提出的语义分割算法 DeepLab 该系列的最新改进版本。它具有速度快、精度高、模块简单等优点。并且在基础云图分割中应用,性能好,超过 PSPNet、AdapNet 等深度学习算法。
3.2 模型介绍
DeeplabV3 可任意控制编码器提取特性的分辨率主要引入模型架构,通过空洞卷积平衡精度和耗时。DeeplabV3 在 Encoder 部分损失信息的情况下,部分引入了大量的空洞卷积,增加了感觉领域,使每个卷积输出包含更大范围的信息。其网络结构图如下所示。
从图中可以看出他是 Encoder-Decoder 网络结构。接下来,我们主要分为 Encoder 和 Decoder 进行解析。 Input 通过骨干网络(backbone,也就是说,标注 DCNN Atrous Conv 获得两个输出:一个是 low-level feature,这是个 output=4x 输出;另一个是高级特征,给予 ASPP 输出,这是一个output=16x 的输出。 在 Encoder 通过中高级特征 ASPP 的 5 获得不同的操作 5 输出,其中 1 个 1×1 卷积,3 个不同 rate 的 dillation conv,1 个 ImagePooling。这里要注意 ImagePooling 在整体平均池化后,采样到原来的大小。这 5 个输出经过 concatenate 操作和 1×1 卷积得到 output stride=16x 的输出。使用 deeplabv3 作为编码器。网络中空洞卷积的提取特,获取多尺度的上下文信息,取代下采样,使输出 feature map 的 output_stride=16。ASPP 该模块采用多个平行空洞卷积,具有图像级特征(即全局平均池化)。
在这里 , 一方面 encoder 输 出 的 feature(output_stride=16)经 过 双 线 性 上 采 样 4 倍 得 到FA(output_stride=4), 再取 encoder 对应相同的分辨率(即) output_stride=4)特征层,经过 1×1 卷积降通道,此时输出的 feature 记为 FBF。这里经过 1×1 由于分辨率的特征通道较多(256 或 512),而 FA 输出只有 保持和维持256,故降通道 FA 比例有利于模型学习。 FA 和 FB 做 concat,再经过一个 3×3 卷积细化 feature,最终再双线性上采样 4 得到预测结果。 另一方面,encode 主要部分被深度扩张分离卷积网取代。深度可分离卷积将标准卷积分解为深度卷积(depthwise convolution)和逐点卷积(pointwise convolution)。每个通道独立使用深度卷积的空间卷积,用于结合深度卷积的输出。深度分离卷积可以大大降低参数和计算量。 deeplabv3 将扩张卷积与深度分离卷积相结合,即扩张分离卷积。扩展分离卷积可显著降低模型的计算复杂度,保持相似性能, 如下图:
在 Decoder 两个输入分别操作:low-level featur 经过 1x1 卷积调整维度(output stride=4x),论文 4.1 实验结果表明 low-level feature 调整到 48 channels 时效最好;Encoder 输出上采样 4倍(output stride 从 16x 变为 4x)。将两个 4x 特征 concatenate,后面接一些 3×3 卷积,再采样 4 倍得到 Dense Prediction。论文 4.1 实验结果表明 decoder 两个 4x 输出特征 concatenate,后面接2 个 out_channels=256 的 3x3 卷积,输出效果较好,可采用这种设计。论文 4.1 实验结果表明 decoder 两个 4x 输出特征 concatenate,后面接2 个 out_channels=256 的 3x3 本设计可采用卷积,输出效果好。Decoder 里面所有的 Upsample均采用双线性差值。在获得最终的有效特征层后,使用一个 1x1 通道调整卷积,调整到 Num_Classes;然后利用resize 采样使最终输出层与输入图片相同。
4. 模型训练
4.1 训练环境
本文涉及程序 matlab 中实现。下表显示了运行环境的配置。
4.2 超参数设置
我们选择使用迁移学习来训练神经网络,因为我们需要足够大的训练样本来包含人工标签。 mobilenetv2 选择网络作为图像特征,因为该模型使用 ImageNet 预训练采用数据集,模型参数为初始参数。迁移学习可以提高训练效率。本实验采用微调法,即预训 对数据进行练习,使参数适应自己的数据集。 在训练过程中,批处理的大小是 1.根据图像大小定义网络输入 256x256x3。选择 adam优化器具有实现简单、计算效率高、内存需求少、参数更新不受梯度伸缩变化影响的优点。我们发现它的超级参数具有很好的解释性,通常不需要调整或很少的微调。将初始学习率设置为 1e-,同时设置根据迭代的代数自动调整学习率,每 20 代学习率降低 0.4。选择 L2 范数作为损失函数进行正则化,保持较小的权重,防止模型过拟合。L2 正则化因子设置为 0.005。训练集最大得带次数为 40 次,每次训练迭代的最小批次为 8,在每个训练时期前都将数据进行重新排序。将测试集数据作为训练期间用于验证的数据,同时验证指标评估的迭代 2 次。
4.3 训练过程
5. 模型测试与结果分析
5.1 模型测试
选取了 5 张测试图使用网络测试,结果如上。可以发现,对比之前浅色区域识别不佳的情况,在增加训练集数量后,明显提高了识别度。然而,仍有将白色建筑错误识别成云的情况,因此在后续的过程中,可以将云的块状特征以及不规则特征进行提取,将形状规则的、体积较小的白色建筑物在识别过程中剔除。 观察训练网络的过程,开始准确度上升极快,到后期准确度几乎不发生变化,甚至有降低,因此可以降低迭代的次数,来进行更多参数的测试。
6. 总结与展望
通过阅读文献与相关资料,我们对卫星云图分割的研究内容及其研究现状有了一定的了解。云图分割是地基云图云系处理过程中非常重要的环节,在实际生活中得到非常广泛的应用。云图分割效果好坏直接影响对图像的进一步分析、识别以及分类的有效性和准确性,因此具有非常重要的意义。 通过对地基云图特点的分析,以及对各种分割算法特点的了解,提出了一种基于 DeepLabv3+模型的地基云图分割算法,由于受到各方面因素的影响,使图像的质量好坏不一以及图像本身复杂度增大,使得很难有一种适用于所有地基云图的分割方法,因此对地基云图的分割方法的研究还有很长的路要走。 此次研究报告我们选择通过 DeepLabv3+模型对地基云图云系进行语义分割,并搭建了Encoder-Decoder 网络结构使用迁移学习来训练神经网络,在研究过程中调整超参数的二设置来使模型训练达到最好效果,例如 mobilenetv2 作为图像特征,选择 adam 优化器,找到最好的学习率等等。 本文只是对地基云图分割的基本内容进行了一些简单的尝试,由于图像分割所涉及的研究内容很广泛,分割方法也是多种多样,受到水平和时间的限制,本文所研究的工作还有很多不足之处,还需要进一步深入研究。
7. 参考文献
[1]刘普. 基于深度学习的地基云图分类与分割研究[D].南京信息工程大学,2020