基于可穿戴传感器的普适化人体活动识别*

2018-07-20 01:47范长军浙江工业大学计算机科学与技术学院杭州310023
传感技术学报 2018年7期
关键词:传感生理加速度

范长军,高 飞(浙江工业大学计算机科学与技术学院,杭州 310023)

随着智能移动设备和可穿戴式传感器的使用越来越普遍,智能手环、智能胸带等产品屡见不鲜。通过这些设备,心电、呼吸、体温等生理信号以及加速度、陀螺仪等惯性信号的获取都变得十分方便,人们能随时随地获取自身的各项体感信息。通过感知的各类体感信息来识别日常运动及活动,并长时间连续记录相关的数据,可分析出一个人的活动模式和能量消耗,方便进行健康监护和医疗保健[1],大大提高人们的生活质量。

加速计、陀螺仪和磁力计等惯性传感器能够感知运动的加速度、角速度以及运动幅度等,并具有体积小、灵敏度高、功耗低的特点[2],成为人体活动识别最常用的传感器[3]。此外,心率计、温度计等生理传感器在智能可穿戴产品中也日益普及,心率等生理指标与运动强度、耗氧量呈正比,会随着运动强度而发生变化,能为人体健康监测和活动识别提供不可或缺的体感信息。比如,走路和负重走两类活动的运动模式相同,仅通过惯性传感器无法进行区分,但两者引起的生理疲劳程度不同,引入心率等生理特征可有效解决此问题。

目前有关人体活动识别的研究主要通过以下方式实现:①在实验环境下,专业人员按照一定的规范采集加速度和陀螺仪等惯性数据(仅部分工作采用了生理信号,比如文献[4-6]),并进行标注;②将采集到的传感数据经过预处理后,通过启发式的方法人工提取特征信息[7-8];③将上述特征信息进行筛选和降维,并通过机器学习算法进行活动的分类和识别[9-11]。此类方法已经比较成熟,并在某些类别的活动识别中取得了不错的效果[12-13],但也存在一些问题。

首先,数据采集过程比较繁琐,普适化程度不高[14]。其次,传统的机器学习算法的分类效果严重依赖于提取特征的全面性和表示能力,而这需要相应领域的专家知识[15-16]。在多模态传感器存在的情况下,不同类型的传感数据(比如加速度和心电)的特征工程需要不同领域的专家知识,这极大增加了人体活动识别的难度。尤其是,相比于加速度等惯性信号,心率等生理信号具有特有的长期时序依赖[17],现有工作对此考虑不足。最后,为了有效融合多模态传感数据,需要人工设计不同的融合算法[17-18],特征工程、信息融合与分类算法是分开进行的,没有实现端到端的一站直达式系统,这在一定程度上提高了人体活动识别应用的门槛。

针对以上问题,本文提出了一种基于多模态信息融合的可穿戴人体活动识别系统——iWearRT。首先,设计了iWearRT的整体系统框架,规划了系统模块的组成、分工、采集软件以及采集实验,方便了普适环境下的数据采集工作;其次,将可穿戴设备上的各类传感器获取的惯性和生理数据进行了初步预处理,设计了LSTM-RNN深度神经网络来自动提取传感数据的特征(尤其是长期时序依赖),并进行多模态传感器的自动融合,如此实现了从原始数据到分类结果的端到端学习;最后,对本文提出的方法进行了实验验证与分析。

1 可穿戴人体活动识别系统方案设计

1.1 系统总体设计

将可穿戴人体活动识别系统设计为三部分:数据采集部分、数据传输部分以及数据处理部分。数据采集工作主要由穿戴在人身上的各类传感器完成,它们以一定的频率收集人的加速度、角速度等惯性信息和心率、呼吸等生理信息。采集的传感数据通过Zigbee或蓝牙等网络模块发送到随身携带的智能手机上,可以由智能手机进行数据处理和识别任务;也可以将传感数据在手机端进行基本的降噪、筛选、压缩等操作,并将它们传送到远端云平台。云平台具有强大的并行计算能力,能高效地进行大数据的分析、处理和可视化操作。系统总体架构如图1所示。

