王莉影, 高心丹
(东北林业大学 信息与计算机工程学院,哈尔滨 150000)
遥感图像的分类是进行社会资源保护和社会资源动态监护的基础,为划分森林类型,进而为国家森林资源清查提供依据,因此近年来遥感影像的分类一直是广大科技者研究的重点[1-3]。文献[4-6]中结合特征组与分层策略对高空间分辨率的遥感图像进行逐层分类,有效提高了地表覆盖类别解译效率;徐佳庆等[7]采用基于二阶矩空谱联合稀疏编码的遥感图像分类方法,在天宫一号和KSC数据上的总体分类精度分别达到了95.74%和96.84%;Xue等[5]提出了两种新的稀疏图正则化方法,该方法在计算效率,分类准确性和对噪声的鲁棒性方面优于一些最先进的方法;Liu等[6]使用一种多尺度深度特征学习方法用于高分辨率卫星图像场景分类,与其他方法相比性能有所提升。当前遥感影像分类研究已经取得了长足的进展,但在树种类型信息的获取中仍存在很多突出问题,如分类精度不高、详细程度差和数据量不足等技术难点。
卷积神经网络(Convolutional Neural Networks,CNN)作为优化的神经网络,是图像识别领域的研究热点[8-9]。它通过局部感受野、权重共享和降采样3种策略,能够有效减少训练参数的数量,更好地降低网络复杂度,有效地抑制过拟合问题,使网络具有更高的鲁棒性[10-13]。CNN在识别位移、缩放以及其他形式扭曲不变性二维图像的同时,能够进行并行学习的特征使其对图像特征的提取更有优势[14]。Zeiler等[15]利用通用的CNN特征,大幅提高了小样本图像识别的准确度。Nogueira等[16]通过CNN来区分具有少量标记样本的植被物种。何海清等[17]提出了一种深度CNN递归识别模型,可适应不同尺度地物的变化,显著提高了场景分类的精度。Zhang等[18]通过一种梯度增强随机卷积网络进行遥感的场景分类。
本文提出一种基于迁移学习思想的深度CNN识别模型,对所选研究区的树种类型进行识别。该方法构建多层CNN,通过迁移学习方法提升CNN的分类识别能力,选择有代表性的高分辨率遥感影像场景样本对深度CNN进行训练,利用Softmax函数输出分类结果并计算各个类别的Kappa系数,证实本实验算法的可行性,然后使用模型对树种类型进行识别和分类。
CNN是在对猫的视觉皮层中细胞研究的基础上,对生物大脑皮层结构进行模拟而设计的含有多隐层的人工神经网络[16],其结构如图1所示。
图1 卷积神经网络结构
CNN采用卷积运算代替一般的矩阵乘法,可以抽象输入的图像,经过几次抽象操作后,提取出图像的特征值,从而对树种特征进行自主学习。对比传统的神经网络结构,CNN不需要全部感知树种图像中的像素信息,局部感知的信息在高层合并生成特征图,并对生成的特征图进行降采样操作,这些特点使CNN参数的数量和计算量都大大减小,并且增强了模型的特征泛化能力,因此对树种图像的识别和分类都更加迅速便捷。
(1) 卷积层。为了使用CNN对树种进行识别,首先将针阔叶树种图像输入,输入图像进入卷积层后,卷积层对树种图像的特征进行提取。树种图像经过前向传播得到特征图的过程如下:
(1)
(2) 池化层。池化层使用最大值或者平均值操作对卷积层提取到的树种特征图降维。池化层的计算过程如下:
(2)
式中:down()表示子采样函数;β表示子采样系数;b是偏置。
池化层和卷积层共同组成的树种图像的两次特征提取结构,使网络对图像的畸变有很好的容忍能力。
(3) 全连接层。全连接层能够使通过卷积层和池化层提取到的树种特征映射到样本的标记空间中,然后使用激活函数传递给输出层进行输出。
(4) Softmax分类器。在多分类问题中,使用Softmax回归将目标分类变成概率输出。假设训练样本的集合为{(x(1),y(1)),…,(x(n),y(n))},模型参数为θ,共有l个参数,有k个类别,即y(i)∈{1,2,…,k},对于每个输入的x,损失函数可以定义为:
(3)
针对当前现有的标准数据集中树种图像仅仅只有几千张,达不到训练深度CNN所需要的百万数量级的问题,在树种图像的分类模型上引入了迁移学习的思想。
本文借助在大型数据集ImageNet上预训练的CNN模型对树种的图像的特征进行提取分类,可以将在大型数据集上学习到的权重作为初始权重应用到树种的识别分类上,使网络的训练仅仅使用几千张树种的标注图像就能达到很高的分类精度。
为验证本实验模型分类方法的有效性,分别选用两组数据集进行实验。实验数据集1为AID数据集,该遥感影像数据集由武汉大学研究团队于2017年制作完成,取自全世界不同国家和地区,空间分辨率为8~0.5 m。为研究本文方法对地表覆盖及针阔叶分类的有效性,选取数据集中的裸地、农田、森林、草地、山脉、湖泊和河流7种类别,种间相似性较小,分类难度较高。每个类别包含有250~420幅大小为600×600的图像,选取地表覆盖类型示例样本图像如图2所示。
(a) 裸地
(b) 农田
(c) 森林
(d) 草地
(e) 山脉
(f) 湖泊
(g) 河流
图2 部分地表覆盖示例样本图像
实验数据集2为东北林业大学实验林场的低空遥感数据影像。该林场共引进树种118种,植树近35 hm2。研究区域中包括兴安落叶松林、樟子松林、红皮云杉林、红松林、水曲柳林等,为便于计算,本文将其分别归类为针叶林和阔叶林进行分类。图像的像素大小为4 000×2 250,经过实验选择最优分割尺度将图像切割为大小100×90像素的针叶林图像和阔叶林图像各1 300张,通过解译专家对所有目标图像进行人工标注。部分针阔叶树种样本图像如图3所示。
(a) 针叶林
(b) 阔叶林
本文使用在ImageNet上训练的性能较好的大型卷积神经网络Inception-v3作为迁移学习的模型。针阔叶分类模型的结构主要包括以下两个部分:①使用ImageNet进行Inception-v3模型的预训练,模型中间的隐含层对ImageNet中的图像特征进行逐层地学习,使Inception-v3模型成为一个特征提取器,更好地对树种图像进行特征提取;②加载训练好的模型并训练一个新的全连接层及Softmax层输出结果,将输出的结果与目标输出对比得出误差,将误差进行反向传播实现参数的更新。
Inception-v3是由Google团队提出基于Inception模块的GoogleNet模型,Inception模块在增加了网络宽度的同时,可以有效降低维度,并对特征提取功能进行了强化。该模型共有46层,由11个Inception模块组成。主要使用3×3的卷积核对树种图像进行滤波操作,同时使用2个1维卷积来模拟2维卷积,最后通过1×1的卷积核来进行特征组合,从而减少特征图的数量,增加网络模型结构的非线性。
实验时将树种图像转化为299×299×3数字矩阵输入网络,在第1个卷积层使用尺寸为3×3的卷积核对图像数据集进行步长为2的滤波操作,此时特征向量的尺寸变为149×149×32。在后面几个非Inception Module的普通卷积层中进行类似的操作,最后得到的特征向量尺寸为35×35×192。随后进入3个连续的Inception模块组,第1个Inception模块组包含3个Inception module,每个Inception module有4个分支,将4个分支的输出合并在一起生成尺寸为35×35×256的特征向量。第2个Inception module与第1个模块类似,只是最后连接1×1卷积,输出尺寸为35×35×288的特征向量。最后将3个分支的输出进行合并,输出尺寸为8×8×1 280的特征向量。将输出的特征向量依次放入第2个和第3个Inception模块组,最后得到尺寸为8×8×2 048的特征向量。
将输出的8×8×2 048特征向量进行8×8的全局平均池化操作,使特征向量尺寸由8×8×2 048变为1×1×2 048,然后连接一个Dropout层,将最后的输出通道数改为2,使用尺寸为1×1卷积核进行滤波操作,最后通过Softmax层变为概率输出结果。
实验环境为Windows7 64 bit操作系统,使用Tensorflow+slim+python3建立基于迁移学习的树种分类识别模型,实验结果中的损失曲线、准确率曲线均由 TensorBoard可视化得到。
首先分别将针叶林和阔叶林保存在不同目录下以便网络进行提取,根据目录信息对所有数据进行打标签处理,并将训练数据随机打乱从而获得更好的训练效果。将处理好的数据打入模型中进行训练,进行卷积神经网络的训练,训练过程算法:
(1) 选定训练样本的集合为{(x(1),y(1)),(x(2),y(1)),…,(x(n),y(n))}。
(2) 初始化CNN需要学习的参数为W、b,设置初始学习率为0,001,将样本读入网络中。
(3) 对于任意一个测试样本(x,y),经过式(1)、(2)进行正向传播计算其损失函数。
(4) 采用batchsize为20的随机梯度下降法最小化损失函数(3)。
(5) 根据输出值和真实值之间的误差,进行反向传播算法调整参数。
(6) 若迭代未完成,返回(3)继续调优,迭代完成,则结束。
在实验过程中,训练准确率较高,但测试准确率却较低,产生了过拟合现象。为解决过拟合问题,本文在全连接层引入Dropout函数。Dropout函数在神经网络的训练过程中,可以控制隐层神经元的激活状态,从而减少隐藏层之间的相互作用,可以增强模型的泛化性能。
分别使用AID部分地表覆盖数据集和东北林业大学实验林场的针阔叶数据集对基于Inception-v3模型的迁移学习方法进行验证。图4展示了AID数据集中测试数据集的精度变化曲线和训练数据集的损失函数变化曲线。由图4可以看出,随着迭代次数的增加,本文网络模型在AID的部分数据集上的分类准确率逐步升高,损失逐步减小,迭代200步后准确率基本稳定保持在95%以上。
将测试样本放入训练好的网络中进行测试,得到地表覆盖分类结果的混淆矩阵如表1所示。
计算结果表明,本文算法总体精度为98.8%,Kappa系数为0.987。其中,草地和山脉的分类精度达到了100%,类混淆主要发生在河流和湖泊等两个类别之间,这是因为这两种类别的种间差距较小。经过对比,在AID部分数据集上本文实验结果优于文献[24]中使用的基于CH手工特征进行编码的场景分类方法。
(a) 准确率
(b) 损失函数
表1 本实验算法对地表覆盖类型分类的混淆矩阵
在本文实验林区数据集上,模型的测试数据集的准确率变化曲线和训练数据集的损失函数变化曲线如图5所示。通过图5可以看出,对比AID数据集,实验林区数据集的损失下降的更加迅速,并且在400步左右损失就一直维持在0.1以下。为验证本文方法的有效性,输入树种图像进行测试得到东北林业大学实验林区数据集树种类型的混淆矩阵,通过计算得到Kappa系数,如表2所示。
由表2可知,本实验模型对东北林业大学实验林区数据集中针阔叶的识别效果基本一致,两树种在1 300个样本中都分别错分了10个,总体分类精度为99.2%,Kappa系数为0.984。
可以看出,卷积神经网络模型在两种数据的图像分类中精度相当。由于不同数据源图像特征的差异,AID数据集的准确率达到98.8%,而东北林业大学林区数据集的准确率稳定在97.2%上,Kappa系数分别为0.987和0.984。在两种数据的分类过程中,随着迭代次数的增加,训练样本和测试样本的损失值都在不断减小,迭代200次后精度和损失都基本稳定。由此说明使用迁移学习思想的卷积神经网络能够准确地区分不同类型地表覆盖及针叶林和阔叶林。证明本文算法模型在新的数据集上可以很快收敛的同时能够保证较高的分类精度。
(a) 准确率
(b) 损失函数
表2 本实验算法对树种类型分类的混淆矩阵
本文使用卷积神经网络对遥感影像树种类型进行识别和分类,运用迁移学习的思想,将在ImageNet上进行预训练的Inception-v3模型使用AID数据集和东北林业大学实验林场数据集重新训练一个新的全连接层和Softmax层进行分类。对AID数据集中部分地表覆盖类型的数据识别分类的总体精度为98.8%,Kappa系数为0.987,通过与其他分类方法的对比证明了模型提高了分类的准确性。然后使用模型进一步对东北林业大学实验林场中的针阔叶树种进行识别,最终得到的总体分类精度为99.2%,Kappa系数为0.984。证明了本实验运用迁移学习的方法,可以充分利用大数据提取好的特征信息对模型进行重新训练,使模型在只有限标注的树种图像样本的情况下,能够有效地对针阔叶树种进行识别和分类。