杨昌军 张秀再 张晨 冯绚 刘瑞霞
1 中国气象局国家卫星气象中心/中国遥感卫星辐射测量和定标重点开放实验室,北京 100081
2 南京信息工程大学江苏省大气环境与装备技术协同创新中心,南京 210044
3 南京信息工程大学电子与信息工程学院,南京 210044
4 中国科学院空间应用工程与技术中心,北京 100094
近年来,随着遥感技术的快速发展,各类遥感卫星影像所包含的信息越来越丰富,在农业生产、自然灾害预测、军事科技、地理测绘、水利交通等领域应用得越来越广泛。其中,卫星遥感资料的定量应用离不开云检测(Irish et al., 2006; He et al.,2009; Angel et al., 2016)。光学遥感图像中,由于云和云阴影(简称“云影”)的光谱范围(包括蓝、绿、红、近红外波段)有限,云影检测也是光学遥感图像中定量应用的难点之一(Zhu and Helmer,2018)。
早期的云检测方法主要是基于像元光谱特征,结合阈值(Cihlar and Howarth et al., 1994; 杨昌军等,2008;Oreopoulos et al., 2011; van Zyl Marais et al., 2011; Goodwin et al., 2013; Shao et al., 2017;王权等,2018)来确定云像元。像元的各种光谱特征通常是通过大量的人工样本分析得到;基于阈值的云检测方法通常只利用低层次的光谱信息,且对下垫面和云覆盖范围具有较强的敏感性,忽略了较多高层次的空间信息,易产生误检(Ozkan et al.,2018);光学遥感图像中,光谱特征与其他低反照率地物的相重叠(Braaten et al., 2015),利用光谱特征也很难将云与一些高反照率地物(如雪、白色建筑物)区分开来(Fisher, 2014)。这些因素最终决定了光学遥感图像中云检测工作的复杂性和艰巨性。
大数据及机器学习技术的出现,大大节省了劳动成本,让云检测这种复杂性的工作由计算机来实现成为了可能,于是基于机器学习的云检测方法研究越来越多(Tan et al., 2016)。不过,这些基于机器学习的方法,一般依赖于人工样本特征和简单分类器,且语义级别信息(颜色、形状、概念等)利用较少(Xu et al., 2013; Li et al., 2015; Hu et al.,2015)。随着深度神经网络在诸多领域的迅速发展,其强大的分割能力得到了广泛认可,基于深度学习的云检测方法也引起了人们的关注。深度学习方法中输入的不同层次特征图代表不同的语义信息。低层次的特征图能代表低层语义信息(含有更多的颜色、纹理和形状等细节),分辨率高,几何细节信息的表征能力强,能提高语义分割质量,但是语义信息的表征能力弱,网络的感受野较小,适合小尺度目标的学习;高层次的特征图代表高层语义信息(如概念等信息),分辨率低,几何信息的表征能力弱(空间几何特征细节缺乏),但网络感受野较大,能光滑分割结果,适合对大尺度目标进行深入学习(Liu et al., 2016)。因此,多尺度(层次)特征图的融合成为必然,这也为基于深度学习的云检测工作指出了前进方向。
目前,多尺度特征图融合已有很多:Shi et al.(2016)将超像素分割应用于云检测;Wu and Shi(2018)利用深度卷积神经网络中获取云概率图,再通过复合图像滤波技术得到细化的高分一号云掩模;Mohajerani and Krammer(2018)使用了全卷积神经网络(FCN)方法进行云检测等等。对于光学图像中的云影检测,Chai et al.(2019)使用一种自适应的SegNet 方法来检测Landsat 图像中的云影,Xu et al.(2019)使用深度残差网络对遥感图像中的云影进行检测。遗憾的是,上述云影影检测方法云细节丢失较为严重,且在云阴影边界的精细检测方面存在较大难度。这种细节丢失现象表明低层特征信息未得到充分利用,也说明基于深度学习的云检测技术中,高层和低层语义信息融合仍有不足。
针对这一问题,本研究基于多尺度融合技术,利用残差模块(Res.block)、多尺度卷积(Multiscale Convolution Module,MCM)模块和多尺度特征模块(Multi-scale Feature Module,MFM)构建多尺度特征融合网络(Multi-scale Feature Fusion Network,MFFN)模型的云检测方法,实现遥感影像中云影的高精度检测,并获取其精细边缘。同时,本工作可为深度学习技术应用于卫星云图的业务云检测提供理论基础和技术支持。
本文提出的多尺度特征融合分割网络由残差模块、多尺度卷积模块、多尺度特征模块等构成。以下分别介绍残差模块、多尺度卷积模块、多尺度特征模块及整个网络结构和工作原理。
残差模块是构建编码器的重要组成部分,如图1 所示,在3×3 的卷积(Conv)前后各增加一个1×1 的卷积。该模块工作原理为:输入信息分别经过连续的3 个卷积(即图1 中Conv 系列模块)与跳跃连接(图1 中左侧实线)流程后,再进行相加融合(Sum Fusion),然后使用leaky_ReLU 激活函数并输出信息。相对于使用两个连续的3×3卷积的常规Res.block 模块,该模块可有效减少网络参数,加快网络收敛速度,并能抑制随着网络深度的加深出现退化的现象。
图1 多尺度特征融合分割网络的残差模块示意图Fig. 1 Diagram of the Res.block (residual block) module in the MFFN(multiscale feature fusion network). Conv. 1*1 and Conv. 3*3 denote a 1×1 convolution and 3×3 convolution, respectively, and leaky_ReLU is the activation function
如图2 所示,该模块(共四层),包含三个扩张卷积,卷积核大小分别为1×1、3×3、5×5,扩张卷积可以增大神经网络的感受野,扩张卷积的卷积核计算公式定义为
图2 多尺度特征融合分割网络的多尺度卷积模块示意图Fig. 2 Diagram of the MCM (multiscale convolution module) in the MFFN. Conv. 5*5 denotes a 5×5 convolution
式中,K为空洞卷积核尺寸,r为扩张率,k为原始卷积核尺寸。三个卷积使用的扩张率分别为1、2、4,将三个卷积提取的特征进行特征融合(Concat)。该模型将编码器提取的信息(图2 中自上而下第一层)通过不同的卷积核(第二层)得到不同的采样特征图(第三层),之后进行特征融合(Concat)。通过使用三个不同的卷积核提取特征,与没有多尺度卷积模块的Resunet 算法相比,获得了更加丰富的空间信息与语义信息,可使得分割结果边界更加精细。
本模块类似于金字塔池化(Pooling)模型PPM(Zhao et al., 2017),其功能是提取图像的多尺度特征,处理检测过程中的尺度变化问题,提高细节检测的鲁棒性。如图3 所示,该模块通过四个并联的平均池化进行下采样,获得的大小分别为8×8、6×6、2×2 和1×1 的特征图(图3 中左列实心长方体为其示意图),之后通过双线性插值的方法将池化后的特征图上采样(Up)为相同的大小的特征图(图3 中间4 个等大小的长方体为其示意图),之后进行特征融合(Concat),进而实现多尺度特征融合的功能。
图3 多尺度特征融合分割网络的多尺度特征模块示意图Fig. 3 Diagram of the MFM (Multiscale feature module) in the MFFN. Up denotes upsample operation, and Concat denotes feature concatenate
该网络总体框架如图4 所示。本网络主要由编码器(由四个残差模块结合池化组成)、四个多尺度卷积模块、一个多尺度特征模块和解码器(含4个特征融合模块、卷积模块及上采样过程)等组成。网络的输入为256×256×N(前两个数为数据的维度,N为数据的通道数,如RGB 图像中N为3)的Landsat8 遥感影像。网络中使用的池化步长为2、滤波器大小为2 的平均池化。编码器的最后一层输入MFM 模块,将经过MFM 内的四个下采样特征再分别通过1×1 的卷积进行降维到输入MFM 时的1/4,之后通过双线性插值的方法进行上采样,使得四个特征映射图大小相同,之后将最后一个Res.block 模块的输出与MFM 模块的输出特征图进行特征融合,以此获得多尺度上下文信息。每个Res.block 模块的输出经过一个MCM 模块以获得多尺度卷积后的特征,可使云与云阴影边界信息提取的更加完整。MCM 模块输出端直接连接解码器。解码器模块获得的特征图通过双线性插值进行上采样后再通过一个1×1 的卷积进行降维,之后与MCM 模块的输出特征进行特征融合。最后将解码器各层的输出通过丰富的跳跃连接进行特征融合,融合后的特征最后输入分类器进行分类。可实现端到端、像素到像素的语义分割功能,即输入数据与输出特征图大小相同,实现将影像中的每个像元分别分为云像元、云阴影像元和晴空像元。
图4 多尺度特征融合分割网络示意图Fig. 4 Diagram of the MFFN. Pooling denotes reducing the size of the feature map
由于本算法需要解决的是多分类问题,所以在判断每个像元类分布的概率值时使用归一化指数函数Softmax 函数,并利用Softmax 函数计算损失(loss)值,损失函数J(θ)定义为
其中,yi为类别标签,有K个不同取值,将遥感图像分割成云、云阴影以及晴空属于三分类问题,所以此处K=3,hi为输入图像像素观测向量H={h1,h2,h3···hm}中的元素, θ为模型参数,m为图像的像素数,1 {}为显性函数。
试验中使用的数据为Landsat8 SPARCS 遥感卫星影像(Hughes and Hayes, 2014)数据集,并以其网站提供的云检测标签(含云、云阴影及晴空三类)数据作为绝对标准数据。由于数据包含信息有限,首先对数据进行增强,包括裁剪、旋转等方式,如图5 所示。将增强后的Landsat8 遥感数据裁剪为大小256×256 的图像块,共6800 张,其中随机选取6000 张作为训练集,800 张作为测试集。训练样集数据的多少决定于试验中收敛参数的设定(见3.2 节试验参数设置)。在制作标签图像的过程中,标签图像要与训练数据做相同的旋转、翻转等操作,以实现对每个像元进行监督训练,分别用灰度值0、128 和255 代表晴空像元、云阴影像元和云像元,即三分类对应的三种标签。试验中使用的图像块与其对应的标签如图6 所示。从图6 中可看出图像块中的每个像元都有其对应的标签,标签的准确与否影响着网络是否能有效地提取信息。
图5 Landsat8 SPARCS 遥感卫星影像数据的增强操作:(a)RGB 三通道合成、(b)垂直旋转、(c)水平旋转、(d)水平并垂直旋转Fig. 5 Data augmentation operations of the Landsat8 SPARCS remote sensing satellite image experimental data: (a) RGB tri-channel composite image, (b) vertical flip, (c) horizontal flip, (d) horizontal and vertical flip
图6 Landsat8 SPARCS 遥感卫星影像数据示例:(a)RGB 三通道合成、(b)真值。图b 中白色、灰色、黑色分别表示云、云阴影、晴空Fig. 6 Examples of the Landsat8 SPARCS remote sensing satellite image data: (a) RGB tri-channel composite image, (b) the truth. In Fig. b, white,gray, and black denote cloud, cloud shadow, and clear sky, respectively
试验软件环境采用的是深度学习框架Keras,编程语言为Python。硬件环境为处理器Intel i7 8700,内存为32G,图像处理器(GPU)为GeForce GTX 1080,显存为8G 的PC 机(personal computer)。
输入数据为3 通道合成云图,学习率为0.0001,批量大小为8,设置动量大小 β1=0.9 和 β2=0.999 对学习率进行衰减以防止出现过拟合现象,每迭代10 个完整训练(epoch)学习率减小为原来的十分之一,最小学习率设置为0.0000001。当代价函数损失收敛、趋于平稳且训练集与验证集的各项指标(准确率、平均交并比)取得最高值时,经过5个epoch 保存最优模型并自动停止训练,共迭代50 个epoch。
为了说明本文构建的多尺度特征融合算法的有效性,本文选择两种基于机器学习的云检测方法作为参照进行试验。它们分别是:基于传统无监督学习的“K均值聚类”(也称“K-means”)(张建萍和刘希玉,2007)云检测方法和基于残差学习U 型卷积神经网络(简称ResU-Net 或Resunet)(梁舒,2018)的云检测方法。其中K-means 算法具有良好的稳定性,可乱序处理数据,避免乱序带来的问题,并获得较好效果,是一种经典的聚类算法;Resunet 算法检测精度高、误检率较低,在薄云及碎云的场景中有着优于U-Net 的表现。将上述两种算法与本文提出的MFFN 算法作对比试验,具有重要的意义。
3.5.1 评价指标
本试验采用5 个目前AI 识别技术常用的指标,定量评价云检测方法的有效性。它们分别是精确率PPre、召回率RRec、准确率AAcc、调和均值F1score以及平均交并比MIoU,其定义表达式分别为
其中,CCC是正确检测为云像元的个数,CCN是云像元误检测为非云像元的个数,CNC是非云像元误检测为云像元的个数,CNN是正确检测为非云像元的个数。在计算云各项指标时,将云阴影像元划分为晴空像元;在计算云阴影的各项指标时,将云像元划分为晴空像元。
3.5.2 定性评价
图7 为本文算法、K-means 算法、Resunet 算法对Landsat8 遥感影像数据集云和云阴影检测视觉对比(碎云),原图中有较多的积云伴随着云阴影,形状无规则,易对检测结果产生干扰。由图7可看出,K-means 算法云漏检较多,且云与云阴影边缘检测不够精细,在对云阴影的检测过程中细节丢失较为严重;Resunet 算法云阴影存在部分细节丢失;本文算法能有效地检测云及云阴影,在对云与云阴影边缘检测结果较为精细,不易受下垫面的干扰,且对细小的云区也能够取得较好的检测结果,最终的误检率较低。由于本算法可提取更多有效特征,从而在视觉检测结果上更接近真实值。
图7 云和云阴影检测视觉对比(碎云):(a)RGB 三通道合成;(b)K-means 检测结果;(c)Resunet 检测结果;(d)多尺度特征融合网络检测结果;(e)云和云阴影真实结果Fig. 7 Visual comparison of cloud and cloud shadow detection (the small piece of cloud): (a) RGB tri-channel composite image; (b) K-means detection result; (c) resunet detection result; (d) MFFN detection result; (e) cloud and cloud shadow truth result
图8 为本文算法、K-means 算法、Resunet 算法对Landsat8 遥感影像数据集的云和云阴影检测视觉对比(冰/雪场景),原图中含有大量高亮度的冰/雪(三通道合成图中蓝色部分为冰雪区)易对云区的检测产生干扰,增加了云与云阴影检测难度。从图8 可看出,K-means 算法无法将冰/雪与云区分开,且对云阴影结果中细节丢失严重;Resunet 算法能够较好的将云与冰/雪区分开,但云与云阴影检测结果边缘较为平滑,丢失细节较多,影像中存在部分云阴影误检和少量薄云漏检情况。本文算法可有效区分云与冰/雪,不易受到干扰,同时对云阴影的检测也取得了较好的结果,总体优于K-means 算法与Resunet 算法。
图8 云和云阴影检测视觉对比(冰/雪场景):(a)RGB 三通道合成;(b)K-means 检测结果;(c)Resunet 检测结果;(d)多尺度特征融合网络检测结果;(e)云和云阴影真实结果Fig. 8 Visual comparison of cloud and cloud shadow detection (ice/snow scene): (a) RGB tri-channel composite image; (b) K-means detection result;(c) resunet detection result; (d) MFFN detection result; (e) cloud and cloud shadow truth result
图9 为本文算法、K-means 算法、Resunet 对Landsat8 遥感影像数据集的云阴影检测视觉对比。由图9 可知,K-means 算法对云阴影检测的结果中误差较大,细节丢失较为严重;本文算法对云阴影的检测取得了较好的结果,其检测结果明显优于Kmeans 算法与Resunet 算法,能够将云阴影的边缘细节较为准确地检测出,视觉上更接近于真实值。
图9 云阴影检测视觉对比:(a)RGB 三通道合成;(b)K-means 检测结果;(c)Resunet 检测结果;(d)多尺度特征融合网络检测结果;(e)云阴影真实结果Fig. 9 Visual comparison of cloud shadow detection: (a) RGB tri-channel composite image; (b) K-means detection result; (c) resunet detection result;(d) MFFN detection result; (e) cloud shadow truth result
从云和云阴影检测视觉对比图中可看出,本文算法与K-means 算法和Resunet 算法相比具有明显的优势,对积云、碎云以及具有复杂下垫面的云都具有较好的检测结果,对云阴影的边缘也能够准确地提取。
3.5.3 定量评价
(1)检测精度分析:表1 和表2 分别为三种算法对Landsat8 遥感图像云和云阴影检测定量评价指标。可以看到,表1 中K-means 算法各项评价参数较低,各项指标比本文构建方法的评价参数均低0.08 以上;Resunet 算法云检测精确率为0.9369,比本文构建的MFFN 算法获得的云检测精确率0.9351 高出近0.002,但其他4 个评价参数均比MFFN 算法的评价参数低近0.006 甚至以上,其中均交并比(mIoU)更是比MFFN 算法的低0.05 以上。这些数值比较表明,相对于其他两种方法,MFFN 算法的云检测精度最好。
从表2 中可知,MFFN 算法对云阴影的检测也能取得较好的结果,Resunet 算法的评价参数明显好于K-means 算法的各项参数,云阴影的识别精确率为0.7863,比K-means 的云阴影精确率高0.16,准确率高出K-means 的评价参数0.03,其他参数差值在这两者之间。同时,表2 也表明本文构建的MFFN 算法在云阴影检测中各项参数最优,其中云检测准确率达0.9796,云阴影检测准确率达0.8307,各项参数均高于Resunet 算法的相应参数0.018 以上。表1 和表2 的各项参数对比表明:MFFN 算法对云和云阴影的信息都能很好地提取。
表1 云检测定量比较Table 1 Quantitative comparison of cloud detection
表2 云阴影检测定量比较Table 2 Quantitative comparison of cloud shadow detection
三种方法对比可以看到,K-means 未使用多尺度特征融合方法,故而云和云阴影检测精度评价的各项指标最低。由于Resunet 算法中缺乏多尺度特征提取,且在跳跃连接的过程中没有使用多尺度卷积,虽然有特征融合,但仍丢失了大量的信息,致使对云的检测5 个指标中仅云检测精确率稍高于MFFN 算法,其他4 项参数均比MFFN 算法低;云阴影检测的各项指标均低于MFFN 算法。
3 种方法评价参数显示,云阴影检测的各项精度评价指标均明显低于云检测的各项指标,可能是因为数据集中云阴影的信息相对较少,导致模型对云阴影的学习不够充分,同时因为云阴影相对云而言其形状不规则,且容易受到下垫面黑色物体(如建筑物的阴影、树木、海洋等)的干扰,致使云阴影检测结果不够理想。
(2)网络性能分析:本文MFFN 方法与Resunet 方法使用相同的数据集并设置相同的试验参数进行训练(K-means 方法无epoch 参数)。训练迭代的次数与总准确度(Overall Accuracy)的关系如图10 所示。总准确度(AOA)定义表达式为
图10 MFFN 及Resunet 方法在不同迭代次数时,总体精度(Overall Accueacy)对比曲线Fig. 10 Comparison curves of overall accuracy of MFFN and Resunet method at different epochs
其中,Pii为每个类别的像元被正确检测的个数,Pij为每个类别的像元被错误检测的个数。MFFN方法共迭代50 个epoch 达到最优模型,Resunet 方法共迭代55 个epoch 达到最优模型。该结果表明MFFN 方法具有较好的网络性能。
本文基于Landsat8 SPARCS 遥感卫星影像数据,采用三通道合成图为输入数据,利用Res.block 模块、多尺度卷积(MCM)和多尺度特征模块(MFM)构建的多尺度特征融合网络(MFFN),实现了较高精度的云细节与云阴影边缘检测。在下垫面中存在容易混淆的背景目标物时,仍能取得较好检测结果,云检测准确率达0.9796,云阴影检测准确率达0.8307。其原因在于:MFFN网络模型在提取较多信息时,有效地融合了底层空间语义信息与高层语义信息。以上试验验证并表明,三通道合成图能够有效实现较高精度的云检测,这为传统业务云检测输入参数调整和算法改进提供了参考。不过,本文试验中云阴影检测精度要明显低于云检测精度,可能与试验所使用的数据集中包含云阴影特征较少有一定的关联。下一步工作将使用包含更多云阴影信息的数据,着力于提高云阴影检测精度并继续优化网络模型。