一种摔倒检测算法的制作方法

文档序号:13259523阅读:773来源:国知局
一种摔倒检测算法的制作方法

本发明涉及一种算法,尤其涉及一种基于devicemotion的摔倒检测算法,属于模式识别技术领域。



背景技术:

随着经济发展以及医疗水平的不断提高,老年人的养老安全问题已引起社会各界的关注。事实上,摔倒已经成为了目前导致老年人受伤、住院治疗以及死亡的首要原因。有研究表明,对老年人摔倒事件的及时发现能有效的降低老年人受到的损伤,因此,自动化的老年人摔倒检测与预警系统具有极其重要的应用价值,而高准确率的摔倒检测算法则是任何该类系统必须要面临的问题。

传统方法往往是基于阈值的摔倒检测算法,即根据人体在摔倒时传感器所采集到的加速度数据会出现不同寻常的峰值来判断,但该方法将人体的摔倒模式考虑的过于简单,容易将正常运动事件误判为摔倒事件,而且不同个体之间的运动习惯差异也会导致峰值的差异,因此存在峰值判断困难、可靠性较低的缺陷。

随着机器学习在各行各业的广泛运用,不少研究者采用机器学习的方法来判断摔倒事件的方法。该类方法将人体摔倒时传感器所采集到的所有随时间变化的加速度运动数据序列考虑在内,抽取特征向量,训练机器学习模型,再用构造好的模型来判断新的运动数据序列抽取出的特征向量是否属于摔倒事件。但这种方法由于复度较高而难以实现,并且存在对手机的电量消耗较大的缺陷,难以满足人们的全天候需求,因此普适性较差。



技术实现要素:

为了解决上述技术所存在的不足之处,本发明提供了一种摔倒检测算法。

为了解决以上技术问题,本发明采用的技术方案是:一种摔倒检测算法,其整体步骤如下:

步骤一、通过ios系统的智能移动设备采集人体正常运动或模拟摔倒时产生的devciemotion数据记录;

步骤二、通过人工标记的方式获取fall事件集以及通过c语言程序实现随机的从adl记录中抽取adl事件集;

步骤三、由于抽取出的运动事件集是一系列连续的运动数据记录,采用特征抽取的方法将连续的运动事件记录转化为一个特征向量记录,从而得到训练用的样本集;

步骤四、分析对比多种经典分类算法在基于不同数据种类组合方式的特征向量时的性能表现,选出全局性能表现最佳的一种算法,并对该算法中的判断条件进行分类器训练;

步骤五、利用训练好的分类器进行未知运动事件的判别;

步骤六、利用设备静止时间、设备相对高度变化以及老人心率数据波动信息,减少摔倒检测算法的误报率,从而进一步提高算法准确性。

步骤三中特征向量的抽取方法为:

选择devciemotion数据记录中相邻两条记录同一属性的差值作为基本特征量,并进行平方根求和变化将n=60条连续的记录转换为一条特征记录作为正常运动或摔倒事件的一个动作代表,则特征向量的计算公式为其中,j代表某一条运动数据记录的第j列;rand代表进行特征向量抽取时所选取的n条记录的第一行。

本发明能够充分利用智能移动设备(手机),特别是ios系统所提供的devicemotion运动数据(加速度计、陀螺仪、磁力计等多种传感器数据源)进行摔倒检测,具有检测结果准确、可靠,操作难度较低的优点,并且易于在智能手机上实现,具有广泛的实用性。

附图说明

图1为本发明的整体步骤流程图。

图2为本发明采纳的devicemotion数据的参考坐标系。

图3为本发明的摔倒试验数据记录示意图。

图4为摔倒样本的标记选取示意图。

图5为摔倒检测与预警算法流程图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细的说明。

如图1所示,本发明考虑摔倒的三个主要阶段:失去平衡、自由落体、撞击地面,提出一种描述运动事件的特征向量,并在自己收集及构造运动数据集后,验证了四种经典的分类算法基于该特征向量判别摔倒事件的可靠性,最后采取检测性能最好的算法在智能手机上实现并验证。其具体技术方案分为如下步骤:

步骤一、采集devicemotion运动数据:

devicemotion利用ios系统底层的传感器融合算法精练了从加速度计、陀螺仪以及磁力计提取出来的原生数据以此产生了四种表征设备运动状态的数据,分别是attitude(角度)、rotationrate(转速)、gravity(重力)以及useracceleration(加速度)。将这四种表征数据沿图2所示x、y、z轴的三个分量分别表示为attitude.pitch,attitude.roll,attitude.yaw;rotationrate.x,rotationrate.y,rotationrate.z,gravity.x,gravity.y,gravity.z;useracceleartion.x,useracceleration.y,useraccleration.z;各表征数据相关变量及意义如表1所示。

表1

