目录
1.算法运行效果图预览
2.算法运行软件版本
3.部分核心程序
4.算法理论概述
5.算法完整程序工程
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
05_082m
4.算法理论概述
步态识别作为一种生物特征识别技术,具有非接触、远距离和难以伪装等优点,在安防监控、智能门禁等领域有着广泛的应用前景。基于CNN卷积神经网络和GEI步态能量提取的步态识别算法结合了GEI对步态特征的有效提取能力和CNN强大的特征学习与分类能力,能够取得较好的识别效果。同时,研究不同角度下的步态识别性能对于全面评估该算法的实用性和鲁棒性具有重要意义。
1.步态序列获取
2.二值化处理
3.步态能量图计算
步态能量图(GEI)是通过对二值化后的步态序列进行平均得到的,其计算公式为:
GEI将整个步态周期的信息融合到一张图像中,能够有效地表示步态的整体特征。
4.CNN卷积神经网络
卷积层是CNN的核心层,通过卷积核与输入特征图进行卷积操作来提取特征。假设输入特征图为:
5.激活函数
为了引入非线性,在卷积层之后通常会使用激活函数。常用的激活函数如 ReLU(Rectified Linear Unit),其定义为:
6.池化层
池化层用于降低特征图的维度,减少计算量。常见的池化操作有最大池化和平均池化。以最大池化为例,假设池化窗口大小为p*p,步长为s,则最大池化操作的计算公式为:
7.全连接层
8.基于CNN和GEI的步态识别算法流程
数据采集:采集不同角度下的步态图像序列。
GEI 提取:对每个角度下的步态图像序列进行GEI提取,得到不同角度的GEI数据集。
数据预处理:对GEI数据集进行归一化、裁剪等预处理操作,以提高模型的训练效果。
CNN 模型训练:使用预处理后的GEI数据集对 CNN 模型进行训练,优化模型的参数。
模型评估:使用测试集对训练好的CNN模型进行评估,计算不同角度下的识别准确率指标。
5.算法完整程序工程
OOOOO
OOO
O