基于3D深度卷积神经网络的小样本高光谱图像分类方法

文档序号:31737265发布日期:2022-10-05 04:02阅读:67来源:国知局
基于3D深度卷积神经网络的小样本高光谱图像分类方法
基于3d深度卷积神经网络的小样本高光谱图像分类方法
技术领域
1.本发明属于遥感图像处理技术领域,具体涉及一种基于3d深度卷积神经网络的小样本高光谱图像分类方法。


背景技术:

2.遥感在为各种应用提供丰富的信息来源方面发挥着重要作用。高光谱图像就是通过遥感卫星获取的,其中包含红外和热红外波段范围内纳米级光谱分辨率、光谱波段数多达百个的高光谱分辨率的连续、窄波段的图像数据,可以连续提供各种信息,如辐射、空间和特征光谱,被广泛应用于军事侦察、环境监测、植被调查、地质勘探、医学应用和深空探测等领域,其中一个关键应用是少量样本下的高光谱图像地物精细分类问题。但是由于高光谱图像的数据特性,会产生多个波段的图像,具有数据冗余的特点,使得精细分类问题分析具有一定的挑战性。
3.随着我国高分辨率对地观测系统的实施,特别是搭载纳米级高光谱相机的高分五号卫星的即将发射,可以看出高光谱遥感存在重大战略应用需求。其中一个关键应用是少量样本下的高光谱影像地物精细分类问题。虽然高光谱图像所包含的空间信息和光谱信息非常利于地物分类,但是在实际应用过程中,因为高光谱影像数据较高的光谱维度,从而增加了波段之间的相关性,使得波段间难以区分,而且高光谱数据的信息冗余度较高,这些问题都是传统的图像分类方法无法解决的。鉴于此,研究者们提出基于像素的分类方法,并用实验证明其具有优于传统方法的分类效果,在很长一段时间得到业界的认可。但基于像素的分类方法是仅仅依靠图像的光谱信息进行分类的,此方法忽略了图像的空间结构信息,造成信息的浪费,也降低了分类精度,因此研究基于空-谱联合的高光谱影像分类方法是很有意义的。
4.随着大数据和人工智能技术的兴起,深度学习技术在目标检测,图像识别等领域广泛应用。而传统高光谱影像分类算法,需要人工标注以及进行专家级的推导工作。利用深度学习可以更好的帮助工作者进行分类,加快了训练进程,深度学习中的1d与2d网络使得分类变得简单,但其准确性有待提高,另外处理速度慢,浪费了高光谱影像独有的数据特点。3d网络可以充分利用数据中的信息,而且使模型架构变得简单。
5.结合高光谱分类现有的具体技术以及方法,针对高光谱数据独有的特点,提出一种基于3d深度卷积神经网络的小样本高光谱图像分类方法,该算法不仅能够提高分类的精度,对于进一步发展3d cnn也起着关键性的作用。


技术实现要素:

