基于卷积神经网络的人体行为识别的开发与设计

本文探讨了利用卷积神经网络进行人体行为识别的技术,介绍了相关理论,如神经元、激活函数,以及在WISDM数据集上的应用,设计并实现了基于Tensorflow的神经网络模型,实验结果显示有一定的准确性,但对某些行为识别仍有提升空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**计算机系统的介绍

一 概要

  随着计算机领域不断的创新、其它行业对计算机的应用需求的提高以及社会对解放劳动力的迫切,人机交互成为人们关注的问题。深度学习的出现帮助了人们实现人机交互,而卷积神经网络是其的代表算法的一种,被普遍应用在计算机视觉领域实现图片识别。人体行为识别是指将一系列数据喂入训练好的神经网络,计算机对数据进行特征提取然后识别分类,其中数据包括视频、图片序列或者传感器数据等。
  本文采用的网络结构包括4层卷积层、1层全连接层、1层最大池化层、1层平均池化层,使用了一维卷积、Relu激活函数、Softmax和Dropout技术。
采用的数据集为WISDM实验室的发布的第一版数据集,参与测试的人数共36人,使用加速度传感器,采样率为20HZ,数据集包含的行为类型共6种:Downstairs下楼梯、Jogging慢跑、Sitting坐、Standing站立、Upstairs上楼梯和Wallking走路。
  本文的篇首分析了研究人体行为识别的背景和研究意义,介绍国内和国外的研究现状。接着详细介绍ANN相关的知识,及两个简单且具有代表性的网络结构。然后阐述CNN的相关理论知识其中包括传统的卷积神经网络结构,再重点介绍用于本文的CNN神经网络模型结构,以及如何用本文的设计的网络模型在WISDM数据集上实现行为识别。
  最后对模型的性能进行分析,得到结论与提出建议,规划展望。
关键词:卷积神经网络、人体行为识别

二、绪论

1.1 研究背景和意义

1.1.1 研究人体行为识别的目的

  根据深圳市最新出台的管理条例我们可以了解到,今年深圳市内公共场合将分布多大200万台的各类摄像头。其中,包括10万多台一类摄像头以及190多万台二三类摄像头。如此庞大的数量,再乘上每天24小时,可以想象监控人员的工作量之大,而人体识别系统的出现可以很好的解决为这一问题从而释放劳动力。计算机通过应用此系统从海量的监控视频中对人的行为进行识别、分类,并在其中提取出异常的行为,及时报警!系统将解放监控人员的劳动力,以及为维护社会提供安全和稳定的服务。
  人体行为识别可以简单的分为特征提取、特征表示和识别分类[1]三个部分。特征提取是指从视频或图片序列中提取人工特征,如STIP(时空兴趣点)[2],BOVW(视觉词袋)[3-4],HOG(方向梯度直方图)[5-7],和MHI(运动历史图像)[8]等。特征表示,则指将提取的特征构成更加具有区分性的描述子特征,并通过一些变换和聚类等技术来实现,如FTT(傅里叶时态变换)[9-10]和K均值聚类[11]等。识别分类,使用像SVM,Adaboost[12]之类的分类器对描述子特征进行分类识别。而卷积网络较全连接网络来说最大的优势是其在计算机视觉领域中可以实现过滤参数,即保留少量重要的参数以及去掉大量不重要的参数,以此使网络模型达到更好的学习效果!

1.1.2 本课题的研究意义

  随着我国社会、经济的显著提高,老百姓不再只担心温饱问题,人身安全得到了前所未有的关注,人们对于视频监控系统的需求直线上升。监控设备我们的日常生活中可谓如影随形,出现在几乎所有的公共场合,无论是小区、超市、商场、饭店甚至城市街道。但是这些监控设备常常只是记录发生的事情,并无法主动的保护人们的安全。因此,人们对于智能监控设备迫切渴望,它不仅能够实时监控24小时内发生的事情,还能通过分析人类行为,判断情况,自动报警,从而避免一些危险的事情发生!本课题的实现对于维护社会安全以及打击犯罪等具有重大的意义。

