遥感影像目标分类的三种基础机器学习方法比较
2021-07-07周海龙柴需楷张金童彭思卿杨阳赵骁翊武义轩姜瑜王珂尹伟男白晓乐李志亮郑逢杰陈兴峰
周海龙,柴需楷,张金童,彭思卿,杨阳,赵骁翊,武义轩,姜瑜,王珂,尹伟男,白晓乐,李志亮,郑逢杰,陈兴峰
(1.航天工程大学航天信息学院,北京101416;2.中国科学院空天信息创新研究院,北京100094)
遥感技术在近几十年高速发展,海量的遥感数据已经基本满足了人们对于地表成像的各种需求,高空间分辨率、高光谱、热红外、合成孔径雷达等多类数据服务于国土调查、地质灾害、海洋研究、农业监测、退耕还林、气象环境变化等多个领域,遥感在其中发挥了巨大的作用[1-6]。伴随着计算机技术的发展,遥感与计算机被连接在一起,目前遥感图像解译分为人工、计算机自动、人机结合三种方式,自从深度学习技术在图像、语音识别领域取得突破进展之后,遥感图像目标分类也越来越多的使用深度学习方法[7-9]。当前识别的方法得到较多关注和应用的有U-net[10-12]、Yolo[13-15]等,这些方法设计了复杂的深度学习模型架构。总结来看,都是基于一些基础的模型架构进行利用,这些基础模型对遥感目标分类的敏感性准确度有何差异?本文针对遥感图像分类识别应用进行了多种方法的实验研究,旨在分析比较各种算法的性能与优劣,为基础机器学习的使用选择以及遥感目标分类的复杂深度学习架构设计提供参考。
对比实验使用已标注的光学遥感图像数据集,构建了3种深度学习基础模型架构:全连接神经网络(Full Connected Neural Network, FCNN)、卷积神经网络(Convolutional Neural Network, CNN)、随机森林(Random Forest, RF)。通过遥感分类的混淆矩阵给出总体精度,对不同的模型进行评价。
1 三种深度学习方法
1.1 全连接神经网络(FCNN)
全连接神经网络的网络结构由输入层、隐藏层、输出层构成,全连接的含义即为隐藏层中各节点都与上一层的所有节点连接,其基本网络结构如图1 所示。
图1 全连接神经网络结构示意图
神经网络思路来源于人的神经细胞,整个网络的运行是由一个神经元的输出作为下一个神经元的输入层层传导的。类似于人的神经细胞,会响应刺激并将反应结果表现在人体动作上,神经网络会对输入数据进行处理即进行一个线性运算,之后再通过激活函数做个非线性运算,这个过程相当于神经网络对数据进行更深层次的理解,而后通过一层层的神经元处理传导,整个神经网络都对输入数据有了响应,最后经过输出层,全连接神经网络将处理后的结果传递出来。
1.2 卷积神经网络(CNN)
FCNN 是将一维向量数据作为输入,整个网络仅仅处理数据。CNN 在此基础上加入了神经网络对于空间结构的学习,引入了卷积核的概念。CNN 的输入数据是二维的,卷积核会对二维数据进行逐块处理,如图2 所示,类似于人看报纸一块块阅读之后提炼主要信息,卷积核处理完之后会得到更加简单的附有空间信息的数据。CNN 的网络结构包含输入层、卷积层、最大池化层、全连接层和输出层,卷积层和最大池化层利用卷积核对二维数据进行空间信息的提取,之后转换成一维向量再利用FCNN 的原理处理得到结果。
图2 卷积核工作示意图
1.3 随机森林(RF)
随机森林的基础为决策树,决策树基本形式如图3 所示。随机森林顾名思义是由许多决策树共同构成的,它们拥有某种方式的随机性,并且随机森林的每一棵决策树之间是没有关联的,随机森林中决策树的每个内部的节点代表对一类属性进行“测试”,每个分支代表测试后结果,每一个叶子节点代表一个类标签。在形成森林之后,当有输入时,所有决策树都进行判断选择最适合本决策树分类要求的类标签,最终所有决策树会投票表决,得票多的成为最终的输出结果。单棵决策树的分类能力很弱,利用多棵不相关的树组合增强结果可信度,随机森林通过这种方式提高样本类型预测的准确性。
图3 决策树基本形式
2 遥感数据样本
光学遥感图像从遥感图像描述数据集Remote Sensing Image Captioning Data Set (RSICD)[16]获取。数据集RSICD 从Google 地球,百度地图,MapABC,天地图等收集了1 万多张高分辨率遥感图像,该数据集具有较高的类内多样性和较低的类间差异性,适合用于深度学习模型对比。目标分类的标注信息来自于图像的文件名。
所有光学遥感样本均是高宽为224 像素的RGB图像,并分为测试集与训练集用于模型的训练与检测。从其中共选取了8 类典型地表目标,具体样本归类和数据集情况如表1 所示。
表1 光学遥感图像样本数据集介绍
3 方法
Python 的TensorFlow 库 与sklearn 库 提 供 了FCNN、CNN、RF 的网络结构设置与网络训练测试模块,选择用Python 对三个算法进行训练。程序主要有三块内容,分别为输入、网络结构设置和输出。由于Python 的TensorFlow 库与sklearn 库不能直接将RGB 的三波段图像作为FCNN、CNN、RF 的输入,所以将选择的图像数据在输入神经网络之前由RGB格式的图像转换为单波段灰度图像,方便之后三种机器学习的数据读入。三个算法网络结构设置完成之后将进行数据的训练,设定的训练样本数与测试样本数约为8:1。最终的结果将分别呈现三个算法的精度与混淆矩阵。
三种机器学习基础模型的设计开发情况如下。
3.1 全连接神经网络
基于Python 的TensorFlow 库对FCNN 的网络结构进行设置与测试。FCNN 的网络结构包含三部分:输入、隐藏层、输出。FCNN 的输入需要的是一维向量,因此将单波段的灰度图像由二维矩阵转换到一维向量,输入为长度是50176 的一维向量。隐藏层中设置了6 个全连接层,神经元个数按照递减的形式设置,输出时的神经元个数为8 个,对应所分的8 类目标,其激活函数为‘softmax’,其余全连接层的激活函数为‘relu’。
具体的FCNN 网络结构设置如表2 所示,网络结构示意图见图4。
图4 FCNN 网络结构示意图
表2 FCNN 结构设置
3.2 卷积神经网络
基于Python 的TensorFlow 库对CNN 的网络结构进行设置与测试。CNN 的输入是图像对应的224×224 的二维数据,其隐藏层包含了四部分,即卷积层、最大池化层、折叠层、全连接层。使用两个卷积层和两个最大池化层用于对二维数据进行处理提取图像重要空间信息,而后选择使用折叠层将二维数据转化成一维向量,再经过两个全连接层后输出8 个神经元节点对应8 类目标,两个全连接层的激活函数均为‘Relu’。具体的网络结构如表3 所示,网络结构示意图见图5。
表3 CNN 结构设置
图5 CNN 网络结构示意图
3.3 随机森林
使用Python 平台的sklearn 库对RF 的网络结构进行设置与测试。Sklearn 库中的randomforest 函数集成了随机森林的主要结构,只需对RF 树的数量与深度进行设置就可以得出结果,经过尝试之后选择树的数量为3000,树的深度为1000。袋外数据为未用于测试的输入图像数据,为提高精度,选择引入袋外数据。具体的网络结构设置如表4 所示,网络结构示意图见图6。
表4 RF 结构设置
图6 RF 网络结构示意图
3.4 开发环境
基于Python 平台的TensorFlow 库设计开发FCNN、CNN 分类 器,基 于Python 平台的Sklearn 库设计开发RF 分类器。3 个网络结构在相同配置下进行测试训练,具体开发运行环境如表5 所示:
表5 深度学习模型开发运行软硬件环境
4 结果
4.1 混淆矩阵
混淆矩阵是在图像精度评价过程中常用的一种可视化方式,其为二维矩阵,每一列代表了实际应该获取的信息,每一列数据总和为该类目标的测试集数量,每一行代表了模型预测获取的信息,每一行数据总和为预测的该类目标数量。矩阵对角线上的数值为对应目标正确分类的数量。混淆矩阵可以直观看出每一类目标的分类效果并利于分析影响分类精度的原因。利用混淆矩阵计算分类精度的公式如式1 所示。
式中:P为分类精度,i和j分别为行数与列数,L为需要计算的混淆矩阵,n 为混淆矩阵的维度。
利用上述网络结构设置得到FCNN、CNN、RF 的混淆矩阵分别如表6、表7、表8 所示。
表6 FCNN 混淆矩阵
表7 CNN 混淆矩阵
表8 RF 混淆矩阵
meadow sparseres idential stadium 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 24 0 0 1 39 0 0 0 23
4.2 结果分析
根据混淆矩阵可以分析出,最容易被错分的为desert 和bareland 类,如图7(a)、图7(b)所示,错分原因为两类在整体的色调形状接近,纹理上都没有太大的起伏,导致特征提取结果相似,使得精度较低。beach 类是效果较好的,如图7(c)所示,从影像可以看出,这一类有清晰的分界线,沙滩与大海的界限清晰,梯度下降明显,便于特征提取,因此此类别精度高。类似于人,机器分类的时候也需要有明显的特征才能给出满意的效果。影响分类精度的不仅仅是算法,数据集的分类效果也对精度有一定影响。(图7(a)(b)(c),见中间彩页)
由混淆矩阵结合式1 可以得到FCNN、CNN、RF的分类精度分别为62.2%;89.1%;80%,可见CNN 的精度是这三类中精度最高的。结合网络结构设置分析,FCNN 与RF 网络的输入是一维数据,而CNN的数据就是对应图像的二维数据,将二维数据转换到一维数据会丢失图像一些空间信息,因此CNN 相比于FCNN 与RF 更能反映图像的真实空间信息,所以CNN会得到更高的精度。
5 结论
深度学习等算法已经融入到各行各业,不同的算法各自展现着不同的优势,其发展离不开基础的机器学习算法,基础的机器学习算法经过不断的开发与新思想的注入,衍生出新的算法。为研究基础的机器学习算法对于目标的识别精度如何,本文基于Python平台的TensorFlow库与sklearn库对FCNN、CNN 和RF 三种基础机器学习算法进行网络结构设计,并利用一组光学图像进行训练与测试,最终根据网络结构与混淆矩阵分析得出结论:CNN对于光学图像的识别精度最高。CNN通过卷积核对二维图像进行特征提取,而FCNN和RF在输入的时候已经把图像转换成一维向量,不利于二维信息的提取,因此CNN作为目标识别和分类的基础型机器学习模型是合理的。
遥感目标分类和识别的深度学习方法发源自通用的图像识别领域,对于遥感的定量化信息使用不足,甚至在光谱、量化等级方面有所损失,图像数据被压缩会降低分类精度,相反引入附加数据或许能够提高目标识别精度。相信未来定量遥感和深度学习的结合,有助于提高遥感目标分类精度。