6.本发明的目的是提供一种基于3d深度卷积神经网络的小样本高光谱图像分类方法,通过构建3d cnn的深度学习模型,学习数据内部的信息结构,可对高光谱数据中的像素点进行分类。
7.本发明所采用的技术方案是,基于3d深度卷积神经网络的小样本高光谱图像分类
方法,具体按照以下步骤实施:
8.步骤1、将高光谱数据作为一个整体输入,划分数据为训练集train以及测试集test;
9.步骤2、构建3d cnn的深度学习网络模型,确定各层卷积核的大小、卷积核的个数、全连接层的个数,确定损失函数及其超参数;
10.步骤3、将所述步骤1中高光谱数据的训练集train输入到步骤2构建的3d cnn的深度学习网络模型中,实现特征提取;
11.步骤4、将提取到的特征,输入到分类器中学习特征,训练参数,确定网络模型;
12.步骤5、对测试样本测试,实现对高光谱数据每个像素点的分类。
13.本发明的特点还在于,
14.步骤1具体按照以下步骤实施:
15.步骤1.1、将高光谱数据作为3d立方体数据处理,m表示高光谱共有m个像素点,m=m1×
m2,m1、m2分别代表输入数据的长和宽,每个像素点是由n个光谱带作用形成的,n={1,2,...,n},因此数据集又表示为表示高光谱图像,x长宽为m1、m2,共有n个波段,n代表第n个波段;
16.步骤1.2、对于训练集train中每一个像素点m,以其为中心考虑其周围7*7的领域,将其领域作为每个像素的输入,输入到步骤2的3d cnn网络模型中。
17.步骤2构建3d cnn网络结构模型,具体如下:
18.3d cnn网络模型一共有6层,其中有三个多尺度卷积层,一个联合处理空谱信息的卷积层,两个全连接层;
19.步骤2.1、对于第一个多尺度卷积层,在空间维度上使用小卷积核,在光谱维度上采用大卷积核,核大小分别为11*3*3,7*2*2,5*1*1,其对应的卷积步长stride分别为(1,1,1),(1,2,2),(1,1,1),卷积填充块padding(5,1,1),(3,3,3),(2,0,0);
20.步骤2.2、对于第二个多尺度卷积层,只对空间信息进行处理,使用1*n1*n1的卷积核,其中n1取值为:1,2,3,即卷积核分别为1*3*3,1*2*2,1*1*1,对应的卷积步长stride分别为(1,1,1),(1,2,2),(1,1,1),卷积填充块padding(0,1,1),(0,3,3),(0,0,0);
21.步骤2.3、对于第三个多尺度卷积层,对其光谱信息进行处理,使用n2*1*1的卷积核,其中n2的三个取值为:11,7,5;卷积核分别为11*1*1,7*1*1,5*1*1,对应的卷积步长stride分别为(1,1,1),(1,1,1),(1,1,1),卷积填充块padding(5,0,0),(3,0,0),(5,0,0);
22.步骤2.4、设置一个联合处理空谱信息的卷积层,卷积层大小为:(3,2,2),卷积步长stride为(1,1,1),卷积填充块padding为(1,0,0),随后接入到池化层中,降维,池化层卷积核为(3,2,2),stride卷积步长为(1,1,1),卷积填充块padding为(0,0,0);
23.步骤2.5、设计两个全连接层:第一个全连接层fc1先将步骤2.4中得到的特征s4映射到1024个节点中,得到特征s5,第二个全连接层fc2将1024个节点中的特征s5,映射到步骤1的高光谱数据集所拥有的类别label中。
24.步骤3具体结构为:
25.步骤3.1、将步骤1中的训练集train输入到所述步骤2构建的3d cnn的深度学习网络模型的步骤2.1中第一个多尺度卷积层,得到特征s11、s12、s13,将特征s11、s12、s13相加
再经过relu激活函数输出得到特征s1,作为第二个多尺度卷积层的输入;
26.步骤3.2、将特征s1经过步骤2.2的第二个多尺度卷积层之后,得到特征s21、s22、s23,将提取到的特征s21、s22、s23相加再经过relu激活函数输出得到特征s2,作为第三个多尺度卷积层的输入;
27.步骤3.3、将特征s2经过步骤2.3的第三个多尺度卷积层之后,得到特征s31、s32、s33,将提取到的特征s31、s32,s33相加再经过relu激活函数输出得到特征s3;
28.步骤3.4、将特征s3输入到步骤2.4的联合处理空谱信息的卷积层中并经过relu激活函数,得到特征s41,随后对特征s41进行池化操作得到特征s42,再次经过relu激活函数得到特征s4。
29.步骤4具体步骤为:
30.将步骤3.4得到的特征s4输入到步骤2.4中的第一个全连接层fc1,经激活函数作用后再输入到步骤2.4中的第二个全连接层fc2,最后将特征s5拉成对应类别数的一维向量,在3d cnn深度学习网络模型中训练,训练过程中采用自适应学习率优化算法adagrad算法寻找最优参数,保存模型的权重,算法流程如下所示:
31.首先,需要设置全局学习率ε,初始参数θ,小常数δ;
32.随后,初始化梯度累积变量r=0;
33.当没有达到停止准则:
34.从训练样本中采集包含m个样本{x
(1)
,

,x
(m)
}的小批量,对应目标为y(i),表示第i个样本的预测输出;
35.计算梯度g:
36.累积平方梯度r:r=r+g

