基于CNN卷积神经网络和GEI步态能量提取的步态识别算法matlab仿真,对比不同角度下的步态识别性能

举报
简简单单做算法 发表于 2025/06/16 16:06:15 2025/06/16
【摘要】 1.算法运行效果图预览(完整程序运行后无水印) 本课题所用步态数据库:  测试结果如下: 步态能量图  识别率对比   上图识别率含义是: 1.使用0度的数据库进行训练,分别测试0度,45度,90度。 2.使用45度的数据库进行训练,分别测试0度,45度,90度。 3.使用90度的数据库进行训练,分别测试0度,45度,90度。 4.使用0度,45度,90度三种样本混合进行训练,分别测试混合样...

1.算法运行效果图预览

(完整程序运行后无水印)

 

本课题所用步态数据库:

 

1.jpg

 

测试结果如下:

 

步态能量图

 

2.jpg

 

识别率对比

 

3.jpeg

4.jpeg

 

 上图识别率含义是:

 

1.使用0度的数据库进行训练,分别测试0度,45度,90度。

 

2.使用45度的数据库进行训练,分别测试0度,45度,90度。

 

3.使用90度的数据库进行训练,分别测试0度,45度,90度。

 

4.使用0度,45度,90度三种样本混合进行训练,分别测试混合样本,0度样本,45度样本,90度样本。

 

2.算法运行软件版本

matlab2022a/matlab2024b

 

3.部分核心程序

(完整版代码包含详细中文注释和操作步骤视频)

 

%使用训练集训练网络
net         = trainNetwork(imdsTrain, layers, options);
 
 
%识别标准的步态
%对验证图像进行分类并计算精度
YPred       = classify(net, imdsValidation);
YValidation = imdsValidation.Labels;
 
accuracy0    = 100*sum(YPred == YValidation) / numel(YValidation)
 
 
digitDatasetPath = ['步态能量图\0\'];
imds = imageDatastore(digitDatasetPath,'IncludeSubfolders', true, 'LabelSource', 'foldernames');
numTrainFiles               = 3;%设置每个类别的训练个数
[imdsTrain, imdsValidation] = splitEachLabel(imds, numTrainFiles, 'randomize');
YPred       = classify(net, imdsValidation);
YValidation = imdsValidation.Labels;
 
accuracy1    = 100*sum(YPred == YValidation) / numel(YValidation)
 
 
 
digitDatasetPath = ['步态能量图\45\'];
imds = imageDatastore(digitDatasetPath,'IncludeSubfolders', true, 'LabelSource', 'foldernames');
numTrainFiles               = 3;%设置每个类别的训练个数
[imdsTrain, imdsValidation] = splitEachLabel(imds, numTrainFiles, 'randomize');
YPred       = classify(net, imdsValidation);
YValidation = imdsValidation.Labels;
 
accuracy2    = 100*sum(YPred == YValidation) / numel(YValidation)
 
 
%识别90度角度的步态
digitDatasetPath = ['步态能量图\90\'];
imds = imageDatastore(digitDatasetPath,'IncludeSubfolders', true, 'LabelSource', 'foldernames');
numTrainFiles               = 3;%设置每个类别的训练个数
[imdsTrain, imdsValidation] = splitEachLabel(imds, numTrainFiles, 'randomize');
YPred       = classify(net, imdsValidation);
YValidation = imdsValidation.Labels;
 
accuracy3    = 100*sum(YPred == YValidation) / numel(YValidation)
 
 
figure;
bar([accuracy0,accuracy1,accuracy2,accuracy3]);
xlabel('0:混合步态,  1:标准步态,  2:45度角度步态,  3:90度角度步态');
ylabel('识别率');
 
 
save R4.mat accuracy0 accuracy1 accuracy2 accuracy3

 

4.算法理论概述

       步态识别作为一种生物特征识别技术,具有非接触、远距离和难以伪装等优点,在安防监控、智能门禁等领域有着广泛的应用前景。基于CNN卷积神经网络和GEI步态能量提取的步态识别算法结合了GEI对步态特征的有效提取能力和CNN强大的特征学习与分类能力,能够取得较好的识别效果。同时,研究不同角度下的步态识别性能对于全面评估该算法的实用性和鲁棒性具有重要意义。

 

5.jpg

 

 5.激活函数

 

为了引入非线性,在卷积层之后通常会使用激活函数。常用的激活函数如 ReLURectified Linear Unit),其定义为:

 

6.jpg

 

8.基于CNNGEI的步态识别算法流程

 

数据采集:采集不同角度下的步态图像序列。

 

GEI 提取:对每个角度下的步态图像序列进行GEI提取,得到不同角度的GEI数据集。

 

数据预处理:对GEI数据集进行归一化、裁剪等预处理操作,以提高模型的训练效果。

 

CNN 模型训练:使用预处理后的GEI数据集对 CNN 模型进行训练,优化模型的参数。

 

模型评估:使用测试集对训练好的CNN模型进行评估,计算不同角度下的识别准确率指标。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。