问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于多层极限学习机自动编码器的高光谱图像分类MATLAB仿真

创作时间:
作者:
@小白创作中心

基于多层极限学习机自动编码器的高光谱图像分类MATLAB仿真

引用
CSDN
1.
https://m.blog.csdn.net/ccsss22/article/details/142372951

高光谱图像(Hyperspectral Image, HSI)是一种具有数百个连续波段的遥感图像,每个像素点都包含丰富的光谱信息。这些数据在地物分类、目标检测、环境监测等领域有着广泛的应用。然而,高光谱图像的高维特性带来了“维度灾难”问题,使得传统的分类方法难以直接应用。近年来,深度学习技术,特别是自动编码器(Autoencoder, AE)和极限学习机(Extreme Learning Machine, ELM),在高光谱图像分类中表现出色。

高光谱图像的特点

高光谱图像(Hyperspectral Image, HSI)是一种具有数百个连续波段的遥感图像,每个像素点都包含丰富的光谱信息。这些数据在地物分类、目标检测、环境监测等领域有着广泛的应用。高光谱图像特点如下所示:

  • 高维性 :每个像素点包含数百个波段的光谱信息。
  • 冗余性 :相邻波段之间存在高度相关性。
  • 复杂性 :不同地物的光谱特征可能非常相似,增加了分类难度。

极限学习机(ELM)

极限学习机是一种单隐层前馈神经网络,其特点是输入权重和偏置是随机生成的,不需要调整。输出权重通过最小二乘法求解。

多层极限学习机(ML-ELM)

多层极限学习机通过堆叠多个ELM层来构建深层网络。每一层的输出作为下一层的输入。

自动编码器(AE)

自动编码器是一种无监督学习方法,通过重构输入数据来学习数据的低维表示。一个标准的自动编码器由编码器和解码器两部分组成。

  • 编码器 :将输入数据x映射到低维潜在空间z。
  • 解码器 :将潜在空间z映射回原始数据空间x^。

多层自动编码器通过堆叠多个AE层来构建深层网络。每一层的输出作为下一层的输入。

多层极限学习机自动编码器(ML-ELM-AE)

ML-ELM-AE结合了ML-ELM和ML-AE的优点,通过多层结构提取高光谱图像的高级特征,并通过ELM的高效训练能力提高计算效率。假设有一个K层的ML-ELM-AE,每层的输出可以表示为:

其训练过程如下所示:

MATLAB程序

function [Acc, Time] = MY_ML_ELM_AL(varargin)
    img = varargin{1}; % 输入高光谱图像数据
    TrC = varargin{2}; % 输入训练集标签
    TeC = varargin{3}; % 输入测试集标签
    AL_Strtucture = varargin{4}; % 输入主动学习参数结构体
    tot_sim = AL_Strtucture.M/AL_Strtucture.h + 1; % 总迭代次数计算
    Samples = varargin{5}; % 输入采样技术方法
    Fuzziness = varargin{6}; % 输入模糊分类参数
    Parameters = varargin{7}; % 输入ELM参数结构体
    folder = varargin{8}; % 输入结果保存目录
    gt = varargin{9}; % 输入真实标签
    TeC_Locations = cell(tot_sim, 1); % 存储每轮迭代后测试样本的位置
    ELM_Per_Clas = cell(tot_sim, 1); % 存储每轮迭代后的分类结果
    ELM_Tr_Per_Clas = cell(tot_sim, 1); % 存储每轮迭代后的训练集分类结果
    
    Tr = img(TrC(1,:), :);
    Tr = img(TrC(1,:), :);
    TeC_Locations{iter} = TeC;
    [ELM__W_Tr, ELM_W, TrT, TeT, ~,~] = ELM_AE(Tr', TrC(2, :), ...
        Te', TeC(2,:), Parameters.TLs, Parameters.HNs, ...
            Parameters.Regu, Parameters.Rho, Parameters.Sigpara, ...
                Parameters.sigpara1, Parameters.AF);
    ELM_Class_Results.Time(iter,:) = [TrT TeT]; % 存储训练和测试时间
    [~, ELM_Class_Results.map] = max(ELM_W); % 最大概率分类结果
    ELM_Per_Clas{iter} = ELM_Class_Results.map; % 存储当前轮次测试集分类结果
    uc = unique(TrC(2, :)); % 获取唯一类别标签
    [ELM_Class_Results.OA(iter), ELM_Class_Results.kappa(iter), ...
        ELM_Class_Results.AA(iter), ELM_Class_Results.CA(iter,:)] = ...
            My_Accuracy(TeC(2,:)-1, ELM_Class_Results.map-1,(1:numel(uc)));
    [~, ELM_Tr_Class_Results.map] = max(ELM__W_Tr); % 训练集最大概率分类结果
    ELM_Tr_Per_Clas{iter} = ELM_Tr_Class_Results.map; % 存储当前轮次训练集分类结果
    [ELM_Tr_Class_Results.OA(iter), ELM_Tr_Class_Results.kappa(iter), ...
        ELM_Tr_Class_Results.AA(iter), ELM_Tr_Class_Results.CA(iter,:)] = ...
            My_Accuracy(TrC(2,:)-1, ELM_Tr_Class_Results.map-1,(1:numel(uc))); 
    ELM_W = My_Member(uc, ELM_W'); % 计算样本隶属度
    ELM_Fuz = My_Fuzziness(ELM_W); % 计算模糊度
    Pred = ELM_Class_Results.map; % 组合模糊度和分类结果
    Pred  = [Pred; AL_Strtucture.Candidate_Set];
    Pred = [ELM_Fuz'; Pred]';
    [A, ind] = sortrows(Pred, -1); % 按照模糊度降序排列
    [idx, ~] = find(A(:,4) ~= A(:,2));  % 查找误分类样本索引
    index_ELM_minME = ind(idx); % 获取误分类样本在排序后的索引
    if length(index_ELM_minME)>(AL_Strtucture.h)
        xp = index_ELM_minME(1 : AL_Strtucture.h)'; % 取前h个误分类样本
        index_ELM_minME = [index_ELM_minME' ind']; % 重组索引数组
        xp = index_ELM_minME(1 : AL_Strtucture.h)'; % 取前h个样本
    TrCNew = AL_Strtucture.Candidate_Set(:,xp); % 新增至训练集
    AL_Strtucture.Candidate_Set(:,xp) = []; % 从候选集中移除已选样本
    TeC = AL_Strtucture.Candidate_Set; % 更新测试集
    Tr_OA = ELM_Tr_Class_Results.OA';
    Tr_AA = ELM_Tr_Class_Results.AA';
    Tr_kappa = ELM_Tr_Class_Results.kappa';
    Te_OA = ELM_Class_Results.OA';
    Te_AA = ELM_Class_Results.AA';
    Te_kappa = ELM_Class_Results.kappa';
    Acc = [Tr_OA Te_OA Tr_AA Te_AA Tr_kappa Te_kappa];
    Time = ELM_Class_Results.Time;

仿真结果

图1:ML-ELM-AE分类结果

图2:ML-ELM-AE训练时间

图3:ML-ELM-AE测试时间

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号