基于CNN卷积神经网络和GEI步态能量提取的步态识别算法matlab仿真,对比不同角度下的步态识别性能
1.算法运行效果图预览
(完整程序运行后无水印)
本课题所用步态数据库:
测试结果如下:
步态能量图
识别率对比
上图识别率含义是:
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.激活函数
为了引入非线性,在卷积层之后通常会使用激活函数。常用的激活函数如 ReLU(Rectified Linear Unit),其定义为:
8.基于CNN和GEI的步态识别算法流程
数据采集:采集不同角度下的步态图像序列。
GEI 提取:对每个角度下的步态图像序列进行GEI提取,得到不同角度的GEI数据集。
数据预处理:对GEI数据集进行归一化、裁剪等预处理操作,以提高模型的训练效果。
CNN 模型训练:使用预处理后的GEI数据集对 CNN 模型进行训练,优化模型的参数。
模型评估:使用测试集对训练好的CNN模型进行评估,计算不同角度下的识别准确率指标。
- 点赞
- 收藏
- 关注作者
评论(0)