在人体活动识别应用中,各类可穿戴传感器不仅要在各种场景下随人移动,而且要全面捕捉人体的生理和运动状况,因此,各传感器佩戴的位置对系统的设计也至关重要。文献[19]充分考虑了人体适合放置可穿戴计算机的部位以及人体对自身的感知范围(如图2所示),本系统选用其中的位置d来放置心率等生理信号传感器和加速度、陀螺仪等惯性传感器,并选用位置c和h来放置惯性传感器,智能手机可放置在人体的任何位置,一般会选择放在位置f的口袋中。

图1 可穿戴人体活动识别系统架构

图2 适合放置可穿戴计算机的部位[19]

1.2 数据采集软件

为便于收集各类传感器数据,在智能手机上基于Android平台开发了一个通用的数据采集软件系统——SomaticLog。

SomaticLog可运行在Android 2.3.3及以上版本的平台上,能够记录智能手机自身内置的各类传感器的感知数据,比如GPS、加速度、角速度以及光强、大气压等,也能通过蓝牙等无线网络接收各传感器节点发送来的传感数据。此外,SomaticLog提供了用户友好的图形化人机交互界面,可供用户自由选择需要记录的传感器类型,方便配置其采样频率,并可通过选择菜单项的方式标记当前的运动和活动类型,方便进行样本数据的标注。

数据采集软件系统界面如图3所示,图3(a)是系统主界面,由三部分构成:第1部分用于标记数据采集的地点、活动(运动)类型、手机摆放的位置、方向以及屏幕的朝向等,部分下拉菜单可见图3(b)~图3(d);第2部分显示了智能手机自带传感器感知到的部分数据,如加速度、磁场、光强等;第3部分显示了从生理传感设备传递来的部分数据,如心率、呼吸率、身体姿态倾角等。当有新的传感器接入时,可通过添加组件的形式进行扩展。获取的数据样本既可以保存在本地闪存卡上,也可通过UDP协议实时地发送到远程云平台,以便后续进行处理。

图3 SomaticLog软件界面

1.3 数据采集实验

为了验证本文方法的有效性,进行了模拟场景实验。选用的实验设备有:一部运行Android 2.3.3系统的HTC Sensation G14智能手机,一条BioHarnessTMBT无线传感胸带,以及3个独立的无线运动传感模块(Inertial Measurement Unit,IMU)。胸带位于图2位置d处,主要用于采集心率;每个IMU内嵌两个三轴加速计、一个三轴陀螺仪和一个三轴磁力计,可提供12通道传感数据,分别位于c、d、h处,用于捕捉躯干、手腕和脚腕的运动。

本试验共有23个测试者,其中包括18个男性和5个女性。他们的生理状况,比如年龄、体重、身高和体质指数,如表1所示。各测试者分别通过SomaticLog采集并标注了十三类日常活动的传感数据,包括躺、坐、站、走、跑、骑自行车、撑杆走(Nordic Walking)、上楼、下楼、跳绳、看电视、开车和电脑前工作。

表1 被试主体的生理状况

一个人一类活动持续1 min对应的传感数据为一组,一共采集得到1 240组数据,其中,每类活动的数据不少于30组。随机抽取其中的90%作为训练数据来建模,剩下的10%作为测试数据来检验模型的分类效果。

2 人体活动识别算法设计与实现

2.1 传感器数据预处理

如果将原始传感数据直接输入识别算法,效果往往不够理想,这是因为信号的质量受很多因素影响,其中最常见的是高频噪音和信号丢失。

图4 滤波前后加速度信号变化

加速度、角速度等惯性信号在激励、检测和传输过程中,会受到不同程度的随机噪声的污染。这些噪声信号的频带宽、信号强,与人的运动信息混杂在一起,容易将真实的运动信号淹没。由于人的自然活动通常变化较慢,主要为低频信号,因此可行的方法是使用低通滤波器滤掉高频噪声信号。本文选取了Butterworth低通IIR数字滤波器对原始加速度、角速度进行滤波处理,从图4可以看出,带有噪声的加速度数据经过低通滤波后,噪声被有效地消除了,而加速度信号的特征和细节被保留下来。

此外,人呼吸引起的胸部起伏会对采集的生理信号造成影响,佩戴生理传感设备时,其与皮肤的接触和摩擦程度也会影响生理信号数据的测量和记录,比如,靠电传导工作的智能胸带与皮肤接触不良时,容易发生信号漂移与数据丢失现象。而且,相对于加速度而言,心率传感信号的固有频率低,采样频率不宜过高,导致了在同一时间窗口内心率数据少于加速度数据。为了补全上述缺失的数据而不改变生理特征的内在模式,采用线性插值的方法计算缺失的数据。

