当前位置:首页 期刊杂志

基于特征自动提取的跌倒检测算法*

时间:2024-05-22

胡双杰,秦建邦,郭 薇

(上海交通大学区域光纤通信网与新型光通信系统国家重点实验室,上海 200240)

跌倒是导致老年人受伤甚至死亡的主要原因[1]。研究表明,在65岁以上的老年人中,有三分之一的人每年至少经历一次跌倒[2],其中4%~15%的跌倒会导致严重的受伤。而在与受伤相关的老年人死亡案例中,有23%~40%是由跌倒引起的[3]。虽然我们很难避免跌倒的发生,但如果能准确的检测到跌倒情况,并及时发出求救信号,可以有效降低严重受伤或死亡发生的概率。

随着智能手机、智能腕表等可穿戴设备的快速发展,基于可穿戴传感器的跌倒检测系统吸引了越来越多的关注。与其他基于环境设备(如摄像头[4]、体感传感器[5]、WiFi[6]等)的跌倒检测系统相比,可穿戴传感器(如加速度计、陀螺仪、方向计等)可以被随身携带,实现全天候全方位的监测,因此在实际生活中具有更广泛的使用价值。另外,摄像头等设备设计用户隐私问题,部分老年人不希望受到摄像头的监视,而可穿戴传感器则较好的避免了这个问题。

阈值法和机器学习分类算法是目前使用较多的跌倒检测方法。阈值法通过设置一个或多个阈值来检测跌倒[7]。当接收信号超过(或低于)预设阈值,便判断为一次跌倒。机器学习方法利用训练数据训练分类算法模型(如支持向量机、决策树、K近邻算法等),并利用训练好的模型对新的数据进行分类判断。上述两种方法都依赖于人工设计提取的特征来区分跌倒和非跌倒数据。特征主要通过对原始信号在时域或频域的统计分析得到。刘鹏等人[8]提取加速度信号幅度向量SVM作为考察人体活动强度的特征。Sucerquia等人[9]选择了两个基于能量熵的特征作为分类算法的输入。Vavoulas等人[7]共提取了均值、中值、标准差、能量熵等57个特征以更好的反映信号的变化情况。

尽管这些人工设计提取的特征可以在特定的数据集上表现出较好的性能,但仍然存在着一些问题。第一,特征工程要求研究人员具有人体运动学方面的专业知识,以寻找合适的特征。然而生活中有许多与跌倒过程十分相似的运动(如坐下,躺下等),要人为设计能够完全区分这些运动状态的特征是一项困难的工作;第二,如果提取的特征不合适,会导致原始数据中重要信息的丢失,这会影响算法最终的识别精确度;第三,特征值的计算占据了算法大部分的运行时间。Inoue等人[10]的实验结果表明,特征提取部分至少需要11 ms的时间,而算法的分类判断部分仅需1 ms。在传感器采样频率较高的情况下(如100 Hz以上),算法中特征计算部分消耗的时间会影响系统的实时性。

为解决上述问题,提高跌倒检测算法的精确度和实时性,本文使用深度学习模型代替阈值法或传统机器学习分类算法,提出了一种基于长短期记忆LSTM(Long Short-Term Memory)循环神经网络RNN(Recurrent Neural Network)的跌倒检测算法。模型包含输入层、非线性激活层、两层级联的LSTM隐藏层以及Softmax分类器。算法首先利用滑动时间窗获取传感器数据,原始数据经过简单的预处理便可直接作为模型的输入。神经网络通过对训练数据集迭代的学习寻找出合适的数据特征,并最终输出其对输入数据类别的判断(跌倒或非跌倒),实现端到端的处理。

我们使用两个公开数据集MobiAct[11]和SisFall[12]对算法性能进行评估。MobiAct数据集利用智能手机内置的加速度计,陀螺仪和方向计采集人体运动过程中的信号,手机被随机放置于志愿者任意一侧的裤袋中,且不规定手机放置的方向。而SisFall数据集利用固定在志愿者腰部的嵌入式设备采集加速度计和陀螺仪信号。为保证运动类型的完善,两个数据集都采集了多种跌倒与非跌倒运动类型的数据。

1 基于LSTM的跌倒检测算法

1.1 LSTM网络结构

