基于长短期记忆网络的人体运动识别研究

2019-12-05 02:48孙小华
无线互联科技 2019年16期

孙小华

摘   要:文章提出一种基于长短期记忆网络的人体运动状态识别方法。通过手机内置的加速度传感器采集相关数据,对采集的数据进行预处理,采用LSTM算法对人体运动状态进行分类。此算法不需要人工进行特征提取,在TensorFlow环境下的实验结果显示,此算法分类精度较高,对静止、走路、慢跑、上楼梯、骑车5种运动状态的识别率超过90%。

关键词:长短期记忆网络;人体行为识别;加速度传感器

人体运动状态识别系统根据输入的信息对人体的运动状态进行分类,可以用于老人或病人的监护、智能家居、安全监控、运动追踪等系统。随着现代生活方式的转变,人们的日常运动量变得越来越少。日常的运动情况不仅能够为医生诊断和治疗疾病提供丰富的参考信息,而且可靠的运动监测技术还能够更智能地提醒人们保持健康的生活方式,如子女可以随时获得家中老人的运动状态,当老人出现跌倒、昏迷等意外情况时,系统自动发出报警信息,这对老年人的健康安全和及时救助具有十分重要的意义。

传统人体运动状态的识别主要通过可穿戴式设备采集相关的数据进行分析,但穿戴这些设备会导致人体运动不便。近年来,随着移动互联网技术及传感器技术的发展,智能手机内置了加速度、陀螺仪、光、磁场、气压等传感器,可以采集手机的状态数据,通过对采集的手机各类传感器数据进行算法分析,对运动状态进行分类识别,从而判断出人体当前的运动状态。与传统的可穿戴式设备相比,采用智能手机进行人体运动状态识别具有便捷性的优点。

常用的人体运动状态识别分类算法有贝叶斯网络、支持向量机(Support Vector Machine,SVM)、K-means聚类、BP神经网络、隐马尔可夫模型(Hidden Markov Model,HMM)、决策树等,但这些方法的效果都与选择的特征相关,如加速度的最大值、最小值、方差等,如果特征选择的不合适,识别的精度将受到影响。本文基于深度学习算法对人體运动状态进行识别,根据智能手机内置传感器监测到的数据判断人体处于何种运动状态,是静止、慢步还是上楼梯等,处理过程中不需要对原始数据进行人工特征提取及选择[1-3]。

1    长短期记忆网络

长短期记忆网络(Long Short-Term Memory,LSTM)是一种时间循环神经网络,由Schmidhuber教授于1997年为解决传统循环神经网络(Recurrent Neural Network,RNN)的长程依赖问题而提出。LSTM不需要特别复杂地调试超参数,默认就可以记住长期的信息,近年来,在文本分类、语音识别、图像识别、自动标注、自动对话等领域取得了广泛的应用。

在某一时刻t,LSTM单元的输入有3个:当前时刻网络的输入值xt,上一时刻LSTM的输出值ht-1以及上一时刻的单元状态Ct-1。LSTM单元的输出有2个:当前时刻LSTM输出值h和当前时刻的单元状态Ct。LSTM通过3个门结构来维护和控制单元的状态信息,把LSTM关于当前的记忆和长期的记忆组合在一起,形成了新的单元状态。遗忘门负责控制继续保存长期状态;输入门负责控制把即时状态输入到长期状态;输出门负责控制是否把长期状态作为当前的LSTM的输出。

2    处理流程

2.1  原始数据集

本文研究人体静止、走路、跑步、上楼梯、骑自行车等状态的识别,实验选取5名实验者进行,实验手机为华为Mate9型号,采集手机的加速度传感器数据。原始数据为人体各种运动状态下Android智能手机加速度传感器采集的数据,对采集的数据人工进行类别标注,如静止设为0,走路设为1,跑步设为2等。将数据的采样频率设为50 Hz,原始数据为手机传感器在0.02 s内采集到的x,y,z 3个方向的加速度信息,即原始数据为具有三维特征的数据集,每条数据对应一种人体运动状态(即类别),如静止、走路、跑步等运动状态,用one-hot编码表示。

走路时采集的加速度传感器在3轴方向上的原始数据波形如图1所示,跑步时采集的加速度传感器在3轴方向上的原始数据波形如图2所示。可以看出,虽然加速度数据比较混乱,但3个维度的数据变化还是大致呈现规律性的周期变化[4-5]。