由于人体活动识别算法的输入是连续采集的惯性信号和生理信号等数据,对应于一个很长的序列,不适合直接进行特征提取和分类,因此通常在对这些信号做其他处理之前,会先对其进行加窗操作。所谓加窗就是把较长的信号分割成许多具有相同长度的重叠的窗口。本系统将滑动窗口的长度设为2.56 s时长的传感序列样本数,其中加速度传感器的采样频率为100 Hz,因此一个窗口的长度为256,并且设置相邻两个窗口间相互重叠50%,如图5所示,陀螺仪、磁场、心率等其他传感器以此类推。

图5 加速度信号加窗

2.2 人体活动识别算法分析

人体活动识别属于监督式分类问题,中心环节是分类器的设计与实现。

在现有的人体活动识别研究中,为了有效进行活动的区分,需要从原始数据中启发式地人工提取能够表示活动的时域、频域和时频域等各类特征。找出能够充分表示各类活动的特征是十分困难的,严重依赖于专家知识,并且不同类别的数据,需要不同领域的先验知识(如惯性特征有别于生理特征)。此外,人体活动是一个持续的过程,除了短时的内在模式,各类传感数据(尤其是心率等生理信号)还存在长期时序上的依赖关系。

近年来快速发展的深度学习技术强调直接从原始数据开始进行端到端的学习,不用像过去一样要先人工设计特征,因此能有效解决特征提取问题。为了达到信息保持与传递的目的,研究者们为传统神经网络添加了循环递归模块,形成了递归神经网络RNN(Recurrent Neural Network)。RNN能够有效利用上一时刻的输出结果,比较适于用来处理时序数据。此外,相对于浅层模型,深层模型可以更好地融合不同类型的输入数据,能够有效进行多模态传感器的融合[20]。

长短时记忆网络LSTM(Long Short-Term Memory Network)是一种特殊形式的RNN网络,它的各个隐藏层由一系列递归相连的存储块组成,每个存储块包括一个记忆单元,内含输入、遗忘和输出3个门,它们可以对记忆单元进行读、写和复位操作,控制信息在不同记忆单元之间传递,有效解决了普通RNN的“梯度消失”问题。

一个LSTM记忆单元的结构如图6所示,记忆单元的状态通过以下公式进行更新:

it=σ(Wi·[ht-1,xt]+bi)

(1)

ft=σ(Wf·[ht-1,xt]+bf)

(2)

ot=σ(Wo·[ht-1,xt]+bo)

(3)

ct=ft*ct-1+it*tanh(Wc·[ht-1,xt]+bc)

(4)

ht=ot*tanh(ct)

(5)

式中:it,ft,ot,ct和ht分别代表在t时刻,输入门、遗忘门、输出门、控制单元和记忆单元的输出。bi,bf,bo,bc分别为对应的偏置向量。Wi,Wf,Wo,Wc为权重矩阵。

图6 LSTM记忆单元结构图

图7 设计的LSTM-RNN深度神经网络结构

2.3 人体活动识别算法设计

为了进行人体活动识别,设计了用于训练传感数据的深度神经网络结构,并采用Google的深度学习开源平台Tensorflow来实现。该网络结构一共包括三部分,分别是输入层(Input_Layer)、输出层(Output_Layer)和用于进行LSTM-RNN训练的隐藏层(LSTM_Cells),如图7所示。

图7为Tensorflow可视化工具tensorboard绘制的网络结构图的主干部分。从图7可以看出,本文设计隐藏层为两层LSTM的结构,以此来增加网络深度,充分挖掘LSTM对人体活动的表示能力,以及弥补浅层模型对输入特征的融合能力的不足。

将Input_Layer输入层扩展开,得到图8(a)所示的计算流程。从图8可知,输入层的主要工作包括:训练数据X经过维度转换后,与权重hidden_weight、偏置hidden_bias进行线性加权,并通过Relu激活函数处理,处理后的结果作为输入传入LSTM_Cells隐层,即:

f(X)=max(0,X·hidden_weight+hidden_bias)

(6)

图8 输入输出层计算流程

图9 LSTM-RNN训练流程图