LSTM网络是一种门控循环神经网络(Gated RNN)。该模型除了外部的RNN循环外,还具有内部的“记忆细胞”循环,即自循环。引入自循环的思想,可以产生梯度信息长时间持续流动的路径,从而解决普通循环神经网络优化过程中存在的长期依赖(Long-Term Dependencies)问题[13,14]。因此,相比于普通RNN,LSTM网络更适合处理较长的时间序列数据。

LSTM的结构图如图1所示。其中最重要的组成部分是记忆细胞,它所存储的状态贯穿于整个网络,只进行少量的线性交互,这样可以保证梯度信息在长期传播过程中保持稳定[15]。另外LSTM中还包括3个门控单元(一种让信息选择性通过的结构):“遗忘门”决定需要从细胞状态中丢弃的信息;“输入门”确定添加到细胞中的新信息;“输出门”确定最终的输出。

图1 LSTM内部结构图

神经元在t时刻的输出响应ht由该时刻的输入xt和前一时刻的输出响应ht-1共同决定:

ht=θ(Wxixt+Whhht-1+bh)

(1)

式中:θ(·)表示激活函数,bh表示偏置向量,Wxh表示输入与神经元之间的权值矩阵,Whh表示神经元内部自循环的循环权值矩阵。神经元内各部分在t时刻的具体运算如下:

it=σ(Wxixt+Whiht-1+Wcict-1+bi)

(2)

ft=σ(Wxfxt+Whfht-1+Wcfct-1+bf)

(3)

ct=ft⊗ct-1+it⊗tanh(Wxcxt+Whcht-1+bc)

(4)

ot=σ(Wxoxt+Whoht-1+Wcoct-1+bo)

(5)

ht=ot⊗tanhct

(6)

式中:⊗表示向量之间的哈达玛积,σ(·)表示sigmoid函数:σ(x)=1/(1+e-x),W**表示任意两个单元之间的权值矩阵,b*表示某一单元的偏置。

1.2 跌倒检测模型设计

为实现从原始传感器数据到最终判断结果的端到端处理,本文设计了一个基于LSTM网络的跌倒检测模型。模型结构如图2所示,它主要由4个部分组成:

①输入层:接收来自三轴加速度计和三轴陀螺仪的时间序列数据。通过滑动时间窗对原始数据进行序列化分割处理后,截取得到包含n个采样点的数据x=[x0,x1,…,xt,…,xn-1]作为后续网络的输入,其中n表示数据的长度(亦即滑动时间窗覆盖的采样点数),xt=[xt_accx,xt_accy,xt_accz,xt_gyrox,xt_gyroy,xt_gyroz]为t时刻的数据。因此x是维度为[6,n]的二维向量。

②非线性层:我们在输入层与LSTM隐藏层中间加入了非线性激活层,目的是引入更多的非线性特征,从而更好的反映数据的变化规律。该层的输出可表示为:

rt=ReLU(WNxt+bN)

(7)

式中:ReLU(·)为激活函数,WN表示该层的权值矩阵,bN为偏置向量。

③LSTM隐藏层:模型中包含两层级联的LSTM网络。根据式(1)和式(2)~(6),网络对输入数据进行了一系列的线性与非线性变换。两层级联的结构可以保证模型能够学习到足够丰富的特征。具体而言,网络内部的权值矩阵在训练阶段不断迭代更新,直到接近最佳值。这些权值代表了模型从训练数据中学习提取到的特征,能够反映时间序列变化的规律。但由于这些权值并不具有显示的意义,我们将这样的网络层成为隐藏层。

④Softmax分类器:对经过神经网络处理的数据进行分类判断(跌倒或非跌倒)。分类器由两部分组成:首先通过一层线性变化计算输入数据属于某一类的未归一化概率:

z=Wchn-1+bc

(8)

式中:Wc表示该层的权值矩阵,hn-1为LSTM隐藏层的输出,bc表示偏置向量;然后根据式(9)将概率值归一化,并将预测概率最大的一类作为最终的输出结果:

(9)

此处pi表示各类别的归一化概率值,C为类别数(本文中C=2)。

图2 跌倒检测神经网络模型结构

1.3 模型训练策略

模型的损失函数定义为:

(10)

显然,损失函数的值越小,表明模型的预测结果越准确。我们利用梯度下降法迭代地寻找损失函数的最小值,每一步迭代后通过反向传播更新网络中的权值ω,使得模型不断优化。损失函数的梯度L可以表示为:

