根据国际卫星气候学计划所提供的数据显示,全球范围的云层覆盖面积可达到50%以上.由于可见光无法穿透云层,因此在可见光遥感影像中,云层是最主要的干扰源.被云层所遮盖的遥感图像将丢失重要的观测信息,并且还将带来不必要的计算资源浪费.因此,遥感图像进行云层检测,保留云量较少的图像,提高遥感图像的利用率及处理速度,提升地标自主导航的效率.
遥感图像的云层检测可以被看成是图像分析的二值(二类)分割任务.侯舒维等[1]将云层检测方法按照基础理论和研究思路的不同分为:1)基于云纹理和空间特征的方法; 2)物理方法; 3)模式识别方法; 4)综合优化方法.其中,物理方法(即多光谱阈值法)是研究时间最长、最为经典的方法.该方法通过云层对不同波长的反射率构造阈值进行云层检测[2],包括多光谱阈值法[3],多通道阈值法[4]以及动态阈值法等.基于云纹理与空间特征法也属于阈值法的一种,其依据的信息是图像的空间信息,如Deering等[5]所提出的用于海洋背景云检测的空间变化检测法.近几年,模式识别随着计算机科学的大力发展而异军突起,给遥感图像云检测提供了一个有效的途径,具体实现包括人工神经网络、支持向量机(SVM)、聚类等.如陈刚等[6]使用ASTER卫星影像,综合运用纹理分析和支持向量机的方法来检测云层,取得了不错的效果,但使用该方法必须结合可见光影像和红外波段影像,在微小卫星上不容易普及.陈鹏等[7]定义了多种灰度特征、频率特征和纹理特征,选择无监督分类器(k-均值:k-means)和有监督分类器(SVM)进行分类,使得子图的分类准确度达到了95%.周雪珺等[8]则提出了一种基于灰度特性的算法,实现了遥感图像高效自动的云分类及云检测.在100幅典型水域遥感图像的实验测试结果表明:正确云分类判别率达到97%,误判率小于4%.但使用灰度特性也存在一定的缺陷,由于云层的灰度特性与冰雪及高亮的建筑等有相近之处,且云层的灰度与阳光的照射角度、云的形态等都有较大关系,在实际应用中,该方法的云检测准确度十分依赖于背景地物,难以推广.也有学者将人工神经网络用于云检测,如Jang等[9]讨论了多层感知器神经网络,将该算法用于SPOT VEGETATION系统,证明其具有较好的鲁棒性.文献[9]的研究为本文的研究提供了很好的方向,但多层感知器神经网络作为基础的几种神经网络之一已被更为先进的网络所替代,在实际应用中已鲜有所闻.
人工神经网络的发展在最近几年迎来了高潮,其中卷积神经网络(convolutional neural networks, CNN)因其对图像特征提取和分类的优异能力,被大量应用于机视觉中.本文提出一种基于卷积神经网络的云检测与分类方法,首先将卫星所拍摄到的较大尺寸遥感图像分割成数百张小尺寸子图,再使用训练好的卷积神经网络对这些子图进行特征提取与分类,得到网络对于子图是否有云层覆盖的预测.综合所有子图的预测结果,可以灵活计算出原始遥感图像的云层覆盖区域、云层覆盖比例、云层类型等信息.由于借助了GPU并行计算技术,卷积神经网络对云层检测速度基本满足实时性要求.
1 云层自主检测方法在遥感图像中,云图和地物的形态是千变万化的,如果使用人工设计图像特征的方法,必须针对不同类型的地物来设计不同的特征.例如,在设计好以海洋为背景的遥感图像云层检测方法后,在以雪地或城市为背景的遥感图像上不一定适用.卷积神经网络很好地解决了该问题,它不需要人为设计图片特征,只需要构建相应的训练集并训练网络,就可以达到良好的分类效果.使用卷积神经网络的特征提取和分类能力是本算法的关键所在, 算法流程如图 1所示.
首先将拍摄所得到的原始遥感图像进行分割成若干个200×200的RGB三色通道子图,再依次将子图送入网络中进行判断是否被云层覆盖,并将每一幅子图的云层覆盖情况列入统计,当完成所有子图的检测之后,综合统计信息从而得到原始图像中云层的覆盖区域以及覆盖占比.
1.1 卷积神经网络卷积神经网络是人工神经网络的一种. 20世纪60年代在研究猫的视觉皮层局部敏感和方向选择的神经元时,提出了“感受野”这一概念. 80年代,以“感受野”为基础,首次提出了神经认知机,并实现了卷积神经网络[10]. 90年代,LeCun等[11]在对手写数字识别的研究中,提出了通过梯度反向传播的方式训练卷积神经网络,成为了现代卷积神经网络的雏形.
卷积神经网络中主要包含卷积层、池化层、全连接层和激活函数等几个部分.其中卷积层是网络中最重要的组成部分,完成卷积运算,其公式为
$ \begin{array}{l} g(x, y) = f(x, y)*w(i, j) = \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\sum\limits_{i, i} f (x + i, y + i)w(i, j). \end{array} $ |
式中:f(x, y)为输入图像像素坐标(x, y)点的灰度值; w(i, j)为卷积核.卷积运算实际上是一个权重模板与其所覆盖的像素值进行加权运算,得到卷积核在该点的响应值.不同权值的卷积核与图像进行卷积运算起到不同的作用[12].卷积核通常在训练初始阶段随机生成,在训练过程中通过反向传播算法自动学习.池化层在早期也被称为下采样层,它也是卷积神经网络的重要组成部分,其作用是提取图像在卷积过程中所产生的主要信息,减少信息量并提高效率.全连接层一般只放在卷积神经网络的末尾,其每一个结点都与上一层的所有结点相连,所有的结点由一些带权重的值连接起来,组成图像的特征向量,最后在输出层完成图像分类.激活函数扮演着非常重要的角色,它本质上是一个非线性变换函数,将神经网络的输入进行非线性函数变换,将其限定在一定的范围内输出.在卷积神经网络中,它可以增强网络的非线性表达能力,使得数据的处理更加高效. 图 2给出了经典的卷积神经网络LeNet-5的结构,该网络被用于手写字符的分类,并取得了良好的效果.
在上述的几种卷积神经网络的组成部分中,卷积层是主要的特征提取部件,通常使用多个卷积核来提取特征,当卷积核数目大于3时,所提取到的特征就不能使用单张2D图片来进行展示,随着卷积层数的加深,越来越多的深层特征将被发掘与学习.但卷积层的数目也不是越多越好,卷积层数目过多首先会导致整个网络变得过于复杂,训练与测试时长都会增加很多.其次,卷积层达到一定数目后,性能很难再有提升,并且还有下降的可能.目前学界对于每一个卷积层应该有多少卷积核,一共应该有多少个卷积层都没有相应的理论支撑.因此往往要根据具体情况去设计许多合适的参数,并不断试验选择最优的组合.
本文针对遥感图像的云层检测问题,对网络的卷积层数目,每个卷积层的卷积核个数以及池化层参数进行了多轮筛选,并进行了多次测试,最终使用测试效果最好的参数组合搭建了如图 3所示的遥感图像云层监测网络模型, 该模型的结构以及部分参数见表 1.
针对遥感图像云层检测的卷积神经网络共包含两个大模块,分别为特征提取模块与模式分类模块.特征提取模块中又包含4个卷积模块以及4个全连接层,每个卷积模块由一个卷积层和一个池化层组成.
在卷积层内,使用5×5大小的卷积核在与上一层相连接的局部感受野上滑动,进行卷积运算,提取图片特征信息,并通过激活函数形成该卷积核的特征图.本模型中使用的激活函数为修正线性单元激活函数(Rectified linear unit,ReLU)f(x)=max(0, x).ReLU函数相比于其他函数,能够有效缓解梯度弥散问题,可以直接以监督的方式训练深层网络.
池化层中使用2×2的核,并采用最大值池化特性,这样可以在降低数据量的同时又保留了激活值最大的图像特征,使网络具有更高的鲁棒性.
全连接层中使用了Dropout技术,即在训练过程中随机将一部分连接的节点断开,能够起到提升系统鲁棒性的作用,在本模型中前3个全连接层都设置了50%的Dropout概率.
1.3 网络模型训练卷积神经网络的学习过程属于有导师学习,其通过学习大量的带有标签的图像数据,提取出从简单到复杂,从局部到全局的深度特征,形成一种端到端的学习结构和映射关系,最终实现模式分类的目标[13].网络的训练过程分为前向传播和反向传播两个阶段,其训练流程如图 4所示.
图中,前向传播是数据由低层次向高层次传播的阶段.反向传播则是当前向传播得出的结果与预期不相符时,将误差从高层次向底层次进行传播训练的阶段.完成一次前向传播后,根据神经网络预测值与真实标签值可以构造交叉熵损失函数,对于二分类问题常使用Binary cross-entropy,其公式为:
$ {\rm{ loss }} = - \frac{1}{n}\sum\limits_{i = 1}^n {{{\hat y}_i}} \ln {y_i} + \left( {1 - {{\hat y}_i}} \right)\ln \left( {1 - {y_i}} \right), $ |
式中损失函数loss由真实标记分布ŷi和训练后的模型的预测标记分布yi计算得来,当预测值越接近真实值时,损失函数loss的值越小.在计算得到损失函数之后,需要更新网络中各层节点的参数.参数更新的过程需要使用优化器,本文中使用Adam优化器[14].Adam(adaptive moment estimation)优化器利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率,且每一次迭代学习率都有个确定范围,使得参数比较平稳,其公式为:
$ \begin{array}{*{20}{c}} {{m_t} = \mu \times {m_{i - 1}} + (1 - \mu ) \times {g_t},}\\ {{n_t} = v \times {n_{t - 1}} + (1 - v) \times g_t^2,}\\ {{{\hat m}_t} = \frac{{{m_t}}}{{1 - {\mu ^t}}}{{\hat n}_t} = \frac{{{n_t}}}{{1 - {v^t}}},}\\ {\Delta {\theta _t} = - \frac{{{{\hat m}_t}}}{{\sqrt {{{\hat n}_t}} + \varepsilon }} \times \eta ,}\\ {{\theta _{t + 1}} = {\theta _t} + \Delta {\theta _t}.} \end{array} $ |
式中:θt+1为第t+1次迭代网络模型的权值;θt为第t次迭代网络模型的权值;mt、nt分别为对梯度的一阶矩估计和二阶矩估计;
$ \mu = 0.9, v = 0.999, \varepsilon = {10^{ - 8}}. $ |
卷积神经网络的性能不仅取决于网络的设计和优化算法的选择,训练图像集也扮演着重要的角色.选择Landsat卫星的遥感图像数据来构建训练图像库(数据来源于中国科学院计算机网络信息中心地理空间数据云平台(http://www.gscloud.cn)).从1999—2003年的全球合成数据中筛选出数十张5 000×5 000左右分辨率的遥感图像,选取其中4张作为最后的测试数据,其余图像作为训练集.训练集图像中包含了海洋、沙漠、城市、农田、雪地、森林、草地等地貌,也包含了各式各样的云层,部分训练集原始图像如图 5所示.
将原始5 000×5 000训练集图像分割为200×200分辨率的RGB三色通道子图,并人工判别是否被云层覆盖,最终生成训练集图像12 839张,其中无云覆盖图像7 610张,有云覆盖图像5 229张,并随机抽取10%的图像作为验证集,部分训练集子图如图 6所示.验证集图像不会参与网络训练,但每一步训练完成后都会使用验证集来检验网络的性能,得到网络对于验证集的预测精度和loss.
网络模型的搭建、训练和测试使用的硬件平台为CPU(Intel Core i7-4770,内存:12 G)+GPU(NVIDIA GTX 1070Ti,内存:8 G).
在网络搭建过程中,已经完成了对卷积神经网络的基础参数设定,除此之外训练中还有若干超参数需要进行选择,例如:学习率、学习次数、每组图像数、样本扩充等.经过多次实验及验证,选择如表 2所示的超参数能够达到较好的学习效果.
样本扩充是指,当训练数据有限时,可以通过数据增强将原有的数据生成新的数据来扩大训练集.在这里本文使用了将原图像进行随机旋转、随机宽度缩放、随机高度缩放、随机水平镜像的方法,并将所有图像信息归一化为0~1的数值.经过样本扩充后训练集的图像数目可以达到原来的3倍,能够使网络模型有更好的泛化性,避免过拟合情况的出现.
网络训练开始后,实时观察网络对于训练集和验证集的预测精度以及loss的变化,如图 7所示.
图 7(a)、(b)分别展示了在30次学习过程中网络对于训练集图像的预测精度和loss,可以看出网络对于训练集图像能够很快的降低loss并提高预测的精度,而且过程较为平稳.图 7(c)、(d)展示了网络对于验证集图像的预测精度和loss,由于验证集图像没有参与网络训练,更能真实的反映出网络的泛化能力,所以在前几次学习中网络的预测精度并不高,10次学习之后,网络对于验证集图像的预测精度就可达到95%,并逐渐稳定至98%左右,loss的变化也更为曲折,最终在0.06左右徘徊.
为了更好地对比和检验网络的性能,使用5个较为著名的卷积神经网络模型和相同的训练集来进行迁移学习的训练.迁移学习(transfer-learning)在卷积神经网络中特指一个在数据集上训练好的卷积神经网络模型通过简单的调整快速移动到另外一个数据集上.这5种常用迁移学习模型分别为VGG16[15]、VGG19、ResNet50[16]、Inception-V3[17]和Xception.其中VGG16与VGG19均为牛津大学所提出的深度网络,其特点是使用较小的卷积核进行堆叠以达到由于大卷积核的效果.ResNet50为深度残差网络,其特点是通过使用多个有参层来学习输入输出之间的残差,以达到更好的效果.Inception-V3和Xception均为谷歌公司所提出的深度网络,后者是前者的改进,并且其结构基于ResNet,具有良好的性能.这些模型都是在ImageNet[18]图像分类竞赛中获得过优异成绩的复杂模型,其参数经过数千万张分类图片的训练,具有强大的图像特征提取能力.
使用这些模型时,保留模型的卷积神经网络部分,使模型的输出为bottleneck向量,再将bottleneck向量送入自己所设计的全连接层即可完成分类任务.这里的bottleneck向量实际就是一个1 024维的向量,包含了前端网络对于图像特征的提取,后端的分类任务只需在这个bottleneck向量上进行即可.因此,网络的训练过程也只在bottleneck向量产生之后的部分,使用迁移学习模型构造的网络结构如图 8所示.
图 8中迁移学习模型对应于上述的5种模型,全连接层部分均使用两层结构,节点数分别为1 024和1,全连接层后接入与自建神经网络相同的分类模块即可,模型的训练参数设置相同与自建网络类似.
2 结果与分析测试图像数据使用Landsat卫星所拍摄的遥感图像,为了检验模型对场景类型的鲁棒性,选择4张场景不同的原始遥感图像,如图 9所示.将图片进行分割得到200×200像素的子图,并人工统计是否有云覆盖,得到的统计结果见表 3.
将测试图像送入训练好的自建神经网络中,得到卷积神经网络对图像是否有云层覆盖的预测,预测结果见表 4.
表 4中误判数是指模型将无云覆盖图像判别为有云覆盖的张数,漏判数是指模型将有云覆盖图像判别为无云覆盖图像的张数.为了评价模型的性能,定义以下几个评价参数为:
$ \begin{array}{l} 正确率{C_1} = \\ \begin{array}{*{20}{c}} {1 - \frac{{\left| {模型判别类型总数 - 人工判别类型总数} \right|}}{人工判别类型总数} \times 100\% , }\\ {误判率{C_2} = \frac{误判数}{人工判别无云覆盖总数} \times 100\% , }\\ {漏判率{C_3} = \frac{漏判数}{人工判别有云覆盖总数} \times 100\% .} \end{array} \end{array} $ |
经过计算可以得到模型对于测试样本的评价参数值见表 5.
表 5可以看出,模型对于有云图像的检测正确率为95.3%,对于无云图像的检测正确率为97.8%.总体的误判率为2.58%,漏判率为0.90%,各项指标都达到了较高的水准,尤其是对于高分辨率遥感图像.能在如此大数据量的情况下取得这么高的检测精度,再次说明了卷积神经网络对于云层检测问题的优势以及模型优异的鲁棒性.
取4张测试样本原图中较小的2号图像,将图像中被模型判别为有云层覆盖的区域加上阴影,如图 10所示.
从图 10可以看出,云层检测的效果良好,覆盖到了几乎所有原始图像中的云层区域.并且对于无云的区域,不存在误判的情况,说明使用卷积神经网络进行云层检测有非常高的精度,并且随着训练集数据的完善,检测精度会进一步提高.将相同的测试图像依次送入5个迁移学习模型中,可以得到迁移学习模型对于测试图像的预测结果,对比自建卷积神经网络模型的结果见表 6.
从表 6得到的统计数据可以看出,自建卷积神经网络模型相较于迁移学习模型在云层检测问题中具有一定的优势,误判数和漏判数更低,模型的精度也更高.由于自建卷积神经网络模型的深度小于5个经典模型,结构更加精简、参数更少.如表 6所示,在使用相同的测试集图像时,耗时也更短,只需要19 s左右,而经典模型中耗时最短的VGG16也需要25 s以上,Inception-V3模型更是达到了70 s以上,自建模型优势更加明显.
总的来说,与目前现有的算法相比较,本文所提出的基于卷积神经网络的遥感图像云层自主检测方法有效解决了高分辨率遥感图像云层分布、占比的自主检测.与文献[6]相比,本文方法仅需要可见光波段影像即可实现云层区域的检测,更适合在微小卫星中推广.与文献[8]所采用的基于灰度特性的算法相比,本文方法使用了卷积神经网络来进行图像特征的提取与分类,可以提取到更深层次的图像特征,因此在进行分类时具有更强的鲁棒性.在实际任务中还可以根据遥感图像背景的不同来选择对应的训练集,使得算法不仅适用于水域遥感图像,也适用于背景更为复杂的情况,同时保持较高的检测精度和更低的误判率.
3 结论1) 采用卷积神经网络技术,实现了遥感图像云层检测的自主性.
2) 借助并行运算技术和精简的网络结构,提高了高分辨率遥感图像的云层覆盖检测速度,满足在轨实时应用的需求.
3) 以Landsat遥感图像为例,实现了遥感图像有云层覆盖检测率为95.3%、无云层覆盖检测率为97.8%的识别精度,误判率和漏判率分别为2.58%和0.90%,检测精度优于传统方法.
[1] |
侯舒维, 孙文方, 郑小松. 遥感图像云检测方法综述[J]. 空间电子技术, 2014, 11(3): 68. HOU Shuwei, SUN Wenfang, ZHENG Xiaosong. Overview of cloud detection methods in remote sensing images[J]. Space Electronic Technology, 2014, 11(3): 68. DOI:10.3969/j.issn.1674-7135.2014.03.014 |
[2] |
Van ZYL MARAIS I, DU PREEZ J A, STEYN W H. An optimal image transform for threshold-based cloud detection using heteroscedastic discriminant analysis[J]. International Journal of Remote Sensing, 2011, 32(6): 1713. DOI:10.1080/01431161003621619 |
[3] |
侯岳, 刘培洵, 陈顺云, 等. 基于MODIS影像的夜间云检测算法研究[J]. 国土资源遥感, 2008, 20(1): 34. HOU Yue, LIU Peixun, CHEN Shunyun, et al. A study of night cloud detection based on MODIS image[J]. Remote Sensing for Land & Resources, 2008, 20(1): 34. DOI:10.6046/gtzyyg.2008.01.07 |
[4] |
马芳, 张强, 郭铌, 等. 多通道卫星云图云检测方法的研究[J]. 大气科学, 2007, 31(1): 119. MA Fang, ZHANG Qiang, GUO Ni, et al. The study of cloud detection with multi-channel data of satellite[J]. Chinese Journal of Atmospheric Sciences, 2007, 31(1): 119. DOI:10.3878/j.issn.1006-9895.2007.01.12 |
[5] |
DEERING D W, GUDMANDSEN P. Global process monitoring and remote sensing of the ocean and sea ice[J]. Proceedings of SPIE-The International Society for Optical Engineering, 1995, 38(3): 344. |
[6] |
陈刚, 鄂栋臣. 基于纹理分析和支持向量机的极地冰雪覆盖区的云层检测[J]. 武汉大学学报·信息科学版, 2006, 31(5): 403. CHEN Gang, E Dongchen. Cloud detection based on texture analysis and SVM over ice snow covered area[J]. Geomatics and Information Science of Wuhan University, 2006, 31(5): 403. DOI:10.13203/j.whugis2006.05.007 |
[7] |
陈鹏, 张荣, 刘政凯. 遥感图像云图识别中的特征提取[J]. 中国科学技术大学学报, 2009, 39(5): 484. CHEN Peng, ZHANG Rong, LIU Zhengkai. Feature detection for cloud classification in remote sensing images[J]. Journal of University of Science and Technology of China, 2009, 39(5): 484. |
[8] |
周雪珺, 杨晓非, 姚行中. 遥感图像的云分类和云检测技术研究[J]. 图学学报, 2014, 35(5): 768. ZHOU Xuejun, YANG Xiaofei, YAO Xingzhong. The study of cloud classification and detection in remote sensing image[J]. Journal of Graphics, 2014, 35(5): 768. DOI:10.3969/j.issn.2095-302X.2014.05.018 |
[9] |
JANG J D, VIAU A A, ANCTIL F, et al. Neural network application for cloud detection in SPOT VEGETATION images[J]. International Journal of Remote Sensing, 2006, 27(4): 719. DOI:10.1080/01431160500106892 |
[10] |
卢宏涛, 张秦川. 深度卷积神经网络在计算机视觉中的应用研究综述[J]. 数据采集与处理, 2016, 31(1): 1. LU Hongtao, ZHANG Qinchuan. Applications of deep convolutional neural network in computer vision[J]. Journal of Data Acquisition and Processing, 2016, 31(1): 1. DOI:10.16337/j.1004-9037.2016.01.001 |
[11] |
LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278. DOI:10.1109/5.726791 |
[12] |
殷文斌.卷积神经网络在遥感目标识别中的应用研究[D].北京: 中国科学院大学, 2017 YING Wenbin. Research on object recognition in high resolution images based on convolutional neural networks[D]. Beijing: University of Chinese Academy of Sciences, 2017 |
[13] |
许伟栋, 赵忠盖. 基于卷积神经网络和支持向量机算法的马铃薯表面缺陷检测[J]. 江苏农业学报, 2018, 34(6): 1378. XU Weidong, ZHAO Zhonggai. Potato surface defects detection based on convolution neural networks and support vector machine algorithm[J]. Jiangsu Journal of Agricultural Sciences, 2018, 34(6): 1378. DOI:10.3969/j.issn.1000-4440.2018.06.025 |
[14] |
KINGMA D, BA J. Adam: A method for stochastic optimization[C]//Proceedings of the 3rd International Conference for Learning Representations. San Diego: [s.n.], 2015
|
[15] |
SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[C]//Proceedings of the 3rd International Conference for Learning Representations. San Diego: [s.n.], 2015
|
[16] |
HE Kaiming, ZHANG Xiangyu, REN Shaoqing, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas, NV: IEEE, 2016. DOI: 10.1109/CVPR.2016.90
|
[17] |
SZEGEDY C, VANHOUCKE V, IOFFE S, et al. Rethinking the inception architecture for computer vision[C]//Proceedings of the 3rd International Conference for Learning Representations. San Diego: [s.n.], 2015
|
[18] |
DENG Jia, DONG Wei, SOCHER R, et al. ImageNet: A large-scale hierarchical image database[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Miami, FL: IEEE, 2009. DOI: 10.1109/CVPR.2009.5206848
|