本发明涉及移动便携设备,特别涉及基于移动智能手机传感器数据的人体姿态识别技术中的手机姿态矫正算法、特征提取算法和机器学习算法。
背景技术:
医疗健康在当今社会生活中正受到越来多的关注。现在有很多的医疗监控的设备,比如随处可见的智能手环,它通过传感器的数值判断步数,并根据用户自己输入的年龄、性别、身高、体重等信息估计出步行距离和卡路里消耗量,这种基于阈值判断的人体动作监控方式具有速度快,设备简单的特点,在一些对准确度不高的环境下可以起到不错的效果。在智能手环技术如此火热的时代,这种便捷随身的人体动作监控技术的重要性不言而喻,不仅仅是年轻人有锻炼身体的需要,尤其是在这个老龄化严重的时代,子女对老人照料的压力巨大,但我们通过便携的人体动作监控设备和一些其他信息,例如GPS位置的符合,我们可以推断出老人目前的状态,更重要的是可以利用动作信息判断甚至是预判老人是否摔倒,从而减轻老年人照顾的负担。事实上,在传统的医疗领域,对长期人体动作监控的需求也越来越强烈,比如某一些精神病的诊断需要知道病人动作特征,而目前的技术主要是通过对病人和病人家属的主观询问,但尤其是对病人来说,这种主观理解并不准确,因为病人不能准确的记忆或者描述出当时的状态,这种情况下,如果使用基于设备的人体动作记录,就可以获得客观的数据,帮助医生的诊断和治疗。在这样的背景下,便携的人体动作识别系统的是非常重要的。
本发明针对人体动作识别应用中的便携性和有效性两个方面进行了系统和方法的设计,利用常用的智能手机传感器平台和姿态矫正、特征抽取和模式分类的算法实现了一种可靠的人体动作识别系统。
技术实现要素:
本发明针对人体动作识别中的便携性和有效性两个方面进行了系统和方法的设计,本专利中实现了走路、跑步、跳跃、上楼梯、下楼梯、慢走、快走、向后走、骑车、休息等10种人体日常动作的识别。
本发明为解决上述问题,采用如下技术方案:
步骤一、利用智能手机传感器平台采集人体动作特征;
步骤二、处理原始特征进行姿态矫正;
步骤三、对矫正后的数据进行特征提取;
步骤四、进行特征处理后训练模型;
步骤五、对未知的时间序列进行识别。
所述步骤一中,我们利用智能手机中常见的方位传感器、重力传感器和加速度传感器分别采集用户的动作数据。三种传感器的功能说明分别为
方位传感器:返回手机轴向的角度数据。
重力传感器:返回手机轴向的重力分量。
加速度传感器:返回手机轴向的加速度
手机轴向的说明见图2.
所述步骤二中,由于在日常生活中手机的姿态不固定,本专利中发明了一个多传感器数据融合的算法进行姿态的矫正,从而分析出手机的水平和竖直方向加速度。
算法1:姿态矫正算法
1.利用方位传感器返回的×轴和Y轴对水平面的夹角,和重力传感器的三轴数据在竖直方向的矢量和为g,从而计算出手机Z轴对于水平面的夹角
2.计算竖直方向的加速度
ACCVertical=[ACC(2)×sin ORI(2)-ACC(1)×sin ORI(3)+ACC(3)×sin ZH]×-1
3.根据重力传感器的三个分量在水平面上的投影的矢量和为零,而重力传感器的三个分量的投影大小固定,因此我们可以唯一的计算到X,Y,Z三轴在水平面上的投影方向
GRAH(1)=|GRA(2)×cos ORI(2)|
GRAH(2)=|GRA(1)×cos ORI(3)|
GRAH(3)=|GRA(3)×cos ZH|
ACCH(1)=|ACC(2)×cos ORI(2)|
ACCH(2)=|ACC(1)×cos ORI(3)|
ACCH(3)=|ACC(3)×cos ZH|
G2G3=cos-1[cos G2G1×cos G3G1-sin G2G1×sin G3G1]
4.计算ACC2和ACC3在水平面上的合加速度
5.计算水平方向合加速度
LA1=cos-1-1×(cosLA2×cos G2G1+sinLA2×cos G2G1)
从而得到了矫正后的水平加速度和竖直加速度,这两种模态的信息的分离将使后面的识别步骤更加精确、简单。
ACGVertical ACGHorizontal
所述步骤三中,利用步骤二中矫正后的水平和竖直方向数据进行特征提取。本专利中,样本采集过程中,使用50Hz的采样率进行数据采集,利用5s的时间窗和2.5s的滑动窗口,进行样本的分割,每次对时间窗内的数据做一次快速傅里叶变换,去除傅里叶系数的直流分量作为一组特征,另外,本专利中也采用了其他一些统计/物理特征:
1.运动强度(MI)
2.归一化的信号量级(SMA)
3.主方向特征(EVA)
建立X,Y,Z轴加速度数据的协方差矩阵,这个矩阵的特征向量对应于哪个方向为现在运动的主方向,而特征值体现了三个方向之间的相关性。我们采用前两个特征值来表现前进方向和竖直方向的相关性。
4.主频(DF)
定义主频(Dominant Frequency)为FFT变换后,除去直流分量后的最大绝对值。
5.能量(ENERGY)
定义每个方向上的能量为FFT变换后,除去直流分量的所有频率幅度的绝对值和。
6.平均加速能量(AAE)
定义平均加速能量为每个轴上能量的均值。
7.加速度均值(MEAN)
定义加速度均值为一个窗口内加速度的平均值。
8.加速度中值(MEDIAN)
定义加速度中值为一个窗口内加速度的中值。
9.加速度方差,标准差(VAR,STD_VAR)
定义加速度方差,标准差为一个窗口内加速度的方差和标准差。
10.过零率和过均值率(CROSS_ZERO,CROSS_MEAN)
定义一个窗口内加速度值通过零值和均值的概率来表示过零率和过均值率。
本专利中,对水平、竖直方向的时间序列分别提取特征,得到关于人体运动姿态的2中模态的特征。
所述步骤四中,利用步骤三提取到时间窗内的特征,对特征进行滤噪,之后利用多核支持向量机的方法进行模型学习。
所述步骤五中,对实际应用中提取到的用户运动的时间序列信息进行时间窗分割,特征提取等步骤之后,利用步骤四学习到的分类器进行分类,将一个时间窗内的特征识别为一种人体动作。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
(1)不需要限定传感器与人体的相对固定,只使用随身的智能手机即可实现人体动作识别;
(2)和目前智能手机中的动作识别应用相比具有更高的分辨能力并且支持更多动作;
(3)采用客户端/服务器架构,优化了计算耗能。
附图说明
图1为本发明的完整的系统工作流程图。
图2为本发明中涉及的智能手机传感器数据的轴向说明。
图3为本发明中涉及的时间窗特征提取模式。
图4为本发明中所用的机器学习框架。
图5为本发明中所用的多核支持向量机模型。
具体实施方式
以下结合附图和实施例对本发明的技术方案做进一步详细说明:
实施例
如图1所示,具体的实施过程包含两个部分和12个步骤:
在第一部分中,即客户端的工作步骤:
步骤1是当用户打开客户端后,客户端应用打开主线程,步骤2是主线程同时开始尝试与服务器端建立可靠的网络连接。同时,在步骤3中,主线程启动3个后台服务,分别对方位传感器,加速度传感器和重力传感器建立监听,这3个后台服务同时将采集到的数据在步骤4中选择数据是用来训练还是用来识别。选择训练模式后,主线程判断样本是否合格,如果合格则存储到样本集中,并用于后期训练,则进入步骤6。如果选择识别,则进入步骤5,步骤5中,客户端中主线程将收集到的三个传感器数据进行分割编码后,利用发送线程把数据发送到服务器端。
在第二部分中,即服务器端的工作步骤:
服务器启动后,步骤10中开始监听是否有客户端请求接入,客户端接入后为其建立一个网络连接线程。步骤9中,客户端和服务器端保持连接的有效性。步骤6中,利用采集到的数据集首先进行姿态的矫正,然后对水平和竖直方向的加速度数据进行特征提取,然后使用多核支持向量机进行模型的训练,并存储样本投影矩阵。步骤8中,服务器接收来自客户端的数据,接收线程中对网络数据进行解码合并后利用滑动窗口提取5s的时间序列,对时间序列进行特征提取后在步骤7中读取模型并进行识别,步骤11中,将识别结果送入到发送线程,步骤12中将识别结果返回到客户端.
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。