二、 人工神经网络

  ANN是一种由许多的神经元之间联接而构成的计算模型,它将生物神经元处理信息的过程进行抽象、建立模型,不一样的联接方式组成的网络也不同。

2.1 人工神经元

2.1.1 生物神经元

  深度学习实际就是模拟生物神经元接收处理信息的过程。一个完整的生物神经元的可以分为细胞体和突起,其中突起又包括树突和轴突两种,轴突末端呈树状且没有细胞核的为神经末梢。
  树突:电信号从这些交叉部分进入,接受其他神经元轴突传入的电信号传给细胞体。
细胞核:电信号进入到细胞核后,细胞核会将多个电信号联合在一起进行运算最后得到唯一的电信号。
  轴突:唯一的电信号通过轴突传送。
  神经末梢:将轴突传来的电信号分解成若干个部分,以每个分叉传递给外面的神经元。

2.1.2 神经元

  神经元是NNs(神经网络)最核心也是基本的部分,它是模拟生物神经元的一种数学模型,单个神经元可以接收多个输入数据。两个神经元之间的联接强度决定信号传递的强弱,且联接强度不是固定不变的,它可以伴随训练轮数发生变化。一个基本的神经元模型如图2-2所示:
在这里插入图片描述

图2-2人工神经元结构示意图
图2-2的计算结果为:
在这里插入图片描述

其中为输入信号,为每个输入信号所对应的的权值,为偏置值,为激活函数。

2.1.3 激活函数

  激活函数在ANN模型中起到至关重要的作用,它将非线性激活因素拉入到我们的模型中,提高了模型的表达力,使得诸多非线性模型可以应用在神经网络中。如果模型中没有引入函数,那每层网络都相当于只进行了矩阵相乘,输入输出都是线性组合。以下三种函数是平时使用的最多的:
(1)激活函数Relu
Relu函数,函数数学图形如图2-3所示,因其计算简单且有效,是一种常用于ANN中的激活函数。

Relu函数通常指数学中的斜坡函数,其数学表达式为:
在这里插入图片描述

  由公式可见,其实Relu函数就是分段线性函数,它将所有小于0的数即负数都变为0,而正数和0的不变。这表示如果输入是一个负数,那么激活函数将输出0,则神经元不会被激活。所以同一时间只有部分的神经元被激活,使得神经元具有稀疏激活性,提高计算的效率。
(2)激活函数Sigmoid
函数在定义域内单调递增,其反函数在定义域内也是单调递增。函数的数学图形如2-4所示。
在这里插入图片描述

图2-4 Sigmoid函数数学图形
从图2-4可以看到函数的曲线平滑,则表明函数易于求导,其数学表达式为:
在这里插入图片描述

其求导为:
在这里插入图片描述

再将结果用表示:
在这里插入图片描述

  由公式和数学图形可知,Sigmoid函数在x轴上单调连续、值域为{y|0<y<1}。这意味着此函数可以将任意一个实数映射到(0,1)的区间内,所以当遇到二分类的情况下可以使用函数。但是当函数的输出值接近0或接近1时,输出就不会发生明显变化了,这称为函数接近线性变换。所以函数在特征之间比较相似或者相差较大的情况下实现的效果比较好。
(3)激活函数Tanh
  双曲正切函数其实属于Sigmoid型函数的一种,两个函数的数学图形曲线相似。如果将Sigmoid函数的对称点在y轴上向下移到0,将得到双曲正切函数。函数的数学图形如2-5所示。
在这里插入图片描述

图2-5. Tanh函数数学图形
其数学表达式为:
在这里插入图片描述

与Sigmoid函数的关系为:
在这里插入图片描述

求导为:
在这里插入图片描述

再将结果用表示:
在这里插入图片描述

  由TanH函数数学图形和数学表达式可知,其值域为(-1,1),以0为中心反对称,且原点近似恒等。但是,在输入数据很大或很小时,输出曲线接近线性变换,不利于权重更新容易出现梯度消失和饱和的问题。在遇到二分类问题时,构建的网络模型的隐藏层一般用双曲正切函数,而输出层则用Sigmoid函数。