2.2  数据预处理

为充分挖掘运动状态信息,通过滑动窗口技术进行特征提取,将每秒采集的数据作为一个样本,即滑动窗口的长度为1 s。因为采样频率设为50 Hz,因此,每秒采集的数据有50条,维数为3×50=150维;同时,为了获取人体运动状态的变化信息,将采集到的加速度数据进行增量计算,计算每次采集到的加速度数据与上一次采集到的加速度数据的差值,并将差值放大10倍。类似,每秒获得的增量数据有50条,维数为3×50=150维,因此通过预处理之后得到的数据维数为300,另外自动增加24维全为0的数据,使数据的总维数刚好为18×18=324维。

2.3  LSTM参数设置及运行流程

将经过预处理的数据导入TensorFlow深度学习框架进行处理。使用tf.nn.rnn_cell.BasicLSTMCell设置默认的LSTM单元。采用单层LSTM结构,添加一个softmax层用于分类。初始化模型中的隐藏层神经元数目为128,迭代次数为500次,模型的学习速率设置为0.001,优化器采用Adam。

为了训练模型,需要定义一个损失函数来描述模型对人体行为状态分类的精度,在此采用交叉熵作为损失函数。接下来采用随机梯度下降方法进行训练,优化目标设为交叉熵cross_entropy。迭代执行训练操作,每次只使用一小部分数据进行随机梯度下降,随机从训练集中抽取200条作为一个mini-batch,即批大小batch_size设为200,这种方法比采用全样本进行训练的收敛速度要快。

完成训练后就可以对模型的准确率进行验证,求出各种预测的人体行为状态中概率最大的那一个,然后与实际的人体行为状态标签相比较,如果一致则判别正确,否则判别错误。将测试数据的特征和标签输入评测流程accuracy,计算模型中在测试数据集上的准确率。

3    实验结果及分析

3.1  实验数据集

实验数据由5名用户使用华为Mate9的Android手机采集的三轴加速度传感器数据组成。数据的采样频率为50 Hz,采集的数据分为静止、行走、慢跑、上楼梯、骑自行车等5个日常行为动作。采集的数据一共有49 200条,其中42 150条作为训练数据,7 050条作为测试数据。

3.2  实验结果

训练集上的精确度变化过程如图3所示,可以看出,随着迭代次数的增加,精确度迅速上升,并稳定保持在0.95以上。

通过对训练数据进行训练生成模型,在测试数据集上用生成的模型进行测试,得到静止、走路、跑步、上楼梯和骑自行车5种人体行为状态的综合分类精度为91.5%。与常用的人体运动状态识别分类算法相比,此方法不需要对原始数据进行人工特征提取,分类精度较高[6-8]。

4    结语

本文提出了采用基于长短期记忆网络的分类算法对人体运动状态进行识别,可实现对静止、走路、跑步、上楼梯和骑自行车等状态的识别。实验结果可以看出,分类算法判别效果良好,分类精度超过90%,后续仍可以增加陀螺仪、磁力计等传感器获取更多的原始数据,以获得更高的分类准确度。

[参考文献]

[1]匡晓华,何军,胡昭华,等.面向人体行为识别的深度特征学习方法比较[J].计算机应用研究,2018(9):261-261,268.

[2]宿通通,孙华志,马春梅,等.基于循环神经网络的人体行为识别[J].天津师范大学学报(自然科学版),2018(6):61-65,79.

[3]陳波,余秋婷,陈铁明.基于传感器人体行为识别深度学习模型的研究[J].浙江工业大学学报,2018(4):25-31.

[4]吴军,肖克聪.基于深度卷积神经网络的人体动作识别[J].华中科技大学学报(自然科学版),2016(S1):190-194.

[5]李锋,潘敬奎.基于三轴加速度传感器的人体运动识别[J].计算机研究与发展,2016(3):621-631.

[6]RODOLFO B.TensorFlow机器学习项目实战[M].北京:人民邮电出版社,2017.

[7]王忠民,张琮,衡霞.CNN与决策树结合的新型人体行为识别方法研究[J].计算机应用研究,2017(12):3569-3572.

[8]黄文坚,唐源.TensorFlow实战[M].北京:电子工业出版社,2017.