神经网络支持下的Sentinel-2卫星影像自动云检测

2019-09-05 08:48余长慧于海威孟令奎
测绘通报 2019年8期
关键词:测试数据像素神经网络

余长慧,于海威,张 文,孟令奎

(武汉大学遥感信息工程学院,湖北 武汉 430079)

随着高分辨率对地观测技术的发展,利用遥感影像快速提取地物信息已成为遥感应用领域的重要工作。虽然目前已经开发了许多卫星影像分类方法以提取影像信息,但由于受云层遮挡影响,均难以实现精确、自动化提取。云层遮挡问题在光学影像中很普遍,相关研究表明,全球表面平均每年云覆盖量接近66%[1- 2]。云的出现导致遥感影像局部模糊不清,很容易造成信息误判。云检测过程本质上可视为一种影像分类或分割任务,近年来大量研究围绕云检测展开。文献[3—4]提出一种Fmask(function of mask)算法用于Landsat 4- 7影像云和云影检测;文献[5]通过对比同一区域有云与无云影像,识别出云覆盖范围;文献[6]将常用机器学习算法用于Sentinel- 2影像,实现云、雪、阴影和水体等对象的检测;文献[7]采用高斯混合模型拟合影像灰度直方图自动确定云像素灰度阈值;文献[8]采用改进的颜色转换模型、阈值分割及强度信息等进行云检测;文献[9]利用支持向量机区分云和非云区域,采用词包模型解决云特征多样化问题;文献[10]利用光谱、几何、纹理等特征实现对GF- 1 WFV数据的云检测;文献[11]提出一种自适应池化层嵌入神经网络模型用于资源三号卫星影像云检测;文献[12]将GF- 1/2缩略图分割成图块,建立多层卷积神经网络模型检测云层覆盖范围;文献[13]提出一种叠加颜色、纹理、结构和统计信息的RGB图像场景学习云检测方法。

现有云检测方法基本采用将整景影像分解成图斑的方式,导致连续的云覆盖现象被截断,产生明显具有块状效应的云覆盖区域,真实空间精确度低;同时,传统云检测方法需要大量人工特征设计[14],且测试数据过少,存在过拟合问题,难以推广泛化,实际应用仍存在困难。针对以上问题,本文以Sentinel- 2卫星影像为数据源,首先建立神经网络模型,通过预处理的遥感样本训练得到云检测模型,然后对影像进行像素级分类获取云覆盖矩阵,最后结合云覆盖矩阵准确获取任意感兴趣区影像云量。

1 原理与方法

当前各种图像分类算法已比较成熟,尤其是以神经网络为代表的深度学习分类算法,能够进一步提高遥感影像分类及分割精度[15- 17]。但由于卫星影像质量难以保证,云层遮挡问题无法避免,遥感信息提取的实际效果始终受到制约。基于以上实际情况,本文着力解决高分辨率遥感影像信息提取中云干扰问题,总体方法流程如图1所示。

1.1 遥感样本准备

神经网络模型性能在很大程度上受样本数据影响,因此建立一个特征全面、类别均衡的大规模样本数据集十分重要[18]。对遥感影像分类任务而言,可靠的验证与测试数据需来源于全球不同地理位置、涉及所有可能地表类型与天气状态的卫星影像。验证数据用于在不同模型之间选择最佳模型,是模型能否应用于实际生产的关键,为保证模型对未知数据的预测能力,验证数据必须能代表当前业务中全面、未知的数据。测试数据用于评测模型最终效果,在训练过程中不可见,以确保通过测试数据评估出的模型性能与真实应用场景下对未知数据的预测效果是接近的。本文采用验证数据集、测试数据集进行模型调整与测试。