g;
37.计算更新参数θ:
38.应用更新参数θ:θ=θ+δθ;
39.在更新参数的时候,学习率变为:
[0040][0041]
ξ是为了保持数值的稳定性,以防出现分母为0的情况,
[0042]
最终得到一组3d cnn深度学习模型对应的参数,至此3d cnn深度学习网络模型搭建完毕。
[0043]
步骤5具体步骤为:
[0044]
步骤3以及步骤4为训练网络的过程,此过程为测试过程,将测试集test的每个像素点,考虑其周围7*7领域的大小,输入到搭建好的3d cnn深度学习网络模型中,最终输出测试样本的类别标签,完成高光谱图像中地物的分类。
[0045]
本发明的有益效果是,一种基于3d深度卷积神经网络的小样本高光谱图像分类方法,1)本发明搭建了三个不同的多尺度卷积层,用于提取高光谱图像中不同的尺度特征,克服了单一尺度对尺度特征利用不充分,分类精度不高的缺点,提高了对高光谱图像中地物
的分类精度。2)本发明设计了一个联合处理空谱信息的卷积层,同时对空间信息和光谱信息进行卷积克服了现有技术空谱特征融合不充分,对于样本分布不集中或个别地物类样本很少分类效果不好的不足,提高了对小样本类别的识别能力。3)本发明中卷积之后使用非线性激活函数relu,并用跨步卷积的方式替代了传统的卷积,从而使得特征整合能力比一般的线性手段更加适用于高光谱数据的非线性特点。
附图说明
[0046]
图1是本发明的基于3d深度卷积神经网络的小样本高光谱图像分类方法整体流程图;
[0047]
图2是本发明的深度学习3d cnn网络结构图;
[0048]
图3是选择5%训练样本在paviau数据集上对比的结果图;
[0049]
图4是选择5%训练样本在ksc数据集上对比的结果图;
[0050]
图5是选择20%训练样本在indianpines数据集上对比的结果图;
[0051]
图6是选择20%训练样本在salinas数据集上对比的结果图。
具体实施方式
[0052]
下面结合附图和具体实施方式对本发明进行详细说明。
[0053]
本发明提出了基于3d深度卷积神经网络的小样本高光谱图像分类方法:首先将高光谱数据输入,对于每一个像素点考虑其周围领域,将每一个点当作3d块输入,随后通过本文算法所提出的框架中,提取联合空间-光谱特征,训练网络模型降低损失误差,最后输入测试样本完成分类结果的预测,并输出预测结果的kappa系数以及aa指标。
[0054]
基于3d深度卷积神经网络的小样本高光谱图像分类方法,算法总体网络结构如图1所示,具体按照以下步骤实施:
[0055]
步骤1、将高光谱数据作为一个整体输入,不做降维的预处理,划分数据为训练集train以及测试集test;
[0056]
步骤1具体按照以下步骤实施:
[0057]
步骤1.1、将高光谱数据作为3d立方体数据处理,m表示高光谱共有m个像素点,m=m1×
m2,m1、m2分别代表输入数据的长和宽,每个像素点是由n个光谱带作用形成的,n={1,2,

,n},因此数据集又表示为表示高光谱图像,x长宽为m1、m2,共有n个波段,n代表第n个波段;
[0058]
步骤1.2、对于训练集train中每一个像素点m,以其为中心考虑其周围7*7的领域,将其领域作为每个像素的输入,输入到步骤2的3d cnn网络模型中。
[0059]
步骤2、构建3d cnn的深度学习网络模型,确定各层卷积核的大小、卷积核的个数、全连接层的个数,确定损失函数及其超参数;
[0060]
步骤2构建3d cnn网络结构模型,具体如下:
[0061]
确定各层卷积核的大小、卷积核的个数、全连接层的个数,确定损失函数及其超参数。网络的结构图如图2所示。
[0062]
本发明3d cnn网络模型一共有6层,其中有三个多尺度卷积层,一个联合处理空谱
信息的卷积层,两个全连接层;
[0063]
步骤2.1、对于第一个多尺度卷积层,在空间维度上使用小卷积核,在光谱维度上采用大卷积核,核大小分别为11*3*3,7*2*2,5*1*1,其对应的卷积步长stride分别为(1,1,1),(1,2,2),(1,1,1),卷积填充块padding(5,1,1),(3,3,3),(2,0,0);
[0064]
步骤2.2、对于第二个多尺度卷积层,只对空间信息进行处理,使用1*n1*n1的卷积核,其中n1取值为:1,2,3,即卷积核分别为1*3*3,1*2*2,1*1*1,对应的卷积步长stride分别为(1,1,1),(1,2,2),(1,1,1),卷积填充块padding(0,1,1),(0,3,3),(0,0,0);
[0065]
步骤2.3、对于第三个多尺度卷积层,对其光谱信息进行处理,使用n2*1*1的卷积核,其中n2的三个取值为:11,7,5;卷积核分别为11*1*1,7*1*1,5*1*1,对应的卷积步长stride分别为(1,1,1),(1,1,1),(1,1,1),卷积填充块padding(5,0,0),(3,0,0),(5,0,0);
[0066]
步骤2.4、设置一个联合处理空谱信息的卷积层,卷积层大小为:(3,2,2),卷积步长stride为(1,1,1),卷积填充块padding为(1,0,0),随后接入到池化层中,降维,池化层卷积核为(3,2,2),stride卷积步长为(1,1,1),卷积填充块padding为(0,0,0);
[0067]
步骤2.5、设计两个全连接层:第一个全连接层fc1先将步骤2.4中得到的特征s4映射到1024个节点中,得到特征s5,第二个全连接层fc2将1024个节点中的特征s5,映射到步骤1的高光谱数据集所拥有的类别label中,举例说明,若实验采用pavia university(paviau)数据集,此数据集是由rosis卫星获取的,共有610*340个像素,去除掉受大气、吸水的波段,剩下103个光谱波段,地面分辨率为1.3m,分为沥青asphalt、草地meadows、砾石gravel、树木trees、涂漆金属板painted metal sheets、贫瘠土地bare soil、沥青bitumen、自封砖self-blocking bricks、阴影shadows,总计9个类。在此过程中,就是将特征s5,映射到9类中。实验其他数据集以及其类别label可以见表1所示。
[0068]
步骤3、将所述步骤1中高光谱数据的训练集train输入到步骤2构建的3d cnn的深度学习网络模型中,实现特征提取;
[0069]
步骤3具体结构为:
[0070]
步骤3.1、将步骤1中的训练集train输入到所述步骤2构建的3d cnn的深度学习网络模型的步骤2.1中第一个多尺度卷积层,得到特征s11、s12、s13,将特征s11、s12、s13相加再经过relu激活函数输出得到特征s1,作为第二个多尺度卷积层的输入;
[0071]
步骤3.2、将特征s1经过步骤2.2的第二个多尺度卷积层之后,得到特征s21、s22、s23,将提取到的特征s21、s22、s23相加再经过relu激活函数输出得到特征s2,作为第三个多尺度卷积层的输入;
[0072]
步骤3.3、将特征s2经过步骤2.3的第三个多尺度卷积层之后,得到特征s31、s32、s33,将提取到的特征s31、s32,s33相加再经过relu激活函数输出得到特征s3;
[0073]
步骤3.4、将特征s3输入到步骤2.4的联合处理空谱信息的卷积层中并经过relu激活函数,得到特征s41,随后对特征s41进行池化操作得到特征s42,再次经过relu激活函数得到特征s4。
[0074]
步骤4、将提取到的特征,输入到分类器中学习特征,训练参数,确定网络模型;
[0075]
步骤4具体步骤为:
[0076]
将步骤3.4得到的特征s4输入到步骤2.4中的第一个全连接层fc1,经激活函数作用后再输入到步骤2.4中的第二个全连接层fc2,最后将特征s5拉成对应类别数的一维向
量,在3d cnn深度学习网络模型中训练,训练过程中采用自适应学习率优化算法adagrad算法寻找最优参数,保存模型的权重,adagrad进行参数寻优,它是在sgd(随机梯度下降)上改进得到的。算法流程如下所示:
[0077]
首先,需要设置全局学习率ε,初始参数θ,小常数δ;
[0078]
随后,初始化梯度累积变量r=0;
[0079]
当没有达到停止准则:
[0080]
从训练样本中采集包含m个样本{x
(1)
,

,x
(m)
}的小批量,对应目标为y(i),表示第i个样本的预测输出;
[0081]
计算梯度g:
[0082]
累积平方梯度r:r=r+g

