智能手机多传感器融合的人体活动识别技术
2020-11-11杨佳现
何 坚, 杨佳现
(1.北京市物联网软件与系统工程技术研究中心, 北京 100124; 2.北京工业大学信息学部, 北京 100124)
人体活动由一系列具有丰富含义的肢体运动构成. 例如:简单活动有散步、慢跑、站立等;复杂活动有乘坐公共汽车、购物、驾车等. 人体活动是人与周围环境间交互并传递信息的途径,反映了人的行为及意图. 人体活动识别(human activity recognition,HAR)是指计算机自动检测、分析和理解人体不同类别活动的技术,其在智能家居、健康、环境检测、教育、老人和病人监护等领域具有广泛的应用[1-4],并成为智能人机交互的一个重要研究领域. 已有HAR技术根据所采用传感器技术的不同,总体上可划分为以下三大类:可穿戴感知技术(wearable sensors)[5]、视觉感知技术(vision-based sensors)[6-7]和情景感知技术(ambient sensors)[8-9]. Bao等[10]通过佩戴在身体不同部位的5个小型可穿戴双轴加速度计收集人体活动数据进而分类识别人体活动. Ward等[11]通过在身体佩戴麦克风以及在身体不同部位布置加速度计来设计HAR系统,并取得较好效果. 基于可穿戴感知的技术可运行在室内和室外环境,并提供良好的动作识别,此外,由于其体积小,方便佩戴在身体的不同部位(如手臂、腰部和腿部等). 然而,在身体上部署多个传感器存在成本高、会给穿戴者带来不适等问题. 在基于视觉感知的HAR方面,Chen等[12]使用3D矩阵方法在视频镜头中查找时空活动图,进而对视频中的人体活动进行识别. Ni等[13]通过融合图像视频数据设计开发了一种HAR结构模型对人体活动进行检测识别,实验的精确度有较大的提高. 虽然基于视觉感知的HAR技术具有准确率高、动作捕捉快等特点,但其监控范围受限,容易暴露用户隐私. 基于情景感知技术的HAR方法将传感器部署于环境中,通过人和环境传感器之间的交互来识别人类活动. 例如:Zhan等[14]设计了一种基于环境背景声音的人体活动识别方法,其对人体活动识别有较高的准确度. Luo等[15]利用热释电红外传感器进行室内人体活动跟踪和识别,系统的准确度约为92%. 基于环境感知技术的HAR主要缺点是应用环境受限制.
随着智能手机计算能力提升以及使用普及,越来越多的人员利用智能手机集成的传感器进行HAR技术的研究. 智能手机不仅集成了加速度计、磁力计、陀螺仪、温度计、全球定位系统(global positioning system,GPS)和气压计等多模态传感器,而且它还有较高的存储容量和较强的计算能力,是进行活动识别的良好的感知和计算平台. 例如:Fuentes等[16]将智能手机获取的原始加速度数据转换为统计特征,使用支持向量机(support vector machine,SVM)分类器对站立、坐下和行走等活动进行分类,系统的总体准确度约为93%. Fahim等[17]构造了一种基于智能手机加速度传感器的HAR模型,对步行和跑步等活动具有较高的识别准确性. 此外,研究人员也将深度学习技术应用于HAR. 例如,针对智能手机传感器和活动的固有特性,Ronao等[18]利用深度神经网络,实现有效的HAR. Hassan等[19]通过深度信念网络训练HAR模型,与传统的分类算法相比具有较好的识别效果.
已有基于智能手机的HAR方法主要采用惯性传感器,单一类型传感器限制了其识别活动的种类和准确性. 此外,已有研究采用单分类算法,没有充分利用多个分类算法之间的互补特性. 近些年来多分类器融合技术成为分类算法研究的一个热点. 如文献[20]将多分类器融合技术应用在个人信用评估模型,实现了基分类器之间的优势互补,取得了很好的识别效果. 对此,本文充分利用智能手机集成的惯性传感器、磁力计和气压计等多模态传感器,采用Stacking算法融合随机森林(RandomForest)、SVM、K最近邻(K-nearest neighbor,KNN)和朴素贝叶斯(naive Bayesian,NB)等多个传统分类算法,通过学习训练集数据形成优化的人体活动识别分类器. 此外,基分类器之间的差异性有助于各分类器之间的互补,提高Stacking算法的判别能力.
1 人体活动感知技术
1.1 人体活动建模
人体活动由人体位置、活动模式和当前环境等因素决定[21]. 在人体运动中,人体不同动作产生的加速度、角速度不同,同时人体活动所处环境(如位置、海拔高度)不同,其对应的地磁强度、气压也不同. 本文选择智能手机集成的加速度计、陀螺仪、磁力计和气压计作为HAR的多模态传感器. 这4类传感器可以很好地反映测试对象的运动方向、运动幅度和当前所处的海拔高度等特征. Bieber等[22]研究表明用户裤子的口袋是采集其传感器数据最佳部位. 本文将智能手机头部朝下、垂直放置在用户裤子右前方的口袋里,建立如图1所示基于笛卡儿坐标系的人体活动模型. 其中,ax、ay和az分别代表智能手机沿x轴、y轴和z轴获取的加速度数据;ωx、ωy和ωz分别代表人体躯干绕x轴、y轴和z轴运动时的角速度数据;mx、my和mz分别代表x轴、y轴和z轴的地磁数据. 此外,气压计可感知当前环境下的气压,由气压值计算对应的海拔高度. 本文选定人的裤子前方右口袋为坐标原点,人体的正右方为x轴的正方向,正上方为y轴的正方向,正前方为z轴的正方向.
在三轴加速度计、陀螺仪和磁力计分别感知的3维数据基础上,本文按照
(1)
分别计算加速度、角速度和磁力的合值. 合值仅反映加速度、角速度和磁力的幅度值变化,与方向无关.
1.2 多传感器融合的HAR框架
基于Stacking多传感器融合的HAR系统框架如图2所示. 总体上将HAR过程分为人体活动数据采集、数据预处理和数据分类识别3个阶段. 其中,数据预处理包括数据去噪、数据归一化、数据分割、特征提取和特征选择. Stacking分类融合层包括基层和元层. 基层采用K折交叉检验方法训练不同的基分类器,其对人体活动数据特征集中的每个样本进行预测得到识别结果. 由于每个分类模型的训练精度在起初的时候上升较快,越到后面上升越慢,当训练精度达到一定程度,再对原始数据训练难以提高识别准确率,因此,元层采用基分类器的预测结果作为输入数据,最终通过训练得出优化的分类模型.
2 人体活动识别系统
2.1 人体活动数据预处理
数据预处理的目的是将传感器采集的原始数据集转换为有利于分类的特征向量. 中值滤波器能有效地平滑数据集,去除数据中峰值信号的影响,因此,本文采用中值滤波算法对多模态数据过滤和去噪,然后再对数据进行归一化以提高训练速度和识别的准确度.
由于不同智能手机集成的加速度计、陀螺仪、磁力计和气压计的种类和精度不同,本文采用
(2)
将原始数据归一化到[-1,1];针对磁力计和气压计,本文采用
(3)
将它们采集的原始数据归一化到[-1,1]. 式中:x代表传感器的原始数据;xmean代表原始数据的平均值;range代表加速度或陀螺仪的量程范围;xvar代表原始数据的方差;xscale代表归一化之后的数据.
人体活动数据为连续数据集,传统分类算法不能直接应用于连续数据,因此,本文采用滑动窗口技术对归一化后的人体活动数据进行分割. 由于人体活动频率通常小于20 Hz,所以本文将手机传感器的采样频率定为50 Hz. 此外,人体完成一个活动的时间通常小于2 s,本文将滑动窗口大小设定为2 s,即用一个容量为100个样本点的滑动窗分割传感器信号,相邻滑动窗按50%进行交叉重叠. 图3所示为归一化后“走路”三轴加速度数据分割的示例. 从图中可以看出,样本大小为100的窗口能够完全包含一段周期性活动的波形.
文献[23]表明在HAR中针对传感器采集数据的均值、方差、标准差、峰度、均方根、最大值、最小值和能量谱密度均可作为人体活动的特征. 本文中每个样本包含4类传感器(加速度、陀螺仪、磁力计、气压计)的数据,其中气压计采集的气压值为1维数据,其他3类传感器有x轴、y轴、z轴和幅度合值共4维数据. 因此,每个样本可提取(3×4+1)×8维数据,共104维特征向量. 针对这104维特征向量,本文采用主成分分析(principal component analysis,PCA)从中提炼出加速度x轴数据的平均值、y轴数据的均方根等14维特征作为人体活动的特征以减少计算量和提高分类的精确度.
2.2 人体活动识别算法
Stacking算法与常见的集成学习算法Boosting、Bagging不同,其进行算法融合时不是对基学习器的预测结果做简单的逻辑处理,而是再加一层学习器,通过对该学习器进行训练产生一个新模型,进而实现对基学习器的融合. 其中,基学习器由不同的学习算法产生. 给定T个初级学习算法S1,S2,…,ST和一个元层学习算法S. Stacking算法主要步骤如下.
(4)
取平均值.
Stacking算法伪代码描述如图5所示.
为了实现Stacking融合的组合模型获得更高的分类准确率,要求每个基分类器有超过50%的分类精度,还要求基分类器间有较大的差异性[25]. 如果基分类器的识别精度太低,无论分类器间的差异性如何大,组合系统的预测精度也不会提高,反而会增加系统的复杂性. 本文选取RandomForest、NB、SVM、KNN四种不同算法且分类精度较高的分类器作为候选基分类器,并采用Q统计量衡量2个基分类器(Di,Dj)之间的差异性,公式为
(5)
式中:N11和N00分别表示2个分类器Di和Dj均做出正确和错误分类识别的样本;N01表示分类器Di做出错误分类识别而分类器Dj做出正确分类识别的样本;N10表示分类器Di做出正确分类识别而分类器Dj做出错误分类识别的样本. 统计量Qi,j的值在[-1,1]变化. 极端情况下,当统计量Qi,j为0时,2个分类器独立. 若一个集成学习系统由L个基分类器组成,则整个系统的差异性可通过
(6)
计算系统中所有分类器差异性的平均值.
3 实验结果分析
本文采用运行Android 5.0操作系统的Samsung GALAXYS 5手机、Android 9.0操作系统的小米8手机、Android 8.1.0操作系统的vivo X23手机和Android 8.1操作系统的荣耀8X作为数据收集的平台. 通过自行开发并安装在手机上的应用程序来采集4种传感器数据,采样频率为50 Hz. 10名学生(4女6男)作为被试,其年龄为24~30岁. 每名被试随机携带一种智能手机完成6项人体活动(站立、走路、慢跑、上楼、下楼以及骑自行车),为了消除在采集数据开始和结束时因放置手机导致的误差,实验将前2 s和最后2 s采集的数据舍弃,这样每种活动选取了50 050条数据. 不同智能手机传感器的量程范围不同,本实验采用2.1节的数据预处理方法对传感器原始数据进行预处理,得到3组特征数据集. 第1组含有加速度和陀螺仪数据,命名Data1;第2组含有加速度、陀螺仪和磁力计数据,命名Data2;第3组含有加速度、陀螺仪、磁力计和气压计数据,命名Data3. 每种活动选取1 000个样本. 为了防止训练时数据过拟合,本文随机选取90%的数据作为训练数据集,共计5 400个样本;选取10%的数据作为测试数据集,共计600个样本;确保训练数据集和测试数据集无交叉重叠以提高识别的精度. 6种人体活动的训练和测试样本数据集如表1所示.
表1 用于实验的训练样本和测试样本Table 1 Training and testing samples used for the experiment 个
本文将RandomForest、NB、SVM、KNN四种基分类器编号1、2、3、4,在Data1数据集上计算4种基分类器之间的两两差异性,根据基层的每个单分类器的识别结果,利用式(5)计算Qij,利用式(6)计算平均,即
Q12=0.868,Q13=0.897,Q14=0.921Q23=0.856,Q24=0.816,Q34=0.934Q123=0.874,Q124=0.868,Q134=0.917,Q234=0.869
根据上面的结果和基分类器选择的原则,本文选择RandomForest、SVM和KNN作为基分类器. 并将Data1、Data2和Data3三种特征数据集的训练样本作为图2中Stacking算法模型的输入数据进而建立HAR模型. 为了验证Stacking算法融合结果的优劣,分别将Data1、Data2和Data3中的测试样本导入训练好的HAR模型中进行测试,测试结果如表2所示. 图6为4种算法在3组数据集上的测试结果对比折线图. 表3为Data3测试结果混淆矩阵.
表2 不同分类算法的人体活动识别测试结果对比Table 2 Comparison of human activity recognition test results with different classification algorithms %
表3 基于Data3测试数据集的人体活动识别混淆矩阵
通过表2和图6可以看出,每种方法在Data3上的平均识别准确率比Data1和Data2的高. 这表明融合智能手机的多个传感器后,各种算法的识别准确率都有一定提高,并且Stacking算法最为突出. 在3组数据集上通过Stacking算法的测试结果都比其他分类算法高. 其中Stacking分类算法在Data3上的平均准确率达到99.0%,平均敏感度和平均特异性也分别达到了99.0%和99.8%.
通过表3测试结果的混淆矩阵可以看出,第3组活动特征集很好地区分了走路、上楼和下楼这3种相似的人体活动动作,证明了基于智能手机多传感器融合的Stacking算法对人体活动动作有较好的识别能力. 此外,基于非公开数据集的人体活动识别模型中,使用支持向量机分类器[26]对人体活动识别的准确率达到87.2%,本文算法比其高出11.8%;基于AdaBoost构建的人体活动识别模型[16]准确率和召回率分别为92.0%和93.0%,本文算法分别比其高出7.0%和6.0%,优势很明显.
为验证本方法的泛化性,本文选择了公开的数据集MobiAct[27]进行实验. 参考图1人体活动模型坐标系,首先对公开的数据集进行坐标转换,保证这些转换的数据均符合图1所示的坐标系,并对转换后的数据通过数据预处理提取活动特征值. 从MobiAct提取了站立、走路、慢跑、上楼、下楼和跳跃各1 000个样本,并随机选择90%的数据作为训练数据集,其余作为测试数据集,如表4所示. 其中:Data4含有加速度和陀螺仪数据特征;Data5含有加速度、陀螺仪和磁力计数据特征. 实验测试结果如表5所示.
表4 用于实验的训练样本和测试样本Table 4 Training and testing samples used for the experiment
表5 不同分类算法的人体活动识别测试结果对比Table 5 Comparison of human activity recognition test results with different classification algorithms %
各种算法在Data5上的测试结果比Data4上的高. 此外,Stacking算法与其他分类算法在Data5上的测试结果相比,其准确率、平均敏感度和平均特异性均为最高,比SVM算法的准确率、敏感度和特异性分别高出14.0%、11.4%和2.1%,比KNN算法的准确率、敏感度和特异性分别高出3.4%、3.3%和2.0%,比RandomForest算法的准确率、敏感度和特异性分别高出1.8%、2.0%和0.6%. 除此之外,使用NB算法[28]的HAR检测准确率和召回率分别为87.2%和82.7%,本文算法比其分别高出8.2%和12.8%;LSTM[29]系统HAR检测的准确率为90.0%,本文算法比其高出8.9%. 再一次证明,基于多传感器融合的Stacking算法对于HAR具有可行性.
4 结论
1) 本文建立了多传感器人体活动模型,并设计实现了智能手机多传感器融合的Stacking算法. 对3组包含不同传感器的数据集进行对比分析,证明了融合多传感器Stacking算法较传统基于智能手机单一传感器的HAR方法有较高的准确率,同时,算法的平均特异性和平均敏感度均有提高.
2) 此外,本文针对公开MobiAct的数据集进行实验,尽管MobiAct缺少气压数据,但实验结果证明本文Stacking融合的算法取得了更好的人体活动识别准确率,证明了本方法具有很好的泛化性. 随着深度学习的应用普及,下一步的研究将把深度学习算法应用于人体活动识别.