基于树莓派的高精度跌倒检测装置设计与实现
2021-02-15朱海亮刘鹏达李艳丽徐展翼潘巨龙
朱海亮,刘鹏达,李艳丽,徐展翼,潘巨龙
(中国计量大学 信息工程学院,浙江 杭州 310018)
根据联合国人口预测数据,中国老龄化程度将在2030年左右接近发达国家水平,到2050年将超过发达国家的总体水平[1]。跌倒后如果得不到及时救助可能对老年人生命产生威胁[2],因此对于跌倒检测研究具有重要的现实意义。
目前常见的跌倒检测方法主要有视频分析法、环境感知法和穿戴设备检测法[3]。视频分析法[4-5]主要通过在室内固定位置安装摄像机实时监测被测对象运动状态,从而检测老人是否发生跌倒,这类方法虽然检测精度高但监控范围有限且容易暴露隐私。基于环境感知的方法[6]通过在室内多个位置安装传感设备记录老年人的活动,再通过融合诸如红外探测器、声音传感器和震动计等仪器得到的信息对跌倒行为进行检测,这类系统适用固定的室内场所,但存在多种监测设备安装繁琐等诸多不便。而基于可穿戴设备的跌倒检测系统有着随时随地检测、及时性高和可用于室外等优点,已经成为主流的跌倒检测方法之一。
张杰等[7]采用阈值法来判断跌倒行为,这种方法在固定跌倒数据库中的检测准确率为100%,但是在实际测试中只有92%检测准确率;卓从彬等[8]为不同年龄段的老人设置了不同的跌倒阈值,在MATLAB仿真实验阶段取得了不错的检测精度,但这种多阈值算法对不同佩戴者需要设置不同的阈值,过程较为繁琐,不适合实际使用;罗丹等[9]采用滑动窗口模型提取了跌倒行为的时域和频域特征,使用随机森林算法进行跌倒检测,该算法获得了95.2%的准确率、90.6%的敏感度和93.5%的特异度,但由于提取的特征不全面导致了识别精度不高;麻文刚等[10]利用支持向量机分类器检测跌倒行为,并根据人体姿态角,构建融合人体姿态角的PSO-SVM特征向量来进行跌倒检测,该方法取得了95.5%的准确率,96.5%的特异度,95%的敏感度。
针对以上问题,本文设计了一款利用树莓派和MPU6050传感器的高精度跌倒检测系统,提出了基于参数优化的支持向量机(support vector machines,SVM)跌倒检测算法。为了提高检测精度,本文参考Hussain等[11]列出的跌倒特征,共提取了64个特征并通过重要特征选择法进行降维,通过反复实验最终选择出最佳特征组合。实验结果表明,本系统在保持较高跌倒检测准确度的同时,有着较低的误报警率。
1 跌倒检测系统设计与实现
1.1 系统硬件框架
本文设计的老年人跌倒检测装置要求能在可穿戴终端中运行机器学习算法且不依赖于网络环境,性价比高的树莓派开发平台能较好满足该需求。除此之外本跌倒检测装置还包括存储单元、供电模块、蜂鸣器、传感器MPU6050,系统框架图如图1。
图1 跌倒检测实验系统框架Figure 1 Frameworks of fall detection experimental system
MPU6050是一款集三轴加速度计和陀螺仪为一体的MEMS数字传感器,如图2(a),其输出为数字信号,不需要A/D转换。MPU6050具有多个量程,根据实际运动加速度幅值情况本文选择的量程为±16 g。
图2(b)为树莓派3B+开发板,配有2.4 GHz/5 GHz双频Wi-Fi可以与PC端之间实现数据无线传输。图2(c)为志愿者戴上跌倒检测实验系统的实物图。
图2 跌倒检测实验装置Figure 2 A fall detection experimental system device
1.2 跌倒数据采集
数据采集阶段我们邀请了15位在读硕士研究生(5位女生,10位男生)作为志愿者来模仿老年人的动作,采集了如表1所示的各种动作数据集。考虑到老年人体弱及容易受伤等实际情况,因而数据采集阶段没有邀请老年人参加。同时我们为志愿者配备了两层10 cm厚的硬质垫子和软质垫子,并配备了护膝和护肘来保证志愿者的安全。
志愿者按照动作要求将跌倒检测设备佩戴在腰部,按照表1的要求每个动作重复5次,共计1 500组数据,包括动作幅度比较大的快跑、慢跑、跳跃和躺下等动作,因为这些动作是有可能在老年人的日常生活中发生的。对于跌倒动作,除了常见的前向、后向、侧向摔倒(F01-F03),我们还采集了另外四种运动幅度较小的跌倒动作(F04-F07)。
表1 本实验中涉及到的动作Table 1 Actions involved in this experiment
正常情况下人体运动产生加速度的频率一般不会高于20 Hz,根据奈奎斯特采样定理本文将采样频率设置为50 Hz,这样既满足了采样条件也降低了系统功耗。
1.3 数据的预处理和特征提取
首先,如果仅使用单一方向的加速度会影响跌倒检测判断精度,因此我们引进加速度均方根(root mean square,简称RMS)的概念[12]。同样的,HOR和VER分别表示水平方向和竖直方向的合加速度。计算公式如下,其中Ax,Ay,Az表示三轴加速度计的值。
(1)
(2)
(3)
其次,穿戴设备的传感器易受周边环境因素影响,需要对原始信号进行数字滤波。滑动平均滤波算法实现简单且对周期性干扰有良好的抑制作用,适合本文选用。图3是其中后向跌倒动作经过三阶滑动平均滤波前后的RMS曲线图,图3(a)为滤波前,图3(b)为滤波后。其中横轴为数据采集时间,纵轴为运动产生的RMS值(单位:g),由图3可以看到滤波后曲线更为平滑。
图3 滤波前后的跌倒曲线图Figure 3 Falling curves before and after filtering
此外,传感器采集到的是时序数据,需要采用滑动窗口模型提取特征向量。假设取传感器最后采集的n个元素作为一个数据窗口,每个窗口包含固定样本数集A={A1,A2,…,An}。一个窗口内的三轴(x,y,z)加速度计的数值可以表示为
Ai=[Ai(1),Ai(2),…,Ai(n)],(i=x,y,z)。
(4)
在特征提取阶段利用文献[13]中给出的方法,将RMS的最大值作为窗口中心,从中心点左右各取75个样本构成一个完整的窗口,对窗口内的数据按照表2提取特征。
表2 本文所提取的特征Table 2 Features extracted in this paper
此外,定义Theta为与人体倾斜角度相关的特征,加入这个特征之后,实验结果显示,对跳跃和快跑动作的误报警率大大降低,计算公式为
Theta=atan2(-Ax,Az)。
(5)
2 IGS-SVM跌倒检测算法设计
2.1 SVM算法原理介绍
SVM算法在解决小样本、非线性二分类问题时具有一定优势[14]。假设二分类问题线性可分,给定数据集T={(x1,y1),(x2,y2),…,(xn,yn)},SVM算法的主要思想是通过超平面wTx+b=0找到一个决策函数h(x),将数据分为正类和负类,其中w和b分别表示法向量和截距。通过最大化支持向量与分类平面之间的距离得到最优解,并可以转化为求解问题:
(6)
对于非线性可分的问题,需要引入核函数来克服高维空间中的计算问题。常见的核函数有线性核函数、径向基核函数、Sigmoid核函数。其中线性核函数的计算最为简单,径向基核函数的形式简单且平滑性比较好,通过实验比较本文选用径向基为核函数,公式为
(7)
2.2 SVM算法的参数寻优
SVM算法性能很大程度上依赖于模型参数的选择,使用径向基核函数的SVM模型包括两个重要的参数C和γ。
传统的网格搜索法先将C和γ规定在一个范围内,通过划分网格并遍历网格中所有的参数组合,然后选择使得模型分类准确率最高的那组参数作为最优参数。本文采用一种改进的网格搜索法(improved grid search,IGS),先在一个大的范围内对C和γ粗略搜索,找到局部最优参数。然后在局部最优参数中通过缩小搜索步长的方法来进行二次精确搜索,直至得到最优的参数组合,这样既能保证模型的精确度又能缩短搜索时间。
2.3 基于IGS-SVM的跌倒检测算法
本文提出的基于IGS-SVM的跌倒检测算法分为离线训练阶段和在线检测配置阶段,离线训练阶段流程如图4。
图4 离线跌倒检测训练阶段Figure 4 Offline fall detection training stage
在线检测阶段,将训练好的IGS-SVM模型保存至PC端,最后在树莓派嵌入式终端上进行配置,跌倒检测终端按照图5所示流程图进行检测。
图5 在线跌倒检测阶段Figure 5 Online fall detection deployment
考虑到跌倒检测算法大部分时间消耗在提取特征阶段,如果系统一直对采集到的数据提取特征,将会大大增加设备的功耗。在分析了本文所采集的实际跌倒数据集以及公开数据集SisFall[15]的跌倒数据后,我们把RMS的阈值设置为1.8 g,只有检测到当前的RMS值大于1.8 g时才执行特征提取和跌倒检测判断,否则直接判定为非跌倒动作,跌倒检测算法伪代码如下。
算法1:在线检测阶段伪代码1:while True do2: 读取加速度数据ax,ay,az并计算出滤波后的数据Ax,Ay,Az3: if RMS = A2x + A2y + A2z >= 1.8 g then4: 取左右各1.5 s的数据ax,ay,az并计算出滤波后的数据记为D,根据D提取特征向量X6: if IGS-SVM(X) is fall then7: 触发跌倒告警并退出循环8: end if9: end if10:end while
3 实验数据分析
3.1 实验设计
对于二分类跌倒检测算法,假设符号TP表示实际为跌倒,算法判断结果也为跌倒;TN表示实际为非跌倒,算法判断结果也为非跌倒;FP表示实际为非跌倒,算法判断结果为跌倒;FN表示实际为跌倒,算法判断结果为非跌倒。
常用的评估跌倒检测性能的指标有准确率(Acc)、敏感度(Sen)、特异度(Spe),定义式如下:
(8)
(9)
(10)
为了选出最适合系统的跌倒算法以及特征组合,我们将采集的1 500组数据样本用来筛选特征和训练模型。采用5折交叉验证的方法对本文IGS-SVM、随机森林(random forest,RF)、决策树(decision tree,DT)、K近邻(K-nearest neighbor,KNN)四种算法在四组特征上进行训练,并在验证集上进行测试,得到如表3所示的性能指标对比。其中各个特征组合的具体内容如下。
1) 根据表2的描述提取64维特征,从表3中得知对四种算法而言这个特征组合的性能指标最好,但是特征提取和模型检测过程中的耗时也是最高的。
表3 不同算法在验证集上的指标对比Table 3 Comparison of metrics of various algorithms on the validation set
2) 对1)中的特征进行过滤法(filter),删除方差小于0.5的特征得到27维度的特征。因为一个特征本身的方差很小,表示样本在这个特征上基本没有差异。
3) 尝试着舍弃合加速度特征,只对Ax,Ay,Az,Theta分别提取max,min,mean,var共16维特征。
4) 通过分析SisFall数据集和本文采集的数据集,发现3)中与min相关的特征对跌倒检测精度影响很小,删除之后得到12维特征。相较于1)中的特征,这个12维特征组合的计算开销要小很多。
由图6和表3可以看出本文设计的IGS-SVM算法检测精度要高于另外三种算法。而对于IGS-SVM算法而言,特征维度太高会出现过拟合现象,反而使检测精度下降,综合考虑检测精度和特征提取消耗时的功耗,系统最终选用12维特征组合,因较好地降低了数据特征维度,在保持较高跌倒识别精度基础上,也有较好算法实时性。
图6 四种算法的准确率对比Figure 6 Comparisons of accuracy of four algorithms
3.2 滑动窗口大小的选择
据统计,人体的一个跌倒动作过程一般不超过2 s,因此本文将滑动窗口大小分别设置为2 s和3 s,并将从检测准确度和耗时两方面进行对比。当窗口大小为2 s时,一个窗口内包含的样本数据相对较少,可以减少窗口数据在特征提取以及模型检测阶段的时间消耗,但这样也可能会漏掉少数的跌倒动作。二者的对比图如图7。
图7 滑动窗口大小对检测精度的影响Figure 7 Influence of sliding window sizes on detection accuracy
图7中横坐标Acc、Sen、Spe分别代表准确率、敏感度、特异度,纵坐标为跌倒检测精度。当窗口大小由2 s增大为3 s时,系统的敏感度提升了0.94%,特异度降低了0.44%,同时在实验中的平均跌倒告警响应时间增加了1.34 s。敏感度反映了模型识别跌倒的能力,是一个相对重要的指标,因此用延迟一秒左右的系统响应时间换取近1%敏感度的提升应该是可取的,综合考虑上述因素,本系统选择3 s为滑动窗口大小。
3.3 实验结果
为了验证本装置的跌倒检测准确率,我们邀请了2名年轻志愿者和2名50岁以上的志愿者,佩戴我们的跌倒检测设备分别按照表4和表5中的动作进行测试,其中各个测试动作的具体内容见表1。在测试阶段我们还添加了站立晕倒的动作,这个动作没有出现在训练集中,可以用来验证算法的泛化能力。
表4 年轻人跌倒检测结果Table 4 Fall test results of young people
由表4表5可计算出,在1 950次非跌倒实验和940次跌倒实验中,一共出现了26次误报警和30次漏报警,得出跌倒检测系统准确率为98.06%,敏感度为96.81%,特异度为98.67%。值得注意的是,对于训练集中没有出现的动作(站立晕倒)在实际检测效果也是非常好的,说明本文提出的系统具有较好的泛化能力。
表5 50岁以上志愿者跌倒检测结果Table 5 Fall detection results of volunteers over 50 years old
将本文的检测结果与文献[9]、文献[10]进行跌倒检测性能对比,结果如图8。其中横坐标为性能指标,纵坐标为对应指标的值,可以看出本文提出的方法三个指标均优于其它两种方法。
图8 与参考文献的精度对比Figure 8 Accuracy comparison with two references
4 结 语
本文基于树莓派设计并实现了一款穿戴设备跌倒检测系统,提出了一种改进的参数优化SVM跌倒检测算法。实验结果表明,该系统对年轻人和老年人都可以有效地识别跌倒与非跌倒动作,同时有较好的泛化性能。本方案的优点在于其采集和测试的动作种类比较全面,基本涵括了老年人日常生活中常见的动作,因此本系统有较好的实际应用价值。另外,本系统还具备可供拓展的功能接口,后续可以加上诸如SMS短信报警模块。后续的研究内容是将系统的功耗降低、可穿戴设备的体积减小,并引入新的特征选择方法[16]来进一步提高跌倒识别率以及系统的时效性。