两个隐藏层分别对应一个LSTM单元,一个LSTM单元的结构如图6所示。第1层LSTM单元(LSTM_Cell_1)的输入由两部分组成,分别为输入层传入的数据和上一个时间点LSTM_Cell_1的状态输出;同理,第2层LSTM单元(LSTM_Cell_2)的输入也由两部分组成,除了LSTM_Cell_1的计算输出,还包括上一个时间点LSTM_Cell_2的状态输出。对应的LSTM_Cells整体结构如图9所示。

LSTM_Cells隐层计算的结果与权重out_weight、偏置out_bias进行线性加权后,结合训练数据的标签y,计算softmax交叉熵损失,并得到对应的识别准确率,如图8(b)所示,对应的损失计算公示如下:

(7)

式中:H代表LSTM_Cells隐层的计算结果,K表示活动类别的数目,图9中K=6。Li表示样本属于第i类活动的交叉熵分类损失,它越大,样本属于第i类活动的概率越小。基于此,反向传播算法反向逐层进行权值的更新和网络模型的训练。

在仅融合加速度和心率的场景下(即表5中的Acc+HR组合),躯干、手腕、脚腕三处各两个三轴加速度,共有18个数据通道(用n_channels表示),外加一路心跳数据,总计19个数据通道,每通道数据的窗口长度(用seq_len表示)为256,因此,在一个时间窗口内的数据(seq_len,n_channels)即为一个256×19的矩阵。比如,在19个数据通道中,躯干处佩戴的三轴加速度的X轴、Y轴以及心跳3个通道在一个时间窗口内的数据可分别表示为[body_acc_x_0,body_acc_x_1,…,body_acc_x_255],[body_acc_y_0,body_acc_y_1,…,body_acc_y_255],[heartbeat_0,heartbeat_1,…,heartbeat_255]的列矢量,因此,在一个时间窗口内19个数据通道提供的训练数据堆叠起来可表示为[[body_acc_x_0,body_acc_y_0,…,heartbeat_0],[body_acc_x_1,body_acc_y_1,…,heartbeat_1],……,[body_acc_x_255,body_acc_y_255,…,heartbeat_255]]的256×19矩阵。其中的每一项(比如第k项[body_acc_x_k,body_acc_y_k,…,heartbeat_k])对应了19路数据的拼接,实现了原始数据层的融合。

在模型训练阶段,将上述训练数据进行批量输入(用batch_size表示批大小),以实现训练效率和训练效果的折中,则一次输入神经网络的数据为(batch_size,seq_len,n_channels)维度的三维矩阵。批大小可根据情况来设定,本系统一律设为1 024。为方便后续神经网络的训练,在LSTM-RNN输入层需要将其维度转换为(seq_len,batch_size,n_channels)的形式,并逐层向后传播。总体训练流程如下:原始数据经过维度转换传入输入层,输入层对应的神经元数目为19;将随后的两个LSTM隐层的神经元个数设为57,其中每一个LSTM单元训练的序列长度为256,如图9所示。经过一定迭代次数的前向和反向传播过程,LSTM-RNN网络的各项参数得到逐步调整和更新,准确率和损失趋向于收敛,最终得到稳定的网络模型。

3 实验与分析

基于LSTM-RNN的人体活动识别模型是在Ubuntu 16.04平台上,由TensorFlow框架通过NVIDIA GTX 1060显卡硬件加速训练得到的。训练过程中的超参数,比如学习速率、批大小、损失系数和训练迭代次数,都由多次赋值测试并进行筛选得到,此处分别选用0.002 5,1 024,0.001 5,300。

首先,考虑特征工程对活动识别准确率的影响,并采用公开的UCI HAR数据集进行实验,此数据集通过固定在腰部的手机来记录三轴加速度和三轴陀螺仪数据,以识别走路、上楼、下楼、坐、站、躺6种活动[21]。针对此数据集,采用以下3种方案分别进行活动识别。方案1采用决策树算法直接在Anguita等人[21]提取的561个特征的基础上进行活动识别,实验结果如表2所示。方案2通过一个通用的时序特征提取工具tsfresh[22]对原始数据每一通道的各窗口分别提取275个时域或频域特征,并输入决策树进行活动识别,分类效果如表3所示。方案3通过LSTM-RNN直接对原始数据进行训练,分类混淆矩阵如表4所示。

表2 基于专家知识提取特征的识别效果

表3 基于通用时序特征的识别效果

