欧阳银涛,孙彦玺,屈敬朝,李雯雯,王 崇
(郑州轻工业大学 建筑环境工程学院,河南 郑州 450000)
随着微电子机械系统(MEMS)、机器学习等技术的快速发展,同时人们对健康状况的关注和对更高生活品质的追求,使得基于惯性传感器的人体活动识别成为当下热门的研究课题。基于惯性传感器的人体活动识别技术在辅助老年人生活、医疗保健、体育运动和人机交互等方面[1]发挥着重要作用。用于人体活动数据采集的惯性传感器主要由加速度计、陀螺仪和磁力计等构成,能够准确采集人体活动时产生的加速度信号、角速度信号和磁场[2]。传感器器件的发展促使惯性传感器朝着小体积、低成本、低功耗、高灵敏度的方向不断进步,使其被集成在智能手环、智能手机和可穿戴设备上成为可能,相信在未来,其在人体活动识别领域的应用也将越来越广泛。
人体活动识别中常见的机器学习算法模型有决策树、朴素贝叶斯、人工神经网络、支持向量机、K最近邻和隐马尔科夫模型等[3]。文献[4]提出了一种基于多传感器的分布式人体定位方法,该多传感器系统采用决策树分类器(DT)、均值和方差特征,整体识别准确率达96.4%。文献[5]提出了一种基于朴素贝叶斯分类器(NB)的早期手势识别方法,实验结果表明,所提出的新方法优于许多专门为早期手势识别而设计的更复杂的方法。文献[6]建立了支持向量机(SVM)分类模型,用于体操动作的识别,该模型对6种体操动作的平均识别率超97%。文献[7]采用K最近邻分类器(KNN)进行人体活动识别,采用粒子群优化算法(PSO-KNN)搜索KNN分类器中k参数的最优值。实验结果表明,优化后的算法提高了对人体动作的识别精度。本文提出了基于BP神经网络的人体活动识别方法,并在公开的DaLiAc(Daily Life Activities, DaLiAc)数据集上验证了我们所提分类模型用于人体活动识别的有效性。
多层网络的学习能力较单层感知器增强很多,但要训练多层网络,则需要更强大的学习算法。误差逆传播(Error Back Propagation, BP)算法是迄今为止最成功的神经网络学习算法,现实任务中使用神经网络时,大多使用BP算法进行训练[8]。BP算法不仅可用于多层前馈神经网络,还可适用于其他类型的神经网络,通常所说的BP网络一般是指用BP算法训练的多层前馈神经网络。三层BP神经网络结构如图1所示。
图1 三层BP神经网络模型
由图1可知,输入层由n个神经元组成,xi(i=1, 2,...,n)表示其输入;隐层由q个神经元组成,zk(k=1, 2,...,q)表示其输出;输出层由m个神经元组成,yj(j=1, 2,...,m)表示其输出。vki(i=1, 2,...,n;k=1, 2,...,q)表示输入层到隐层的连接权值;wjk(k=1, 2,...,q;j=1, 2,...,m)表示隐层到输出层的连接权值。
(1)隐层的输入与输出分别为:
(2)输出层的输入与输出分别为:
基于传感器的人体活动识别一般流程包括:数据预处理、窗口分割、特征提取及降维和分类识别。由于惯性传感器采集的人体运动信号包含丰富的活动信息,而仅使用原始运动信号进行识别分类的准确度往往不高,因此常通过特征提取的方式从原始信号中提取主要特征以构成特征向量(特征向量包含了可以区分不同动作或活动的重要线索)。但当特征向量维数太高时将带来维度灾难问题,特征降维的操作将为降低特征向量的维度、简化计算、缩短分类执行时间带来益处。
本研究利用公开的DaLiAc数据集作为实验数据集[9],该数据集的采集过程由放置在人体右臀部、胸部、右手腕和左脚踝上的3个传感器节点完成。每个传感器节点由1个三轴加速度计(A1,A2,A3)和1个三轴陀螺仪(G1,G2,G3)组成。其中,加速度计的量程为±6g,手腕、胸部、臀部传感器节点的陀螺仪量程为±500°/s,脚踝处传感器节点的陀螺仪量程为±2 000°/s。实验采样率为204.8 Hz,对19名健康受试者(8位女性和11位男性,年龄(26±8)岁,身高(177±11)cm,体重(75.2±14.2)kg)采集了13种不同的人体活动。DaLiAc数据集的活动名称及标签见表1所列。
表1 人体活动名称及标签
本研究以时间长度为2 s的滑动窗口进行人体活动数据分割,取相邻滑动窗口间50%的数据重叠,以防止窗口边缘处信息丢失。提取分割后样本数据的方差、平均绝对值、裕度因子、脉冲因子、均方根、峰值因子等时域参数作为分类特征,采用主成分分析法(PCA)降低特征参数的维度,从而简化网络计算,缩短训练时间。采用独热编码对13种人体活动标签进行编码,随机打乱经过数据处理后的样本数据的顺序,以达到随机选择训练集和测试集的目的。实验时选取受试者活动数据的前80%作为训练样本集,剩下20%作为测试样本集,并将所有样本数据归一化到[0,1]。
本文提出的BP神经网络模型包括1个输入层、2个隐藏层和1个输出层,输入和输出节点的数量分别为50(主成分降维后的维度)和13(13种不同的人体活动),2个隐藏层的神经元个数分别为200和100,epochs设置为50,学习率lr设置为0.001,采用LM(Levenberg-Marquart, LM)反向传播算法[10]进行网络训练。实验时读取数据集中第一个志愿者的人体活动数据,BP神经网络的训练和预测分别在训练样本集和测试样本集上进行。其中,训练集和测试集样本个数分别为935和234,分别占总样本数量的80%和20%。该模型在MATLAB上的仿真结果如图2、图3和图4所示。
图2 训练样本预测值与实际值的对比
图3 测试样本的预测值与实际值的对比
图4 BP神经网络模型测试集的预测分类混淆矩阵
图2和图3分别是建立的BP神经网络模型在训练集和测试集上的预测标签值和真实标签值对比曲线,从图中可以明显看出,该模型很好地实现了对13种人体活动的预测分类。图4是BP神经网络模型在测试集的预测分类混淆矩阵,其底侧数字和左侧数字的1~13分别代表待分类的13种人体活动和预测分类出的13种人体活动。最后一行格子(右下角格子除外)上方和下方的百分比分别表示模型对某一人体活动做出正确或错误分类的准确率和错误率。最后一列格子(右下角格子除外)上方和下方的百分比分别表示模型预测分类为某一人体活动的准确率和错误率。右下角格子上方的百分比代表模型对13种人体活动做出正确分类的总体准确率,下方的百分比为总体分类错误率。从混淆矩阵中可以看出,该方法对13种人体活动的总体识别率达到了96.6%,证明了我们所提方法的有效性。
本文建立了BP神经网络模型用于人体活动识别,实验中提取了样本数据的方差、平均绝对值等时域参数作为分类特征,并采用PCA实现特征向量降维。利用DaLiAc公开数据集,通过对比样本标签的预测值和实际值,以及模型在测试集上预测分类混淆矩阵展现出的高识别率,表明了该模型用于人体活动识别的高效性。未来的研究中,应当充分考虑人体活动识别的时效性,找到识别速度和识别准确率的最佳平衡,更好地实现实时分类监测。