数据源采用欧空局光学卫星Sentinel- 2 L1C影像,该卫星携带一个多光谱成像仪(MSI),包含13个独立波段,重访周期为5 d,覆盖可见光、近红外、短波红外等波谱范围。本文采用文献[6]从全球范围选取的108景不同位置、时间和气候的Sentinel- 2影像,并将均匀采样和人工标注方式建立的Sentinel- 2影像公开数据集作为模型的验证测试数据。将验证测试数据随机划分成互斥且同分布的验证数据集与测试数据集,使得模型调整与测试过程独立且一致。对于训练数据,则选取更大规模的Sentinel- 2影像建立一个全球性的训练数据集。每个样本由一个像素组成,包含13个波段,空间分辨率为10 m(分辨率不足10 m的波段进行重采样)。样本数据集由14 020 045个样本组成,包括6 172 820个有云样本和7 572 929个无云样本,其中训练集样本有13 439 636个,验证集样本有290 204个,测试集样本有290 205个。

1.2 云检测模型

1.2.1 模型架构

深度神经网络(DNN)是一种有监督学习的多层神经网络算法,由输入层、带有激活函数的隐藏层和输出层等组成。网络中的多层神经元通过一系列非线性计算从原始像素中提取出图像特征,并将其输入分类器函数实现分类。原始像素输入网络后,先执行前向传播过程,每一层神经元输出值经过激活函数计算后作为下一层的输入,输出层之后计算损失函数,并依据损失值通过梯度下降算法对各层权重等参数进行迭代更新。

本文构建的DNN网络结构如图2所示,该模型包含输入层、5个隐藏层、输出层、Softmax分类层。输入层是一个1×n[0]的输入向量,为保证模型的泛化性与稳定性,该向量直接由重采样后遥感影像n[0]个波段的原始像素构成(n[0]表示输入层节点个数),为降低计算成本,所有像素DN值均作缩小10 000倍处理。经大量试验发现,输入层n[0]=4时(输入向量构成为:B02、B03、B04、B08波段),模型在精确度和稳定性上已表现出较优性能。隐藏层用于自动计算影像抽象特征,每一层神经元以全连接方式与前一层神经元联系,逐层深化特征提取。隐藏层中每层神经元设置一个非线性激活函数,由于现实世界中绝大多数问题都是无法线性分割的,激活函数的引入可以增加网络的复杂度,提高模型拟合复杂非线性问题的能力。模型激活函数采用修正线性单元(rectified linear units,ReLU),其非饱和性特点能够使网络自行引入稀疏性,加快模型学习速度,减弱深层网络信息丢失问题[19]。

1.2.2 模型目标函数

云检测本质上是分类问题,DNN模型的原始输出层是一个数值向量,每个输出节点对应一个数值。通过在神经网络末层添加Softmax函数,将前向传播计算结果转化为一个类别概率分布,从而实现分类决策。为评价模型输出向量与期望向量的近似程度,引入代价函数作为目标函数,计算方法为

(1)

式中,M为一次迭代输入样本批量;f为DNN云检测模型;θ为模型参数,包括权重和偏置项;Loss为损失函数,本文采用交叉熵(cross entropy)损失函数,定义如下

(2)

式中,x(i)为第i个输入样本;f(x(i))为模型输出的预测值概率分布;y(i)为对应样本真实标签;j为向量第j个元素。交叉熵函数刻画了通过预测概率f(x)来表达真实概率y的困难程度,函数值越小模型输出越接近真值。深度学习模型的学习过程本质上是通过大量样本训练,不断迭代模型参数θ寻找代价函数的全局最优解,样本数据越全面得到的全局最优解越可靠。

好的云检测模型需要在复杂性(即对训练样本的拟合精度)和泛化能力(即正确识别未知数据的能力)这对相斥因素之间达到最佳平衡。模型过于复杂或样本数据较少很容易产生过拟合问题,这将导致模型记忆训练数据的随机噪声部分,对特定数据的拟合精度非常高,却很难推广泛化到新数据上。正则化方法可很好地避免过拟合问题,本文模型采用L2正则化,正则化系数为0.99,加入正则化后模型损失值计算方法如下

(3)

(4)

式中,JL(θ)为加入L2正则化后的代价函数,J(θ)由式(2)计算得出;λ为正则化系数;R(w)为L2正则化项,表示模型复杂度;L为网络总层数(不包括分类层);l为当前层数;n[l]为第l层神经元数量;i为上一层神经元位置;j为当前层神经元位置;w为权重参数。加入正则化项能够合理限制权重大小,避免拟合随机噪声特征,从而训练出更加平滑、通用的云检测模型。