2.3 BP神经网络

  BP神经网络是最传统的神经网络,也是使用的最运频繁的神经网络,其结构为一层输入层,一层或多层隐含层,一层输出层。它使用了BP反向传播算法,其核心特点是信号前向传播,误差反向传播。所以我们可以将整个神经网络的过程拆分为两段,第一段过程是信号从输入层到隐含层,又从隐含层到达输出层的整个过程,即前向传播。第二段过程是误差从输出经过隐含层到达输出层,期间调节权重和偏置,即反向传播。模型如图2-8所示。
在这里插入图片描述

图2-8 BP神经网络模型
BP神经网络能够有效的解决感知器神经网络不能解决的异或,并且BP神经网络的神经元激活函数既可以使用线性激活函数,又可以使用非线性激活函数。

三、 基于卷积网络的人体行为识别系统的实现

  

3.1 处理数据集

  下载WISDM实验室发布的数据集后,只使用其中的WISDM_ar_v1.1_raw.txt。WISDM数据集内的数据格式如图4-1所示:
在这里插入图片描述

图4-1. WISDM数据集
  从图4-1可以看到每条数据后面都有一个“;”,如果直接加载数据集会导致报错,所以首先要去掉分号,实现代码如图4-1所示:
在这里插入图片描述

图4-2 去分号实现代码
  当加载数据集到模型中,从图4-3,我们可以看到数据集前20条记录,包括用户id,行为名称,时间戳,加速器x轴、y轴、z轴的数据。
在这里插入图片描述

图4-3 WISDM数据集前20条数据
  用matplotlib工具画出数据集中的行为数量和用户数量的柱状图,从图4-4中可以知道,整个数据集中共有六个行为,分为Walking、Jogging、Upstairs、Downstairs、Sitting、Standing,且Walking和Jogging两个的数据多于其他行为的数据。从图4-5知,一共有36个人参与了此次试验。
在这里插入图片描述

  将数据集分割成训练集(Training Set)和测试集(Test Set),使训练集用于模型的训练,测试集用于验证。在这个数据集中,可以以用户名为依据来进行分割,这样就不会导致测试集的数据渗入到训练集中。一般训练集的数据越多模型训练效果的越好,所以将用户名1到28用于训练集,大于28的则用于测试集。实现代码如图4-6所示:
在这里插入图片描述

图4-6 分割数据集实现代码

3.2 处理训练集数据

  在将数据喂入神经网络前,要归一化数据集中的特征,值在0到1之间。要注意的是,传感器x、y、z三轴的数据要用同样的规范化方法,实现代码如图4-7所示:
在这里插入图片描述

图4-7 归一化特征实现代码
  为了使用keras框架,要将数据reshape。定义一个函数接收dataFrame和标签名、每个记录的长度。将一次分割的的步数设置为80,采样率为20hz,所以时间间隔为:time_step=。reshape数据实现代码如图4-8所示:
在这里插入图片描述

图4-8 reshape数据实现代码
  将数据分段后,得到x_train、y_train。从图4-9可知,x_train、y_train分别都有20868条记录,其中x_train中20868条记录中的每一条都是803的二维矩阵。
在这里插入图片描述

图4-9 数据分段后的shape
  将特征数据和标签数据转换成keras可以接受的类型,且对标签进行一次热编码。实现编码如图4-10所示,结果如图4-11所示。
在这里插入图片描述

3.3 构建神经网络模型

  神经网络采用六层结构,包括四个卷积层,一层全连接层,一个输出层(不包括下采样层和输入层)。其中下采样层有两层,一层采用最大下采样,一层采用平均采样。下面详细描述网络结构。
  第一层是卷积层,keras要求第一层输入shape,所以输入的input_shape为803的二维数组。有100个卷积核去卷积,使用的是conv1d一维卷积,卷积时只看纵列卷积核的尺寸为10。使用relu非线性激活函数,padding默认为vaild,strade默认为1。所以输出shape为(None,71,100),一共有3100个参数。
  第二层也是卷积层,同样有100个卷积核去卷积,卷积核的尺寸为10,使用relu非线性激活函数,padding默认为vaild。输出shape为(None,62,100),一共100100个参数。