g;
[0083]
计算更新参数θ:
[0084]
应用更新参数θ:θ=θ+δθ;
[0085]
简单来看,adagrad优化算法就是在每次使用一个batch size的数据进行参数更新的时候,算法计算所有参数的梯度,那么其想法就是对于每个参数,初始化一个变量s为0,然后每次将该参数的梯度平方求和累加到这个变量s上,然后在更新参数的时候,学习率变为:
[0086][0087]
ξ是为了保持数值的稳定性,以防出现分母为0的情况。
[0088]
与sgd对比,差别在于adagrad采用了累积平方梯度。设置全局学习率之后,下一次的学习率为全局学习率逐参数的初一历史梯度平方和的平方根,使得每个参数的学习率不同,从而加快训练速度。我们的初始学习率设置为0.01,使用l2正则化参数进行参数下降,小参数δ为0.0005。自适应学习率可以帮助算法再梯度大的参数方向减缓学习速率,而在梯度小的参数方向加快学习速率。
[0089]
最终得到一组3d cnn深度学习模型对应的参数,至此本发明的3d cnn深度学习网络模型搭建完毕。
[0090]
步骤5、对测试样本测试,实现对高光谱数据每个像素点的分类。
[0091]
步骤5具体步骤为:
[0092]
步骤3以及步骤4为训练网络的过程,此过程为测试过程,将测试集test的每个像素点,考虑其周围7*7领域的大小,输入到搭建好的3d cnn深度学习网络模型中,最终输出测试样本的类别标签,完成高光谱图像中地物的分类。
[0093]
地物的分类结果可见图3-图6。
[0094]
对于分类结果的评价采用了一下2个评价指标。
[0095]
1)kappa系数(kappa coefficient):定义在混淆矩阵上的一个评价指标,衡量分类精度的指标,综合考虑混淆矩阵对角线上的元素和偏离对角线的元素,更客观地反映了算法的分类性能,kappa的值在-1~1之间,此值越大说明分类效果越好。
[0096]
2)平均精度aa(average accuracy):将测试集上每类正确分类的像素点个数除以该类所有像素的总数,得到该类的正确分类精度,将所有类别的精度的平均值称为平均精度aa,其值在0~100%之间,此值越大说明分类效果越好。
[0097]
评价结果可见表3-表6。
[0098]
实施例
[0099]
下面结合仿真实验对本发明的效果做进一步的说明:
[0100]
1.仿真实验条件:
[0101]
2.本发明的仿真实验环境平台为:intel(r)core(tm)i7-10700@2.90ghz,ram 16.0gb,python3.8.5,anaconda,torch.version 1.7.1。
[0102]
3.本发明的仿真实验中所使用的高光谱数据集,如下表1所示。
[0103]
表1数据集介绍
[0104][0105]
pavia university(paviau)数据集:是由rosis卫星获取的,共有610*340个像素,去除掉受大气、吸水的波段,剩下103个光谱波段,地面分辨率为1.3m,分为9个类。
[0106]
indianpines数据集:是由aviris卫星获取的,共有145*145个像素,去除掉24个受大气,吸水率等影响的波段,剩下200个波段可供使用,地面分辨率为20m,分为16个类。
[0107]
salinas数据集:是由aviris卫星获取的,共有512*217个像素,去除掉20个覆盖吸水区域波段,最终选择204个波段使用,空间分辨率为3.7m,分为16个类。
[0108]
ksc数据集:是由aviris卫星获取的,共有512*614个像素,去除掉吸水的波段剩下176个波段,其空间分辨率为18m,分为13个类。
[0109]
其数据集中各个类别以及对应的标签如下表2所示。
[0110]
表2不同数据集的类别及其标签
network for hyperspectral image classification[j].2017 ieee international conference on image processing(icip),2017,3904-3908.”中提出的使用一层多尺度策略提取联合空间-光谱信息,一层多尺度卷积核提取光谱信息。
[0120]
3)li等人在其发表的论文“spectral-spatial classification of hyperspectral imagery with 3d convolutional neural network[j].remote sensing,2017,9(1):67.”中提出的一种使用两层卷积池化层对数据进行处理提取特征,最后经过一个全连接层对特征进行分类。
[0121]
4)lee等人在其发表的论文“going deeper with contextual cnn for hyperspectral image classification[j].in ieee transactions on image processing,2017,26(10):4843-4855.”中提出的一种使用多尺度卷积提取特征,将提取的特征拼接到一起,然后,将特征输入到残差网络中并利用1*1*n的核处理防止过拟合。
[0122]
表3在paviau上现有技术与本发明在分类精度上的对比结果
[0123][0124]
从实验结果中he和本文算法可以看出,在使用5%进行训练多尺度策略的结构是有效的,且本文的算法平均准确率和kappa都超出其他对比算法2%,说明在训练样本有限的情况下本文设计的cnn网络模型更能充分挖掘数据中的信息。
[0125]
表4在salinas上现有技术与本发明在分类精度上的对比结果
[0126][0127]
由于salinas数据集中像素点较多,因此选用少量训练样本。从实验结果可以看出,本发明在实验结果上远远优于其他的对比算法。
[0128]
表5在indianpines上现有技术与本发明在分类精度上的对比结果
[0129][0130]
对于此数据集,越简单的数据模型提取特征之后分类的效果更优。20%的训练样本时,he最优,本发明次最佳,可见多尺度策略的有效性,对比来看,本文算法在光谱维度上的大尺度核过滤掉部分有效信息,其次he的小尺度训练核模型简单,效果更优。
[0131]
表6在ksc上现有技术与本发明在分类精度上的对比结果
[0132][0133]
由于ksc数据集的稀疏性,传统的参数寻优算法,容易陷入局部极值,而本发明在于使用adagrad算法自适应学习率,从一定程度上减少陷入局部最优的状况发生。从实验结果可以看出,本发明算法对于ksc数据集远优于其他的对比算法。
[0134]
综和上述仿真实验结果分析,本发明提出的方法能够有效提取高光谱数据的联合空-谱特征,而且对于不同的数据集都有一定的适应性,采用的多尺度策略以及多层网络结构都可以提高平均精度aa,kappa的精度也很优越。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1