2 试验与分析

2.1 模型训练与测试

构建好DNN模型之后,批量输入随机打散的训练样本进行迭代训练,单批量样本规模为1像素×1像素×4bands×256,试验环境为Windows10下TensorFlow1.8。经大量试验发现,收敛速度更快的Adam等自适应学习率梯度下降算法,由于在训练后期发生学习率震荡,模型并未能收敛到全局最优解;而结合SGD(随机梯度下降)与学习率指数衰减法的梯度下降法效果更好,该方法能够以较大的学习步长快速得到一个较优解,并随着迭代的进行逐步缩小学习率,使模型在训练后期更加稳定地收敛于全局最优解。DNN模型初始化学习率为0.01,学习率衰减率设置为0.99。

训练过程中模型在验证集上的准确率变化如图3所示,可以看出在前10 000次迭代中,云检测DNN模型的准确率快速增加,并在20 000次后趋于稳定,经历200 000次迭代后,模型的最终总体准确率达到90.4%。为定量评价云检测模型在测试集上的性能表现,计算得到模型对290 205个测试数据的云像素召回率(Recall)为88.29%,查准率(Precision)为91.10%。

2.2 云检测效果

选取5景Sentinel- 2卫星影像作为试验数据验证DNN模型的实际检测效果,检测效果如图4所示。第1行为原始输入影像,第2行为云检测结果,第3行为云检结果与原影像叠加效果图。考虑到地物类型和时间不同对检测结果的影响,选取影像覆盖了不同地物:图4(a)和图4(b)主要地物为农田和山地,图4(c)—(e)主要地物为城镇和水域,其中图4(a)、(b)和图4(c)、(d)各为同一区域不同时间影像。图4(b)和图4(d)中主要包含卷云和薄云,图4(c)和图4(e)中部分区域被厚云覆盖,图4(a)中分布着大量碎云。

从图4可以看出:本文提出的云检测方法,在5组测试数据中获得了良好的云检测效果,原始影像上的厚云、卷云和绝大多数薄云均被检测了出来。图4(a)—(c)和图4(e)检测出的云边界清晰,总体精度均在95%以上,部分细小的目视不易察觉的薄云也能被检测出来,基本不存在误检与漏检现象。图4(d)的总体精度较低,不足92%,主要是由于误检造成的,经分析主要有以下两个因素:一是存在把薄云周围的非云像素误检为云像素的问题,因为标注薄云样本时界限判定会存在误差,即使人工目视解译也很难确定薄云的明确界限;二是部分建筑高亮区域被误判为云对象,在非建筑区提取工作中,感兴趣区外检测值会被掩盖掉,不参与最终云量计算,对实际应用影响较小。根据上述分析发现,本文提出的云检测方法效果较好,能够识别高分辨率影像中复杂的云覆盖特征;空间精度较高,检测结果对应原始影像空间分辨率,能够满足任意不规则区域的云检测任务。

3 结 论

针对遥感信息提取工作中含云影像地物误判问题,本文提出了一种面向地物目标范围的高分辨率卫星影像自动云检测方法。与现有方法相比,本文方法有以下优点:①通过DNN自动提取图像抽象特征,而且提取出的图像特征具有很强的代表性,无需进行烦琐的人工特征设计;②云检测结果与原影像空间分辨率相同,呈现为连续的云覆盖现象,真实空间精度高;③模型基于大规模遥感样本训练而成,泛化能力较强,同时由于其数据驱动性特点,计算结果又可作为补充样本进一步提高模型性能。后续研究将尝试采用语义分割法分割出云区,借助更多语义信息解决高亮建筑区像素误判问题,从而进一步提高云检测精度。

猜你喜欢
测试数据像素神经网络
基于神经网络的船舶电力系统故障诊断方法
像素前线之“幻影”2000
MIV-PSO-BP神经网络用户热负荷预测
“像素”仙人掌
基于神经网络的中小学生情感分析
测试数据管理系统设计与实现
基于Q-Learning算法和神经网络的飞艇控制
基于自适应粒子群优化算法的测试数据扩增方法
高像素不是全部
空间co-location挖掘模式在学生体能测试数据中的应用