(11)

梯度下降法在损失函数的负梯度方向上迭代地寻找局部最优解,反向传播机制[16]将每一次迭代的信息传递给各网络层的权值矩阵ω,并根据式(12)更新矩阵:

ωt=ωt-1-εL

(12)

此处ε表示每次迭代的学习率。为使模型的训练更加快速而稳定,我们采用了衰退学习率:

ε=(εsrd)ec/ed

(13)

式中:εs为初始学习率,rd表示衰退率,ec为当前训练的迭代次数,ed则是预设的超参数,可控制学习率衰退的快慢。衰退学习率会随着迭代次数的增加而减小,因此,在训练初期,学习率较大,模型可以快速地接近最优解;而在训练后期,学习率逐渐变小,模型的训练也趋于稳定,最终收敛于最优解附近。

2 实验及结果分析

2.1 实验数据集

我们使用两个公开数据集测试模型的精确度和时延。第1个数据集为MobiAct。该数据集使用Samsung Galaxy S3智能手机内置的LSM330DLC惯性传感器模块采集志愿者运动过程中的三轴加速度计、陀螺仪及方向计数据,采样频率设置为200 Hz。数据集采集自66名志愿者(51名男性,15名女性,年龄分布为20至47岁),包含了4种不同类型的跌倒姿势和12种不同类型的非跌倒运动。智能手机被随机放置于志愿者任意一侧的裤袋中,且不规定手机放置的方向。利用时间窗对数据集进行序列化预处理后,我们共得到7 633例非跌倒数据和767例跌倒数据。

第2个数据集为SisFall,该数据集使用可穿戴嵌入式设备采集志愿者运动过程中的三轴加速度计、陀螺仪数据,采样频率同样为200 Hz,设备被固定在志愿者的腰部。38名志愿者被分为两组:23名年轻志愿者及1名60岁的柔道运动员提供了15种跌倒姿势和19种非跌倒运动数据;其余14名老年志愿者只提供15种非跌倒运动数据。利用时间窗对数据集进行序列化预处理后,我们共得到3 753例非跌倒数据和1 798例跌倒数据。

一次跌倒过程的持续时间一般为10 s左右,为保证时间窗截取到完整的跌倒过程,同时结合两个数据集各自的样本时长,我们对MobiAct采用时长为8 s的时间窗,对SisFall采用时长为12 s的时间窗。

图3展示了典型的跌倒与非跌倒运动的加速度、角速度信号变化情况。

图3 跌倒与非跌倒运动(步行、慢跑、坐下)的 加速度、角速度信号变化情况

2.2 评估指标

跌倒检测属于二分类问题,模型只需分辨跌倒和非跌倒运动两种类别即可。二分类模型的判断结果可能存在以下4种情况[17]:

①TP(True Positive):跌倒发生且系统成功检测到,属正确判断;②TN(True Negative):未发生跌倒且系统未检测到跌倒,属正确判断;③FP(False Positive):未发生跌倒但系统仍然检测到,属误判;④FN(False Negative):跌倒发生但系统未检测到,属漏判。

根据以上4种情况,可以得到ACC(accuracy)、SEN(sensitivity)和SPE(specificity)3种模型评估指标:

(14)

(15)

(16)

ACC反映了模型的总体精确度,SEN反映了模型识别跌倒的能力,SPE反映了模型识别非跌倒运动的能力。

另外,算法的时延同样是一个重要的评估指标,它反映了算法的时间复杂度。较低的时延可以保证系统能够在较高的采样频率下运行。

2.3 实验设计与结果分析

本实验使用TensorFlow深度学习框架搭建了跌倒检测神经网络模型,并使用实验数据集检验模型的精确度和时延。实验在个人电脑上完成,处理器型号为Intel core i5。网络模型的超参数设置如表1所示。经过实验比较,在这些参数值下模型的收敛速度较快,训练精确度也较高。

表1 跌倒检测神经网络参数设置

两个实验数据集均被随机划分为两部分:70%的数据作为训练集,其余30%的数据作为测试集。训练过程中,每一轮迭代时将1/7的训练集数据作为验证集,测试模型的泛化能力。为提高模型训练的效果和效率,我们对数据进行了简单的预处理。首先我们将原始数据减采样至50 Hz以减少计算量,并对数据作归一化处理以加快模型训练的收敛速度。