下一层是一个最大采样层,在纵列的维度上,进行尺度为3的下采样,所以输出shape为(None,20,100)。
  第三层是卷积层, 有160个卷积核去卷积,卷积核的尺寸为10。使用relu非线性激活函数,padding默认为vaild,strade默认为1。输出shape为(None,11,160),共160160个参数。
第四层还是卷积层,160个尺寸为10的卷积核。相关参数与第三层一样。输出shape为(None,2,160),共256160个参数。
  下一层为平均下采样层,输出为(None,160)。
  接下来是dropout层,设定概率为0.5,防止过拟合。
  最后,把全连接层的输出参数放入到一个sofmax分类其中。
CNN结构示意图如图4-13所示,实现代码如图4-12所示:
在这里插入图片描述

四、总结

  行为识别是指计算机从包含人的视频或图片序列中提取人体行为特征,对人的行为进行理解和分类,是计算机视觉领域中应用广泛的方向。随着社会对实现人工智能的日趋迫切,机器学习成为必经的途径,而深度学习作为其代表方向被普遍学习应用。本文基于Tensorflow使用CNN来实现识别,数据来源WISDM实验室。
  本文主要以基于卷积网络的行为识别这一论题为中心进行研究与介绍,主要结论如下:
(1)阐述了基本ANN的相关理论知识,CNN是其派生物,要掌握CNN就得先了解ANN。以ANN为基础自然地衔接了CNN相关的知识,层层递进,更好的了解CNN以及两者之间的差别。
(2)设计了一种卷积网络用于识别行为,基于Tensorflow平台用Python来实现网络,并且卷积层使用的是一维卷积技术。
(3)使用WISDM数据集来实验本文网络,并对实验结果进行了分析。
  本文设计的神经网络得到的准确率在86%左右,应该再提升这个正确率到90%以上。对Jogging识别的准确率高达97%,对Sitting坐、Standing站立、Walking行走三个行为的识别准确率也达到85%以上,但是对Upstairs和Downstairs的识别准确率却连低于80%,尤其对Downstairs下楼梯这个行为的识别准确率只有57%。所以后续应该将模型对上、下楼梯两个行为的识别准确率进行提升。WISDIM中Jogging的数据最多最后得到的准确率也最高,所以增加数据集中上、下楼梯数据的数量是最优先考虑的方法。其次改进网络的结构也是比较优先考虑的方法,包括对激活函数的改进、使用二维或者三维卷积、以及增加网络的层数。而更改数据集也是可考虑的方法,本文使用的数据集基于三维传感器,可更换成基于视频的数据集,或者通过获取局部关节位置来实现识别。以上提出的问题和方法,都值得思考和尝试。

五、 文章目录

目 录

第1章 绪 论 1
1.1 研究背景和意义 1
1.1.1 研究人体行为识别的目的 1
1.1.2 本课题的研究意义 1
1.2 国内外研究现状 2
1.2.1 国内研究 2
1.2.2 国外研究 2
1.3 课题研究方法和内容 3
1.3.1 研究方法 3
1.3.2 研究内容 3
第2章 人工神经网络 4
2.1 人工神经元 4
2.1.1 生物神经元 4
2.1.2 神经元 4
2.1.3 激活函数 5
2.1.4 损失函数 8
2.2 感知器神经网络 8
2.3 BP神经网络 9
第3章 卷积神经网络相关理论知识 11
3.1 前馈神经网络 11
3.2 卷积神经网络 12
3.2.1 卷积层 12
3.2.2 池化层 12
3.2.3 全连接层 13
3.3 传统网络结构 13
第4章 基于卷积网络的人体行为识别系统的实现 15
4.1 处理数据集 15
4.2 4.2处理训练集数据 17
4.3 构建神经网络模型 18
第5章 测试与分析 20
5.1 编译模型 20
5.2 实验结果 20
5.2.1 模型准确率和损失 20
5.2.2 模型识别的正确率 21
5.2.3 混淆矩阵 22
总结与展望 23
参考文献 24
致 谢 26

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值