选取15ms作为传感器的采样频率,因此在老年人运动时,每隔15ms就会采集到一条运动记录,任何一个活动状态,无论是fall(摔倒)还是adl(正常活动),都不会瞬间完成,因此一个运动事件就对应了一个连续的运动数据记录。

步骤二、建立特征向量抽取模型:

为了使用经典分类算法对运动事件进行分类,需要将连续的运动数据记录序列转换为一个特征向量。一个活动样本集合就是一个二维矩阵。二维矩阵的列数有13列,分别表示devicemotion的各个属性值,行数有n行,代表记录的数据量的多少。从中随机的选取一行记为rand,则第rand行数据则表示为

rrand,j=(rrand,1rrand,2,…,rrand,j,…,rrand,13),其中1≤j≤13。

由于fall动作或者adl动作其实是基于时间序列的数据,但为了构造经典分类算法所需的训练集,就需要把一定时间内的动作序列转换为一条特性向量。结合相关领域的研究以及采集到的数据集的特征,选取了n=60条连续的序列作为一个动作样本。考虑到摔倒时人体呈下落姿态,连续数据记录的相同属性值的差值会呈现出逐渐变大到变小的趋势,因此选择相邻两条记录同一属性的差值作为基本特征量,并进行平方根求和变化将60条连续地记录转换为一条特征记录来作为adl或摔倒的一个动作代表。则由

rrand,j=(rrand,1rrand,2,…,rrand,j,…,rrand,13)向下或向上的60条记录所转换后的新的特征向量如公式1所示:

在将一个连续的摔倒动作事件或正常活动动作事件转换为特征向量后,就可以分析四种经典的分类算法对摔倒事件检测的性能表现。

步骤三、对devicemotion运动数据进行预处理:

为了减少样本标记的工作量,本发明仅仅将人体活动事件分为两类,即fall与adl,其中fall的标记工作是人工完成,而adl的标记工作利用c语言程序随机抽取人体活动事件。因此,摔倒事件的检测就抽象为fall与adl的分类问题。

1)fall数据的获取及标记

邀请13位志愿者进行模拟摔倒实验,考虑到受试者的安全性,只进行右侧摔倒、左侧摔倒、前侧摔倒这3种摔倒动作模拟,每种摔倒动作各执行3次,模拟摔倒的场地为校内健身房的两张床垫并在上面铺有3层被褥以降低摔倒时与地面的撞击程度。在模拟摔倒开始之前,要求受试者将开启了采集程序的iphone4s手机分别放置在左侧裤兜和右侧裤兜里;在模拟摔倒动作完成后,就关闭采集程序,让下一位受试者重复同样的操作。在所有的采集工作完成后,本文得到了26个txt文本,每一个txt文本记录了9次摔倒事件。

由以上采集到的数据,可以绘制出步骤一中12个变量随时间的变化规律,其中特征随时间变化最为明显的为变量gravity.y随时间的变化,如图3所示。

由于每个志愿者进行的摔倒实验过程都只有几种简单的动作,因此可以很容易的分辨出一共包含如下几种动作:受试者拿到手机开启数据采集程序并将手机放入兜里;受试者静止站立短暂时间;受试者模拟摔倒过程;受试者摔倒完毕后起身恢复到静止站立状态;受试者模拟完毕后掏出手机并关闭数据采集程序。因此,可以从图3中很明显的看出每种动作发生在哪个时间段,对每个动作发生的时间段的详细标记如图4所示;其中,9次摔倒事件分别对应于图中①–⑨所代表的数据记录区间。

在对所有数据进行标记完毕后,去除错误和未正确模拟的数据,抽取出了186条摔倒记录。

2)adl数据的获取及标记

为了采集到真实的adl数据,邀请志愿者携带有开启了采集程序的iphone4s进行正常的每日活动,抽取其中6个活动样本集合,共计96万条左右记录,然后利用程序随机的从这些数据样本中按比例的依次一共选取了1920条adl记录,和fall数据一共构成了2106条记录的样本集,以供后续的算法分析使用。其中程序的编写遵循前文提出的特征向量抽取模型来进行adl活动数据的提取。

由于fall数据的选择是人工进行标记的,因此在人工标记工作完成后,同样采用特征向量抽取模型把一个摔倒动作记录转换为一个特征向量。至此,传感器所采集到的fall以及adl数据的标记和预处理工作已经完成。

步骤四、通过特征向量抽取模型构建分类器模型:

首先,找出展现性能最佳的分类算法:在参阅相关文献为检测摔倒事件所采纳的分类算法后,选取四种常用的经典分类算法来验证特征向量抽取模型的可靠性,分别为支持向量机算法(supportvectormachine,svm)、k最邻近分类算法(k-nearestneighbor,knn)、朴素贝叶斯算法(naivebayes)以及决策树算法(decisiontree)。