图4以混淆矩阵的形式展示了LSTM网络模型在两组测试集上的表现。尽管MobiAct数据集中的跌倒与非跌倒样本比例严重失衡(约为1/10),但最终在包含2 520个测试样本的测试集上判断错误的样本数仅为8例(4次误判,4次漏判);同样,在SisFall数据集的1167例测试数据上,模型判断错误的样本数仅为7例(3次误判,4次漏判)。较低的误报率和漏报率说明算法在两个数据集上都表现出了较高的识别精确度。

图4 算法在MobiAct和SisFall测试集上的混淆矩阵

表2从精确度和时延两方面进一步评估了算法的性能。作为比较,我们测试了其他深度学习模型的性能,比较模型包括一个两层的卷积神经网络(CNN),一个两层的循环神经网络(RNN)以及一个CNN-LSTM混合网络。其中RNN和CNN-LSTM中的LSTM部分的参数设置与表1所列相同;CNN和CNN-LSTM中的CNN部分采用了维度为[1,50]的一维卷积核,其余参数与表1一致。

由表2数据可知,本文提出的LSTM网络在MobiAct和SisFall数据集上都达到了较高的精确度,其中ACC分别为99.68%,99.58%;SEN分别为98.24%,99.27%;SPE分别为99.83%,99.73%。同时,算法时延可以保持在2.2 ms以内(分别为1.221 ms,2.164 ms)。CNN网络和CNN-LSTM网络同样可以在数据集上达到较高的精确度,但它们的时延要大于LSTM。尤其是CNN-LSTM网络,虽然其精确度与LSTM网络相近,但时延远远大于后者(16 ms以上),这在采样频率较高的情况下会影响系统的实时运行。RNN网络的时延要小于LSTM网络,这是因为RNN的结构比LSTM简单,网络内部的参数更少,计算更加快速。但它的精确度相比于其他网络下降了许多,ACC仅为96%左右,SEN甚至降到了91%左右。这说明普通的RNN网络不适合处理较长的时间序列数据。综上所述,本文提出的跌倒检测网络可以更好的平衡精确度和时延两方面的性能。

SEN反映了算法识别跌倒数据的能力。在实际使用中,我们不希望漏报任何一次跌倒,因此算法的SEN显得尤为重要。在表2中,MobiAct数据集上的SEN均低于SisFall数据集,这主要是MobiAct数据集中跌倒与非跌倒样本比例不均衡导致的。这也提醒我们在实际应用中,应尽量保证训练数据集正负样本比例的均衡。

3 结论

本文提出了一种基于可穿戴传感器的LSTM跌倒检测神经网络模型。通过滑动时间窗截取时间序列传感器信息(包括加速度、角速度等信息),原始数据只需进行归一化等预处理便可作为模型的输入。神经网络通过训练自动学习并提取数据内部的特征,再利用分类器判断是否为跌倒数据。该方法省去了人工的特征提取,实现了从原始数据到判断结果的端到端处理。我们使用MobiAct和SisFall两个跌倒检测数据集测试模型的性能。实验结果显示,本文提出的跌倒检测模型可以达到较高的精确度(99.58%~99.68%)和较低的时延(2.2 ms以内)。与其他类似模型相比,LSTM跌倒检测模型能够在两方面性能实现较好的平衡。

实验主要使用中青年跌倒数据来近似模拟老年人跌倒数据,实验结果验证了所提算法的可行性。但要得到一个真正适用于老年人跌倒检测的模型,还需要采集足够多的老年人的跌倒数据来进一步训练优化模型,使得模型能够提取出更适应老年人的数据特征。

本文的测试工作主要为离线测试。目前深度学习在基于可穿戴传感器的跌倒检测问题的应用尚未得到广泛的研究。这主要是受限于可穿戴设备的计算能力和能耗问题。但是嵌入式神经网络处理单元(NPU)和针对嵌入式设备的轻量级深度学习框架(如TensorFlow Lite)的发展使得在可穿戴设备或智能手机上运行神经网络成为可能。在未来的工作中,我们需要测试模型的在线使用性能,如在智能手机上的运行效果。算法的能耗也是一个应当考虑的因素,我们需要制定一个低功耗的实时运行框架,以保证系统的正常使用。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!