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

概要

随着计算机领域不断的创新、其它行业对计算机的应用需求的提高以及社会对解放劳动力的迫切,人机交互成为人们关注的问题。深度学习的出现帮助了人们实现人机交互,而卷积神经网络是其的代表算法的一种,被普遍应用在计算机视觉领域实现图片识别。人体行为识别是指将一系列数据喂入训练好的神经网络,计算机对数据进行特征提取然后识别分类,其中数据包括视频、图片序列或者传感器数据等。

本文采用的网络结构包括4层卷积层、1层全连接层、1层最大池化层、1层平均池化层,使用了一维卷积、Relu激活函数、Softmax和Dropout技术。

采用的数据集为WISDM实验室的发布的第一版数据集,参与测试的人数共36人,使用加速度传感器,采样率为20HZ,数据集包含的行为类型共6种:Downstairs下楼梯、Jogging慢跑、Sitting坐、Standing站立、Upstairs上楼梯和Wallking走路。

本文的篇首分析了研究人体行为识别的背景和研究意义,介绍国内和国外的研究现状。接着详细介绍ANN相关的知识,及两个简单且具有代表性的网络结构。然后阐述CNN的相关理论知识其中包括传统的卷积神经网络结构,再重点介绍用于本文的CNN神经网络模型结构,以及如何用本文的设计的网络模型在WISDM数据集上实现行为识别。

最后对模型的性能进行分析,得到结论与提出建议,规划展望。

关键词:卷积神经网络、人体行为识别

一、研究背景与意义

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小时内发生的事情,还能通过分析人类行为,判断情况,自动报警,从而避免一些危险的事情发生!本课题的实现对于维护社会安全以及打击犯罪等具有重大的意义。

二、卷积神经网络相关理论知识

CNN是多层感知器的一种扩展,能够有效地帮助我们解决图像识别,接下来将详细阐述与其相关的理论知识。

3.1 前馈神经网络

前馈神经网络,又称为前向神经网络,是最简易的网络结构之一。多个神经元排列组成一层,多个层组成前馈神经网络。其中,每个神经元只接受前一层输出的信息,并作为下一层的输入进行传递。

图3-1的神经元 接受n=4个输入(x1,x2,x3,x4),其输出为

其中为输入向量,为权重向量,为偏置,函数为激活函数。

图3-1中的神经网络,包含了1层输入层,2层隐藏层和1层输出层,该神经网络的层数为3层。所有参数w的个数余所有参数b的之和为总参数的个数,第一层用四行五列的二阶张量表示,第二层用五行三列的二阶张量,第三层用三行一列的二阶张量。总参数 = 4×5+5 + 5×3+3 +3×1+1 = 47。

一个前馈神经网络有一个输入层,然后接零个或多个隐藏层,最后接一个输出层。输入层接受待处理的数据,经过层层隐藏层,神经元进行计算,输出层输出结果。

前向神经网络,以神经元为基本单位,结构简单,大部分都是学习网络。常用的网络有:感知器网络、BP网络和RBF网络。

3.2 卷积神经网络

CNN是前馈神经网络其中一种,但不同的是其能够进行卷积计算且具有深度结构。对于图像识别来说,CNN更加有效的过滤了不重要、不完整的输入参数。

3.2.1 卷积层

卷积层内包含多个卷积核,实现对输入数据进行有效特征提取。每一个卷积核如图3-2所示,都要遍历图片上的每一个像素点。图片与卷积核重合区域内对应的每一个像素值乘以卷积核相对应点的权重之和、加上偏置为图片的一个像素值。

如图3-2所示,结果应为:

卷积层参数包括卷积核大小、步长和填充,卷积核越大,可提取的输入特征越复杂。每进行一次卷积,图像都会缩小,所以为了图像被缩小到消失,我们采取填充。即在每次卷积前,在图像周围补上空白,这样图像被缩小后还是跟原图大小一样。填充padding又分为SAME和VALID两种。

3.2.2 池化层

也称下采样层,此层能够保留主要特征、减少参数和计算量,提高计算速度防止过拟合。池化模型一般表示形式为:

其中,为步长,为像素,为预设参数。当=1时,得到均值,所以称为平均池化。当时,得到最大值,所以称为最大池化。在实际应用中,最大池化应用的比较多。

在图3-3的例子中,如果使用最大池化,每个22的四宫格中选出最大值作为输出矩阵的值,如输入矩阵第一个22四宫格中最大值是3,那么输出矩阵的第一个元素就是6,如此类推。如果使用平均池化,则就计算每个2*2的四宫格的平均值作为输出矩阵的值。

3.2.3 全连接层

全连接层实际相当于"分类器",全连接的核心操作就是矩阵向量乘积 y = Wx,即把之前的局部特征重新通过权值矩阵成为完整的特征。当网络模型在此层找到全部局部特征时,神经元被激活,将重组特征然后输出给输出层,经过softmax函数最后得到识别结果。一般来说,只用一层全连接层优势解决不了非线性问题,所以一般都使用两层以上。

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

4.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 分割数据集实现代码

4.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所示。

4.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

相关推荐
qzhqbb1 小时前
基于统计方法的语言模型
人工智能·语言模型·easyui
冷眼看人间恩怨2 小时前
【话题讨论】AI大模型重塑软件开发:定义、应用、优势与挑战
人工智能·ai编程·软件开发
2401_883041082 小时前
新锐品牌电商代运营公司都有哪些?
大数据·人工智能
AI极客菌3 小时前
Controlnet作者新作IC-light V2:基于FLUX训练,支持处理风格化图像,细节远高于SD1.5。
人工智能·计算机视觉·ai作画·stable diffusion·aigc·flux·人工智能作画
阿_旭3 小时前
一文读懂| 自注意力与交叉注意力机制在计算机视觉中作用与基本原理
人工智能·深度学习·计算机视觉·cross-attention·self-attention
王哈哈^_^3 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
Power20246664 小时前
NLP论文速读|LongReward:基于AI反馈来提升长上下文大语言模型
人工智能·深度学习·机器学习·自然语言处理·nlp
数据猎手小k4 小时前
AIDOVECL数据集:包含超过15000张AI生成的车辆图像数据集,目的解决旨在解决眼水平分类和定位问题。
人工智能·分类·数据挖掘
好奇龙猫4 小时前
【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
人工智能·算法
沉下心来学鲁班4 小时前
复现LLM:带你从零认识语言模型
人工智能·语言模型