选择1920条adl记录和186条摔倒记录的样本集进行试验。为了评价不同算法分类结果的准确性,选择三个常用的指标sensitivity、specificity以及accuracy来评判分类算法的好坏。其中,sensitivity表示检测fall的准确率;specificity表示检测adl活动的准确率;accuracy表示检测结果正确的比例。

sensitivity的计算公式如公式2所示:

specificity的计算公式如公式3所示:

accuracy的计算公式如公式4所示:

其中:

tp(truepositive):表示一个摔倒发生了并且这个算法正确的检测到了;

fp(falsepositive):表示实际没有发生摔倒可是算法却检测到了;

tn(truenegative):表示没有摔倒发生算法也没有声明检测到了摔倒;

fn(falsenegative):表示一个摔倒发生了算法却没有检测到。

采用特征向量抽取模型来构造特征向量,然后将特征向量代入至算法中分别对上述四种算法进行渲染,最终得到四种分类算法在各种数据组合方式下的检测结果,如表2所示。

表2

从表2中可以看出,四种分类算法在任意数据组合方式下的预测结果都取得了较好的表现。因此得出以下两点结论:

(1)基于devicemotion抽取出的特征向量来对老年人的摔倒事件进行判定具有较高的可靠性;

(2)在不同的数据种类组合方式下,不同分类器的性能表现比较复杂,没有绝对的一种数据组合方式使四种分类器都同时取得最好的分类结果。但是经过一个全局的比较之后,发现knn在采用attitude、gravity以及useracceleration这三种数据组合的方式时,取得了最好的性能表现。

其次,对性能表现最佳的knn算法进行分类器训练,从而构建knn分类器模型:利用上述得到的训练集,转化成一个data.txt文本,将该data.txt文本拖入工程目录的supportingfile中,在appdelegate中的didfinishlaunching方法中读取该data.txt文本用来构建knn分类器模型。

步骤五、摔倒检测与预警:

基于knn算法作为摔倒检测的一级判断条件,一级判断条件采用attitude、gravity、useracce这三种数据源;当knn分类器识别出摔倒事件后,系统进入2级判断条件,2级判断条件判断手机静止的时间,如果手机静止时间超过一个经验值,则进入3级判断条件,如果手机没有保持静止,则取消预警信号的发送;3级判断条件是通过人机交互功能来确认老人的安全情况,系统会通过震动及语音提示的方式来询问老人是否安全,此时未受到或遭受较小伤害的老人可以取消预警信号的发送。如果老人没有手动取消预警信号的发送,则认定老人发生了摔倒事件。下面系统将会进入判断老人危机状况的环节,主要通过智能手机监测到的相对高度变化以及智能手表监测到的心率数据波动来决定。2级、3级判断条件都是为了降低系统的误报率而设计的。

下面通过分析摔倒检测与预警算法中所需要的关键参数,对算法中的相关判断条件进行如下建模:

老年人运动的状态即通过手机的运动状态来判断,本文将老年人的运动状态state分为3种:stationary、moving以及fall。stationary代表老年人静止不动,moving代表老年人正在运动中,fall代表系统认定老年人发生了摔倒事件。

根据公式1中单个传感器在每个维度上的向量特征,得出如公式5所示的多个传感器在三个维度上的总的特征向量,用于表达老年人运动事件。

其中,starttime以及endtime表示该特征向量代表的运动事件的开始和结束时间。

手机静止时间(stationarysmartphone)是在算法利用knn分类器判断出某一个特征向量属于摔倒事件时所需要的后续流程,stationarysmartphone的引入是为了降低系统的误报率,因为正常情况下老人摔倒后应该处于昏迷或难以行动状态,此时手机应该处于静止状态,如果在系统检测到摔倒事件后的stationarysmartphone小于某个经验值thresholdsmartphone,则可以判定此次摔倒事件属于误报,可以将老年人的状态判定为moving。

预警等级warninglevel的判定是根据老人从摔倒发生时到老人静止时这个时间段内的智能手机相对高度变化以及摔倒后智能手表采集到的心率波动情况来决定的。算法将手机相对高度变化分为2个等级:小于或等于老年人手机佩戴高度heightsmartphone和大于老年手机佩戴高度heightsmartphone;将心率波动情况也分为2个等级:正常normal和不正常unnormal。由此组合得到的4种预警等级如表3所示:

表3

由于心率波动反应了老年人生理状况的变化,因此在判断预警等级时心率波动的优先级大于相对高度变化的优先级,所以在组合预警等级时,将心率波动放置在了二进制表示的预警等级的高位处。

根据上述判断条件以及模型,将摔倒检测与预警算法归结为以下步骤,如图5所示:

step1:初始化老人运动状态state为stationary;

step2:判断老人运动状态,如果是运动,将state标记为moving,进入step3,如果是静止,重复step2;

