基于步态能量图和CNN卷积神经网络的人体步态识别matlab仿真

简介: 基于步态能量图和CNN卷积神经网络的人体步态识别matlab仿真

1.算法描述

   步态能量图(Gait Engery Image, GEI)是步态检测中最非常常用的特征,提取方法简单,也能很好的表现步态的速度,形态等特征。其定义如下:

image.png

   步态周期的判断使用步态剪影的宽、高之比即可,这个值比较容易而且随步态状态呈现周期性变化。

image.png

卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。

   卷积神经网络整体架构: 卷积神经网络是一种多层的监督学习神经网络,隐含层的卷积层和池采样层是实现卷积神经网络特征提取功能的核心模块。该网络模型通过采用梯度下降法最小化损失函数对网络中的权重参数逐层反向调节,通过频繁的迭代训练提高网络的精度。卷积神经网络的低隐层是由卷积层和最大池采样层交替组成,高层是全连接层对应传统多层感知器的隐含层和逻辑回归分类器。第一个全连接层的输入是由卷积层和子采样层进行特征提取得到的特征图像。最后一层输出层是一个分类器,可以采用逻辑回归,Softmax回归甚至是支持向量机对输入图像进行分类。
   CNN卷积神经网络一共有5个层次结构:

输入层
卷积层
激励层
池化层
全连接FC层

1、 输入层:对原始图像数据进行预处理
1)原理:直接接收二维视觉模式,不再需要人工参与提取合适的特征作为输入,它自动地从原始图像数据提取特征、学习分类器,可大大减少开发的复杂性,有助于学习与当前分类任务最为有效的视觉特征。
2)与传统神经网络/机器学习一样,模型需要输入的进行预处理操作,常见的输入层中对图像预处理方式有:
去均值:把输入数据各个维度都中心化为0,即将样本的中心拉回到坐标系原点
归一化:幅度归一化到同样的范围
PCA/白化:用PCA降维,白化即将各个特征轴上的幅度进行归一化

2、 卷积层:通过在原始图像上平移来提取特征
1) 卷积(convolution):是透过两个函数f和g生成第三个函数的一种数学算子,表征函数f与经过翻转和平移的g的乘积函数
2) 卷积层(Convolutional layer),卷积神经网络中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法最佳化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低级特征中迭代提取更复杂的特征。
3)局部感知:网络部分连通,每个神经元只与上一层的部分神经元相连,只感知局部,而不是整幅图像
4、 池化层
1) 池化层夹在连续的卷积层中间,用于压缩数据和参数的量,减少过拟合。即输入的是图像的话,池化层的最主要作用就是压缩图像。(过拟合:过拟合其中一个可能的成因就是模型的vc维过高,使用了过强的模型复杂度(model complexity)的能力(参数多并且过训练)。还有一个原因是数据中的噪声,造成了如果完全拟合的话,也许与真实情景的偏差更大。最后还有一个原因是数据量有限,这使得模型无法真正了解整个数据的真实分布。权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征。)
2) 具体作用:
1.特征不变性:即图像压缩时去掉的信息只是一些无关紧要的信息,留下最能表达图像的特征
2.特征降维:即将最重要的特征抽取出来,将一些冗余信息去。

2.仿真效果预览
matlab2022a仿真结果如下:

image.png
image.png
image.png
image.png

3.MATLAB核心程序

numTrainFiles               = 4;%设置每个类别的训练个数
[imdsTrain, imdsValidation] = splitEachLabel(imds, numTrainFiles, 'randomize');
 
%定义卷积神经网络的基础结构
layers = [
    imageInputLayer([400 150 1]);%注意,400,150为能量图的大小,不能改
    
    convolution2dLayer(3, 8, 'Padding', 'same')
    batchNormalizationLayer
    reluLayer
    
    maxPooling2dLayer(2, 'Stride', 2)
    
    convolution2dLayer(3, 16, 'padding', 'same')
    batchNormalizationLayer
    reluLayer
    
    maxPooling2dLayer(2, 'Stride', 2)
    
    convolution2dLayer(3, 8, 'Padding', 'same')
    batchNormalizationLayer
    reluLayer
    
    fullyConnectedLayer(5)
    softmaxLayer
    classificationLayer];
%设置训练参数
options = trainingOptions('sgdm', ...
    'InitialLearnRate', 0.01, ...
    'MaxEpochs', 1000, ...
    'Shuffle', 'every-epoch', ...
    'ValidationData', imdsValidation, ...
    'ValidationFrequency', 10, ...
    'Verbose', false, ...
    'Plots', 'training-progress');
 
%使用训练集训练网络
net         = trainNetwork(imdsTrain, layers, options);
相关文章
|
7月前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
193 0
|
7月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
484 2
|
6月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
972 0
|
6月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
277 0
|
7月前
|
算法 数据挖掘 区块链
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
208 2
|
6月前
|
传感器 机器学习/深度学习 数据采集
【航空发动机寿命预测】基于SE-ResNet网络的发动机寿命预测,C-MAPSS航空发动机寿命预测研究(Matlab代码实现)
【航空发动机寿命预测】基于SE-ResNet网络的发动机寿命预测,C-MAPSS航空发动机寿命预测研究(Matlab代码实现)
452 0
|
7月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
565 0
|
7月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
180 8
|
7月前
|
机器学习/深度学习 缓存 算法
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
619 1
|
7月前
|
机器学习/深度学习 传感器 算法
【表面粗糙度】基于粒子群PSO算法优化-BP神经网络的表面粗糙度研究(Matlab代码实现)
【表面粗糙度】基于粒子群PSO算法优化-BP神经网络的表面粗糙度研究(Matlab代码实现)
333 7

热门文章

最新文章

下一篇
开通oss服务