高光谱图像分类代码_svm分类高光谱图像代码 - CSDN
  • · 转载请注明出处网址~ · 交流讨论、合作咨询请添加微信:yx_imagination ------------------------------------------------分割线----------------------------------------------- #coding: utf-8 ...

    · 转载请注明出处网址~

    · 交流讨论、合作咨询请添加微信:yx_imagination

    ------------------------------------------------分割线-----------------------------------------------

    
    #coding: utf-8
    import spectral
    import matplotlib.pyplot  as plt
    from sklearn.svm import SVC
    import numpy as np
    from scipy.io import loadmat
    '''
    get the KSC data
    
    '''
    import_image = loadmat(r'F:\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\Python_codes\shixiongdechengxu\HSIdata\KSC.mat')['KSC']
    output_image = loadmat(r'F:\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\Python_codes\shixiongdechengxu\HSIdata\KSC_gt.mat')['KSC_gt']
    
    # print import_image.shape
    # print output_image.shape
    
    np.unique(output_image)
    # print np.unique(output_image)
    
    '''
    get the number of each class
    
    '''
    
    dict_k = {}
    
    for i in range(output_image.shape[0]):
        for j in range(output_image.shape[1]):
            if output_image[i][j] in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]:
                if output_image[i][j] not in dict_k:
                    dict_k[output_image[i][j]] = 0
                dict_k[output_image[i][j]] += 1
    # print dict_k   #{1: 761, 2: 243, 3: 256, 4: 252, 5: 161, 6: 229, 7: 105, 8: 431, 9: 520, 10: 404, 11: 419, 12: 503, 13: 927}
    # print reduce(lambda x,y:x+y, dict_k.values())
    #add up all of the valuse in dictionary of dict_k
    
    '''
    show the picture of HSI
    '''
    # ground_truth = spectral.imshow(classes=output_image.astype(int), figsize=(5,5))
    # ksc_color = np.array()
    # ground_truth = spectral.imshow(classes= output_image.astype(int), figsize=(6,6))
    # plt.show(ground_truth)    #  it shows the original picture
    
    
    #if u want the picture shows differents colors , do next
    
    # ksc_color = np.array([
    #     [255,255,255],
    #     [184,40,99],
    #     [74,77,145],
    #     [35,102,193],
    #     [238,110,105],
    #     [117,249,76],
    #     [114,251,253],
    #     [126,196,59],
    #     [234,65,247],
    #     [141,79,77],
    #     [183,40,99],
    #     [0,39,245],
    #     [90,196,111],
    # ])
    # ground_truth = spectral.imshow(classes= output_image.astype(int), figsize=(9,9),colors = ksc_color)
    # plt.show(ground_truth)
    
    '''
    change mat to csv
    '''
    #重构需要用到的类
    
    need_label = np.zeros([output_image.shape[0],output_image.shape[1]])
    new_datawithlabel_list = []
    for i in range(output_image.shape[0]):
        for j in range (output_image.shape[1]):
            if output_image[i][j] != 0 :
                need_label[i][j]=output_image[i][j]
    
    for i in range (output_image.shape[0]):
        for j in range (output_image.shape[1]):
                if need_label[i][j] != 0 :
                    c2l = list (import_image[i][j])
                    c2l.append (need_label[i][j])
                    new_datawithlabel_list.append(c2l)
    
    new_datawithlabel_array = np.array(new_datawithlabel_list)
    
    #标准化数据并储存
    from sklearn import preprocessing
    data_D = preprocessing.StandardScaler().fit_transform(new_datawithlabel_array[:,:-1])
    data_L = new_datawithlabel_array[:,-1]
    
    import pandas as pd
    new = np.column_stack((data_D,data_L))
    new_ = pd.DataFrame(new)
    new_.to_csv(r'F:\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\Python_codes\shixiongdechengxu\HSIdata\KSC.csv',header = False , index = False)
    #the above get the csv data
    
    '''
    Train the model , save the model
    
    '''
    import joblib
    from sklearn.model_selection import KFold , train_test_split
    from sklearn import metrics
    
    #split train and test data
    data = pd.read_csv('F:\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\Python_codes\shixiongdechengxu\HSIdata\KSC.csv', header= None)
    data = data.as_matrix()
    data_D = data [:,:-1]
    data_L = data[:,-1]
    data_train, data_test, label_train, label_test = train_test_split(data_D,data_L,test_size= 0.5)
    
    #train the model
    clf = SVC(kernel= 'rbf', gamma = 0.125, C= 16)
    clf.fit(data_train,label_train)
    pred = clf.predict(data_test)
    accuracy = metrics.accuracy_score(label_test,pred)*100
    print accuracy
    
    #储存学习模型
    joblib.dump(clf,'KSC_MODEL.m')
    
    
    '''
    
    模型预测,在图中标记
    
    '''
    #
    testdata = np.genfromtxt('F:\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\Python_codes\shixiongdechengxu\HSIdata\KSC.csv',delimiter= ',')
    # mat文件的导入
    import matplotlib.pyplot as plt
    import numpy as np
    from scipy.io import loadmat
    import spectral
    
    
    # KSC
    input_image = loadmat('F:\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\Python_codes\shixiongdechengxu\HSIdata\KSC.mat')['KSC']
    output_image = loadmat('F:\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\Python_codes\shixiongdechengxu\HSIdata\KSC_gt.mat')['KSC_gt']
    
    
    testdata = np.genfromtxt('F:\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\Python_codes\shixiongdechengxu\HSIdata\KSC.csv',delimiter=',')
    data_test = testdata[:,:-1]
    label_test = testdata[:,-1]
    
    # /Users/mrlevo/Desktop/CBD_HC_MCLU_MODEL.m
    clf = joblib.load("KSC_MODEL.m")
    
    predict_label = clf.predict(data_test)
    accuracy = metrics.accuracy_score(label_test, predict_label)*100
    
    print accuracy # 97.1022836308
    
    
    # 将预测的结果匹配到图像中
    new_show = np.zeros((output_image.shape[0],output_image.shape[1]))
    k = 0
    for i in range(output_image.shape[0]):
        for j in range(output_image.shape[1]):
            if output_image[i][j] != 0 :
                new_show[i][j] = predict_label[k]
                k +=1
    
    # print new_show.shape
    
    # 展示地物
    ground_truth = spectral.imshow(classes = output_image.astype(int),figsize =(9,9))
    ground_predict = spectral.imshow(classes = new_show.astype(int), figsize =(9,9))
    plt.show(ground_truth)
    plt.show(ground_predict)
    
    print 'Done'
    展开全文
  • 高光谱图像(HSI)+深度学习 分类 背景 添加链接描述 光谱的图像具有光谱信息和空间维度信息。光谱维度信息具有信息冗余(需要对原始光谱信息进行降维分布),空间信息可利用传统的CNN卷积。 目前的高光谱图像数据...

    背景

    知乎背景描述
    高光谱的图像具有光谱信息和空间维度信息。光谱维度信息具有信息冗余(需要对原始光谱信息进行降维分布),空间信息可利用传统的CNN卷积。

    目前的高光谱图像数据集

    知乎高光谱数据集
    CSDN高光谱数据集
    1:Washington DC Mal,Indian Pine等
    https://engineering.purdue.edu/~biehl/MultiSpec/hyperspectral.html

    2:Indian Pines, Salinas,Pavia Centre and University, Cuprite 等
    http://www.ehu.eus/ccwintco/index.php?title=Hyperspectral_Remote_Sensing_Scenes

    3:hydice的urban 等
    http://www.erdc.usace.army.mil/Media/Fact-Sheets/Fact-Sheet-Article-View/Article/610433/hypercube/#

    4:cave 数据集:
    http://www1.cs.columbia.edu/CAVE/databases/multispectral/

    5: icvl 数据集:
    http://icvl.cs.bgu.ac.il/hyperspectral/

    6:nus 数据集:
    http://www.comp.nus.edu.sg/~whitebal/spectral_reconstruction/index.html

    #传统高光谱图像的降维方法
    一、无监督光谱降维方法
    1、主成分分析PCA
    2、局部线性嵌入
    3、保邻嵌入
    二、有监督 光谱降维方法
    1、线性判别分析(lineardiscriminantanalysis)(LDA)
    LDA探索最佳投影以最大限度地扩大类间距离,同时最小化类内距离。
    2、非参数加权特征提取(NWFH)
    NWFE引入了在决策边界附近带有训练样本的非参数分散矩阵
    3、局部Fish判别分析((local Fisher discriminantanalysis) (LFDA)
    LFDA通过分配更大的权重给更紧密连接的样本来扩展LDA
    4、局部判别嵌入(local discriminant embeding)(LDE)
    LDE通过避开不同类的相邻数据点来寻求最佳投影以最大化类间离散矩阵

       在HSI中,特别是在高空间分辨率的HSI中,光谱信息在类内(如有阴影的屋顶)和类间的相似性或混淆性(如道路和屋顶在光谱域内是相似的)方面表现出很大的差异。
    

    基于高光谱图像的深度学习方法

    1、参考文献:Spectral–Spatial Feature Extraction for Hyperspectral Image Classification: A Dimension Reduction and Deep Learning Approach
    在这里插入图片描述
    他提出的基于ssfc的HSI分类算法结构如图1所示。它可以分为两个主要部分。在第一步中,分别提取光谱和空间特征。对于光谱方法,通常推荐DR方法来降低光谱维数;具体来说,本研究选择BLDE算法来寻找HSI图像的低维表示。利用CNN框架自动提取与空间相关的深层次特征。然后,利用基于cnn的空间特征叠加基于blde基的光谱特征,得到所提出的光谱空间特征。最后将叠加后的特征输入LR分类器,得到分类结果。

    展开全文
  • 1.高光谱图像与多光谱图像的异同 相同点: 多光谱和高光bai谱都属于光谱成像du技术的一种,在图像处理领域zhi都有广泛的应用。 不同点: 1、分辨率不同 多光谱成像——光谱分辨率在 delta_lambda/lambda=0.1数量级,...

    1.高光谱图像与多光谱图像的异同

    相同点:
    多光谱和高光谱都属于光谱成像技术的一种,在图像处理领域都有广泛的应用。

    不同点:

    1、分辨率不同

    多光谱成像——光谱分辨率在 delta_lambda/lambda=0.1数量级,这样的传感器在可见光和近红外区域一般只有几个波段。
    高光谱成像—— 光谱分辨率在 delta_lambda/lambda=0.01数量级,这样的传感器在可见光和近红外区域有几卜到数百个波段,光谱分辨率可达nm级。

    2、波段不同

    多光谱图像通常指3到10个波段。每个波段都是使用遥感辐射计获得的。

    高光谱图像由更窄的波段(10-20 nm)组成,光谱图像可能有数百或数千个波段。一般来说,它来自成像光谱仪。

    2.高光谱图像分类的基本原理

    不同物质在不同波段光谱信息下具有不同的表现。对于某一物质,不同的光谱波长,可能对应有不同的光谱值,可以绘制一条关于光谱波长与光谱值间的关系曲线。根据曲线的不同,对高光谱图像的物质进行分类。

    3.高光谱图像分类的两大问题

    (1)大空间光谱特征的可变性(不确定性)
    由许多原因导致,例如光照、环境、大气、时间条件的变化。
    (2)可获取训练样本数量有限
    导致一些方法的效果适用性降低,分类器性能低下。

    4.高光谱图像分类——深度学习模型

    (1)SAEs(堆栈自动编码器SAE)
    自动编码器AE是堆栈自动编码器SAE的重要组成部分。图2展示了一个AE由一个可视层的输入d,一个隐藏层的单元L,一个重构层的单元d。该训练程序有两步。第一步,输入层的x被映射为隐藏层的h(编码)。第二步,隐藏层的h被映射为重构层的y(解码)。这两步也被定义为:
    在这里插入图片描述
    whwy分别是从输入层到隐藏层、隐藏层到输出层的权重值;bhby分别表示隐藏层单元、输出层单元的偏差,函数f()表示为一个处理动作函数。利用x,y间的欧式距离估计重构误差,用||x-y||最小化重构误差,估计输入数据x
    图2
    SAE堆栈自动编码器可由多层AEs叠加而成,将一层的输出附加到下一层的输入。图3演示了一个SAE的简单表示,这个SAE与随后的逻辑回归分类器相连接。SAE可以作为光谱分类器,每个像素向量都可以作为输入。
    在这里插入图片描述
    (2)DBNs(深度置信网络)
    受限玻尔兹曼机(RBM)是一种分层训练模型,被认为是DBN的主要构件。图4展示了一个RBM,主要由两层网络组成,可视单元v和隐藏单元h。给定这些单位,单位的联合构型的能量可以定义为:

    图4
    其中,wij表示为可视单元i与隐藏单元j间的权重,bi、aj分别是可视单元、隐藏单元的偏差值。权重wij是用散度来学习的。在RBM中,给定可视状态的隐藏单元是有条件独立的,因此,当给定数据向量时,可以从后验分布中获得无偏样本。
    为了增强单独一个RBM的特征表现能力,多个RBM依次堆叠在一起,就组成了一个DBN,DBN可以通过学习来提取训练数据的深层层次表示。图5展示了一个DBN由多个RBN层组成。为了把DBN当做分类器使用,可以在该网络的末端加入一个逻辑回归层来构成一个光谱分类器。
    图5
    (3)CNNs(卷积神经网络)
    CNNs卷积神经网络的思路来源于人的视觉系统结构。与全连接网络相比,CNNs利用局部连接来提取图像上下文二维空间特征。此外,通过权重共享机制可以显著降低网络参数。具有代表性的CNNs结构如图6所示,它主要由一堆交替的卷积层和池化层与一些完全连接的层组成。在卷积层,带有空间上下文信息的图像小块与内核进行卷积。池化层减小了卷积层生成的特征图的大小,以便获得更具有一般性、更抽象的特征。最后,这些特征图通过几个完全连接层处理,进一步转化成特征向量。这里,每个组件描述如下:
    图6
    (1) 卷积层:一般来说,卷积层是CNNs最重要的组成部分。在每一个卷积层中,输入多维数据集与多个可学习过滤器进行卷积运算,生成多个特征图(映射)。特别地,输入多维数据集X,尺寸为mnd,其中m*n是X的空间尺寸,d是通道数,xi是X的第i个特征图。假设在本卷积层有k个滤波器,第j个滤波器可以由权值wj和偏置值bj特征化。该卷积层的第j个输出可由下式表示:
    在这里插入图片描述
    号表示卷积运算,f()是用来改善网络非线性的激活函数。近年来,ReLU[31]已成为最常用的激活函数。ReLU主要有两个优点:收敛速度快,对梯度消失具有鲁棒性。ReLU的表达式为:
    在这里插入图片描述
    (2) 池化层:在卷积神经网络中,由于图像中存在冗余信息,在多个卷积层的后边周期性地加入池化层。通过池化操作,可以有效地减小特征图的空间尺寸,同时减少了网络的参数的个数和计算量。通过池化操作,特征图的尺寸逐渐减小,提取的特征变得更加抽象。特别地,对于一个p
    p大小的窗口即为S,平均池化操作一个表示为:
    在这里插入图片描述
    其中F是S中元素的个数,xij是位置(i,j)对应的激活值。
    (3) 完全连接层:在池化层之后,将前一层的特征映射进行平铺,并反馈给完全连接层。在传统的神经网络中,完全连接层通过重新映射特征图到n维向量来提取更深入、更抽象的特征。一般来说,完全连接层可以被定义为:
    在这里插入图片描述
    其中X,Y,W,b分别是输入、输出、权重、偏差。
    (4)RNNs(递归神经网络)
    与前馈神经网络对比,RNN利用循环隐藏状态,使得其每一步的激活都依赖于前一步的激活,来识别数据序列中的模式和动态时间特征。
    X是一系列连续的数据,xi是第i次的数据值。在时间序列t中,可循环隐藏状态h如下所示:
    在这里插入图片描述
    f1是一个非线性函数(一个逻辑s形函数或双曲正切函数)。按照惯例,上式中的可循环隐藏状态可由下式更新计算:
    在这里插入图片描述
    其中w、u分别表示当前步步骤输入的系数矩阵和上一步循环隐藏单元激活的系数矩阵,bh表示对应的偏差向量。状态h将在步骤t被用来预测y(t):
    在这里插入图片描述
    其中,f2是一个非线性函数。p是当前步骤中循环隐藏单元激活的系数矩阵,by是对应的偏差向量。可以看到,可以使用不同的非线性函数f1、f2来估计h(t)、y(t)。传统的RNN神经网络在处理长期序列数据时,由于梯度的消失或爆炸,其性能会有所下降。为看解决这一问题,出现了长短时内存(LSTM)和门控递归单元(GRU)。
    (5)GANs(生成性对抗网络)

    GANs是相对较新的模型,包括一个生成模型G和一个区分模型D。模型G和模型D以一种对抗性的方式进行训练。模型G尽可能真实地生成伪输入,而模型D区分真输入和伪输入。通过两种模型的对抗和竞争,鉴别器的训练过程将持续且有效。GAN的体系结构如图7所示:
    在这里插入图片描述
    生成器G可以接纳随机噪声z作为输入数据,生成伪数据G(z)。鉴别器D估计x是真样本的概率;最大化log(D(x)),即训练样本分配正确标签的概率,来训练鉴别器D。最小化log(1-D(G(z)))训练生成器G。因此,GAN的目标是解决以下极大极小问题:
    在这里插入图片描述
    其中E是期望值算子。由于CNN的优势,在相关文献中提出了在G和D中使用深度卷积网络的深度卷积GAN架构。虽然GAN是一种很有前途的技术,但是初始鉴别器D只能估计出输入的样本是否为真。因此,GAN并不适用于多类别的分类操作。Odena在论文中提出了一种可以用于分类的辅助分类器GAN,将D修改为一个能够输出多类标签概率的softmax分类器。
    一个已提出的基于GAN的HIS分类框架如图8所示。从图8,我们可以看到除了噪声z之外,生成器G也接纳HIS类标签c;并且G的输出可被定义为x(fake)=G(z)。将带有相应类标签的训练样本和G生成的伪数据作为鉴别器D的输入数据。客观函数包含两部分:Ls 和 Lc。
    在这里插入图片描述
    因此,对D进行优化,使得Lc+Ls最大;对G进行优化,使得Lc-Ls最大。
    在这里插入图片描述

    展开全文
  • 代码分析】用于高光谱图像分类的DRCNN代码解析

    千次阅读 热门讨论 2019-04-22 15:55:43
    **这篇文章是DRCNN高光谱图像分类《Diverse Region-Based CNN for Hyperspectral Image Classification》论文解析https://blog.csdn.net/weixin_44794449/article/details/88718383**的相关文章,主要是解析了这篇...

    **这篇文章是DRCNN高光谱图像分类《Diverse Region-Based CNN for Hyperspectral Image Classification》论文解析https://blog.csdn.net/weixin_44794449/article/details/88718383**的相关文章,主要是解析了这篇论文的代码构成以及相关解析

    代码文件的构成

    在这里插入图片描述
    用于高光谱分类的代码构成如上图所示,由五个文件构成。其中,construct_multi_mat.py用于构造实验所需要用到的训练集和测试集,data_util.py用于文件的读取与存储操作以及路径操作,HSI_multi_SPA.py用于对六个卷积神经网络分支的训练和测试操作,HSI_multiSPA_union.py用于对整合了六个卷积神经网络分支的大的网络进行训练和测试,main.py分别调用了以上两个函数并对他们的参数进行了设置,控制程序的运行过程。

    construct_multi_mat.py的构成和解析

    首先从main函数开始
    在这里插入图片描述
    首先将数据集先读取到mdata中,然后将mdata转换为矩阵,然后将转换好的数据集进行标准化操作,此处调用sample_wise_standardization函数
    在这里插入图片描述
    由于要对整个图像划分区域后取patch操作,因此需要对原图像周围进行padding,此处调用image_pad函数,该函数可以对图像以及标签进行padding操作,此处使用了numpy中的pad函数,对于通道数为3的图像来说,采用对称填充的方式(这里的通道数是经过PCA将为之后的高光谱图像的通道),而对于标签来说,同样要进行padding操作,而对于标签使用的是常量填充
    在这里插入图片描述
    然后接下来进入构造函数的主体部分,构造用于训练和测试的patch的函数construct_spatial_patch
    在这里插入图片描述
    首先需要对所构造的数据集的类型进行判断,文中提到要构造六个针对不同区域的卷积神经网络分支来进行训练和测试,如果是训练集的构造,则首先读获取总共有有多少累,然后每个类分别划分上下左右中间全局六个区域,这里主要将区域对应的像素值放到列表中,在所有类的patch全部取完之后将他们转换成矩阵,然后返回。
    在这里插入图片描述
    对于测试集的构造的主题查不多,都是分别在六个区域取patch后放入列表然后又转化成矩阵最后返回
    论文中提到本文的创新之处有一点是通过数据增强手段增加了样本的数量,而不同于普通的旋转剪切等手段,本文是用了添加高斯噪声的方式来时样本数量翻倍,而在代码中主要是通过random_flip这一函数实现
    在这里插入图片描述
    首先将六个区域patch数据首先读进去,然后进行逐像素的遍历,datas代表了没有添加高斯噪声的patch数据以及添加了高斯噪声之后的patch数据,他们按照逐像素的原则一起放进了datas中,其他的xrs、xls、xus、xbs、xcs也同理,而标签为两个同样的标签一起放入label中(添加高斯噪声并不改变标签),而numpy中预置了添加高斯噪声的函数numpy.fliplr()。

    在这里插入图片描述
    之后将他们打乱顺序后返回,至此数据集的构造完成了。执行此程序后生成了mask_train.H和mask_test_patch.H
    程序代码的调用主要是通过main.py这个函数来完成,其构造为
    在这里插入图片描述
    其作用主要是封装好一些参数之后通过循环将这些封装好的参数送入到HSI_multi_SPA.py和HSI_multiSPA_union.py中,其中第一个函数为留个小网络分支的训练和测试用的数据,第二个函数是将六个生成好的网络模型放在一起形成大网络的训练和测试用的函数。
    首先来看HSI_multi_SPA这个文件,这个文件主要是负责六个分支小网络的训练和测试用的。
    在这里插入图片描述
    首先是为这个命令的调用设置了一些参数,epoch用来控制悬链过程中的epoch轮数,mode用来控制是训练还是测试,train和testkey用来去顶数据集中的数据的title(这个在构造数据集中已经设置好了)ksize1和ksize2用来控制每个区域的行和列的大小。
    在这里插入图片描述
    之后定义了用来训练上下左右以及全局区域的网络结构如下图
    在这里插入图片描述
    其中的输入到3x3的128个卷积核的卷积层为conv0_spat,输入到5x5的64个卷积核的卷积层为conv5_spat,在conv0_spat进行皮归一化和relu函数激活之后在进行的3x3的64 个卷积核的卷积层为conv6_spat,3x3的128个卷积核的卷积层为conv1_spat,在进行relu激活在进行1x1的128 个卷积核的卷积之后形成的是conv3_spat,最后将这三个卷积层进行叠加使用的是L.concatenate([conv3_spat,conv6_spat,conv5_spat],axis=-1),最后将其进行归一化后拉成一个向量,使用softmax输出分类结果,齐总顶一顶鹅学习率的大小为0.001,使用的loss是交叉熵损失以及SGD随机梯度下降法。
    对于中央区域来说文中使用了另外一种网络结构
    在这里插入图片描述
    对应的函数名为SMALL_net
    在这里插入图片描述
    其结构比较简单,就是单纯的两次卷积之后全连接,其代码表示也比较清楚,就不再多说了。
    在这里插入图片描述
    之后作者定义了一个函数作为两种网络结构的选择器,如果patch得分大小为3x3则使用上面定义的small_net,若为其他的patch大小则使用gw_net,这也与论文中所写的思路相同。
    在这里插入图片描述
    然后定义了训练和测试函数,这里多为读取数据以及保存训练模型的操作,其中定义了epoch,学习率,验证集比率等参数,而测试函数中则定义了读取模型结构和权重以及预测函数,这里也不在多说了。
    与HSI_multi_SPA这个文件对应,HSI_multi_SPA-union这个问价对应的则是融合这六个网络分支的大网络的训练以及测试,其结构与上个文件的结构几乎一致,主要是构造了UNION_net这个函数
    在这里插入图片描述
    在这里插入图片描述
    这里的函数主要是针对六个已经训练完成的网络进行了读取,并用concatenate函数将他们组合在一起,然后把全连接,在BN归一化,再relu激活,在全连接等等操作,最后把整合整个网络结构,定义其学习率等参数,最后返回模型。
    在这里插入图片描述
    其他部分与六个分支网络的并无不同,因此这个文件不在详细说明了,整个代码的结构解析基本就到此结束了。
    结束(2019.4.22完成)

    展开全文
  • matlab实现用cnn高光谱图像分类
  • 高光谱图像分类(三)分类流程

    万次阅读 多人点赞 2017-04-11 19:04:36
    如何利用稀疏表示进行高光谱图像分类呢?前面我们已经了解了高光谱图像分类的一些基本概念,那这篇文章当中将讲解高光谱图像分类具体的流程是怎么样的。以下是高光谱图像分类的具体详细步骤: 1.导入indian_pines...
  • 参考高光谱图像分类python代码 我建立了两个python文件: 1.data.py (负责加载.mat文件,将它转化为,csv文件) 2.train and classify.py (训练并观察分类效果) 下面分别是两段代码(对前面的引用代码做了轻微改动...
  • 基于卷积神经网络的高光谱图像分类研究,基于卷积神经网络的高光谱图像分类研究
  • 用于高光谱图像分类的深度卷积神经网络     摘要:近来,卷积神经网络已经在各种视觉任务中表现出优异的性能,包括常见二维图像的分类。 在本文中,采用深卷积神经网络直接在光谱域中对光谱图像进行分类。更...
  • 高光谱图像分类

    2020-07-30 23:31:46
    讲述高光谱图像分类方法,特征,判据、准则,算法等等
  • 近年来,高光谱图像分类得到了广泛的研究,然而,光谱遥感图像特征维度、波段间相关性强以及光谱混合等特性给高光谱图像分类带来一些困难。目前有机器学习、模式识别、图像处理、深度学习等知识应用于高光谱图像...
  • 本文中,提出了一个用于光谱和空间特征的高光谱图像分类的新颖的深度学习框架。 该框架是主成分分析,深卷积神经网络(DCNN)和逻辑回归(LR)的混合。 用于分层提取深度特征的DCNN首次被引入高光谱图像分类。 所...
  • 高光谱图像分类(二)稀疏表示

    千次阅读 2016-10-18 15:11:55
    什么是稀疏系数?什么是字典?稀疏系数如何表示信号?下图是一个稀疏表示模型 1.稀疏系数: 先看到右边的α, 白色小格子表示0,有色小格子表示非0数(0,1),稀疏的意思就是非零系数很少的含义。...
  • 高光谱图像的SVM分类

    2020-08-21 13:59:21
    #本人小菜鸟一只,目前在学习高光谱图像分类的相关知识,感觉分享的代码实在少得可怜,前几天看了几篇大佬的代码分享,若有所思,按自己看得懂的方式重新整理了一下,分享一下。 #这也是我写的第一篇博客,之后可能...
  • 深度学习与高光谱图像分类

    千次阅读 2020-06-12 16:17:13
    图片来源网络本期为大家推介的是北京理工大学李伟教授关于高光谱图像分类的深度卷积网络方法的报告-Deep Convolutional Neural Network for Hyperspe...
  • 主动学习
  • 论文地址基于深度卷积神经网络的光谱遥感图像分类西华大学学报同时利用高光谱图像的光谱信息和空间信息的深度卷积神经网路分类模型。基于深度学习到的深度特征,用逻辑回归分类器进行分类训练。高光谱图像面临的...
  • 有哪位大神有高光谱图像分类程序,刚入门,迫切想了解![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif)![图片说明]...
  • 高光谱图像处理之目标检测技术一、高光谱图像处理之目标检测1、高光谱图像目标检测的发展趋势和研究现状: 20世纪80年代末,美国的一些研究机构开始利用高光谱图像数据进行目标检测方面的研究。自上世纪九十年代,...
1 2 3 4 5 ... 20
收藏数 1,750
精华内容 700
关键字:

高光谱图像分类代码