step3:获取老人运动数据记录,并抽取描述运动事件的特征向量;

step4:使用knn分类器判断特征向量所属运动事件,如果是adl,跳转到step2,如果是fall,计算摔倒后手机静止时间stationarysmartphone,继续;

step5:判断stationarysmartphone是否大于thresholdsmartphone,如果否,state为moving保持不变,并跳转到step3;如果是,将老人运动状态state标记为fall,继续;

step6:通过人机交互判断老年人安全状况,如果没有通过,开始判断老年人摔倒时的相对高度变化等级以及心率波动情况,继续;如果通过,将老年人运动状态state标记为moving,跳转到step3;

step7:得出老年人预警等级,发送预警信号、地理位置信息给看护人员,结束。

步骤六、原型系统测试及验证:

原型系统测试及验证仅仅考虑了摔倒检测的准确率,在智能手机上实现了特征向量抽取以及knn分类器的实现,然后测试系统检测摔倒的准确率以及日常生活中监测的误报率。值得注意的是,在原型系统开发中,采用滑动窗口方案来连续的监听实时的运动事件,此原型系统选取了获取30次devicemotion记录所需要时间作为滑动窗口的重叠区域,在系统商用的时候,该重叠区域的时间值还需要进行更进一步的优化选择。

摔倒试验邀请了9位志愿者,每位志愿者进行前向摔倒、左侧摔倒、右侧摔倒各3次,一共81次试验,系统检测到了80次摔倒事件,准确率为0.987;

日常生活中的试验选择让志愿者佩戴手机进行日常活动,一共检测了35293次运动事件,触发了29次摔倒事件,误报率为0.0008。

此外,在iphone7plus以及iphone5s上进行电量消耗测试,发现在iphone7plus程序运行10小时约消耗40%的电量,在iphone5s上程序运行10小时约消耗60%的电量,证明本算法来实现摔倒检测系统进行每日的实时监测具备可操作性。

综上分析,本发明具有较好的实用性以及可靠性。

本发明的核心思想是基于devicemotion提出一种描述运动特征的特征向量抽取方法,然后采用knn分类器来时时判别老年人的运动是否属于摔倒事件,在此基础上,根据手机静止时间、手机相对高度变化、心率波动情况来决定预警信息的最终发送。当knn分类器判断某次运动事件为fall时,会计算手机静止的时间,如果超出了一个经验阈值,则认定老年人发生了摔倒。此时,系统会通过震动、铃声或语音识别等人机交互的方式来向老人做出最后的询问,询问老人是否确实发生了摔倒,如果在一个规定时间内系统没有收到任何回复,则进入下一步;如果老人取消了此次预警信息的发送,则系统将会把此次触发摔倒事件的特征向量记录加入到knn分类器模型中,并标记为adl,以减少下次误报的概率,并继续监测老人的运动状态。在确定发送预警信息后,系统会获取手机当前的地理位置,通过相对高度变化和心率波动数据(如果存在)来判断老人的危机等级,最后把所有相关信息汇总后通过短信等多种方式发送给医护人员,让医护人员展开及时的救援。

下面通过具体实施例来对本发明的检测方法及效果进行详细的说明。

将包含一次摔倒事件的60条devicemotion记录展现在表4中:

表4

由特征向量抽取模型可将这60条记录转换为一个特征向量,值得注意的是,在构造特征向量时,时间戳timestamp变量并不需要参与进来,由此得到描述此次运动事件的特征向量如下所示:

0.4190.3000.2270.2820.2530.3024.6106.2604.560

将该向量作为参数输入由data.txt构造的knn分类器后,knn分类器就可以输出判断结果fall,则此次运动事件触发了摔倒信号。然后算法计算手机的静止时间,此处静止时间的阈值设定为5s,如果手机的静止时间超过了5s,则进行下一步的预警等级判定。

下面计算摔倒时的手机相对高度变化。60条devicemotion运动数据记录的开始和结束时分别对应的相对高度值为3.352m和2.592m,则摔倒时手机的相对高度变化为0.76,约等于此志愿者的身体高度,因此相对高度变化位为0;然后获取人体心率波动数据,分别为58,65,69,66,80,56,61,64,51,59,57,60,心率数据较为正常,因此心率波动位也置为0。因此确定预警等级为0级。同时获取老年人摔倒的地理位置信息:纬度为122.0837687496,经度为37.5270527409362。将以上所有信息整合完毕后再加上老年人的一些基本信息后,就可以将完整的预警信息发送给看护人员或者急救中心,让老年人得到及时的救援。与此同时,系统也将会实时采集到的老年人的心率数据不断发送给看护人员,帮助看护人员更好的了解老年人的身体情况。

上述实施方式并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的技术人员在本发明的技术方案范围内所做出的变化、改型、添加或替换,也均属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1