表4LSTM-RNN的分类混淆矩阵

从实验结果可以看出,特征的提取对于活动识别的准确率有很大影响。采用专门针对活动识别优选的561个特征,经过决策树算法训练后识别准确率高达94%;而采用tsfresh提取的特征,同样经过决策树算法训练后,识别准确率仅有83%;最后,通过LSTM-RNN直接对原始传感数据进行训练,活动识别的准确率可达93.28%。方案3识别的准确率和方案1相比差别不大,但是无需手工提取特征,避免了特征提取方法不完善导致的低准确率(如方案2),减少了对专家知识的依赖。

为了考察多模态传感器融合的活动识别效果,并与现有工作(文献[17])相比较,进行如下实验。将SomaticLog采集的13种活动类型重新归为6类,包括躺、静止(坐或站)、走路、跑步、骑车和其他(所有剩余的活动类别)。并将4种传感器采集的数据(加速度Acc,角速度Gyro,磁场Mag,心率HR)进行交叉组合,构成了6类不同的组合数据集(如表5所示)。针对此6类数据集,设定训练迭代次数为300,并记录每次迭代训练后测试数据的分类准确率、训练损失和最终的F1-score。图10所示为仅由加速度传感数据进行训练的过程。从图10可以看出,随着迭代次数的增加,测试集的分类准确率逐渐升高,训练损失逐渐减少,最终达到收敛。

图10 LSTM-RNN训练迭代趋势

由于训练过程中参数优化的随机性,每次模型训练的结果略有差异。为此,分别对6类数据集各训练八次,取准确率和F1-score的均值和方差,得到表5所示的结果。MARCEL是文献[17]提出的分类器级的多模态数据融合人体活动识别方法。从表5可以看出,与之相比,LSTM-RNN能够自动融合不同的多模态数据,得到了更好的识别准确率,并且融合的传感器类型越多,准率越高。

从表5还可以看出,在仅有加速度的数据集(Acc)基础上,加入心率(Acc+HR),识别准确率得到了一定程度的提升;在仅有惯性传感数据的数据集(Acc+Gyro+Mag)基础上,加入心率(Acc+Gyro+Mag+HR),识别准确率也得到了一定程度的提升,这说明生理信号能够对人体活动识别起到积极的辅助作用。

表5 不同模态数据融合的分类结果与比较(均值±方差)

最后,从所有类别的活动中取出其中的6类,分别是躺、坐、站、看电视、开车和电脑前工作,并通过LSTM-RNN算法进行如下实验。首先,仅利用胸部佩戴的四类传感器(即Acc+Gyro+Mag+HR)采集的数据来分类上述6类活动,然后,用所有传感器采集的数据来分类此6类活动,并进行对比,结果分别如表6中E1、E2所示。从表中E1可以看到,仅通过躯干处的惯性传感器和心率,无法准确的区分此6类活动。直观上理解,此6类活动的运动强度都不大,而且对应的躯干处的运动模式类似,造成分类效果不佳。当采用本文设计的传感器佩戴方式,全面捕捉躯干和四肢运动,融合身体各部位的各类传感数据后,可以更准确地区分开此6类活动。

表6 LSTM-RNN 10种活动分类结果

4 结束语

本文提出了一种融合惯性信号和生理信号等多模态传感数据的可穿戴人体活动识别系统iWearRT。首先,设计了iWearRT的总体系统框架,规划了系统模块的组成、分工,并重点研究探讨了可穿戴设备的传感器类型、佩戴位置、数据采集框架等;接着,将可穿戴设备上的各类传感器获取的惯性和生理等多模态数据进行了降噪、加窗等预处理,并设计了LSTM-RNN深度神经网络进行人体活动识别;最后,进行了模拟场景实验。实验结果表明,该方法无需人工提取特征,减少了对专家知识的依赖,并可自动融合异构传感数据,准确性高,分类效果好。

猜你喜欢
传感生理加速度
《传感技术学报》期刊征订
新型无酶便携式传感平台 两秒内测出果蔬农药残留
“鳖”不住了!从26元/斤飙至38元/斤,2022年甲鱼能否再跑出“加速度”?
打破生理“平衡”
基于BP神经网络的旋转血泵生理控制
天际加速度
创新,动能转换的“加速度”
死亡加速度
妈妈们产后的生理烦恼
“DIY式”小创新在神经电生理监测中的应用