邓 颖,吴华瑞,孙 想
北京农业智能装备技术研究中心/国家农业信息化工程技术研究中心/北京农业信息技术研究中心/ 农业农村部农业信息软硬件产品质量检测重点实验室,北京 100097
近十年来我国人口老龄化日趋明显,加之独生子女比例高,当前老年人独居情况越来越多,2020年我国独居老人数量达到3 000万人.城市具有先进、 齐全的老人福利设施和医疗条件,在一定程度上可以保障老年人在突发性健康事故中得到及时的救治; 但在广大的村镇地区,年轻人外出务工的情况非常普遍,空巢情况尤其明显,村镇老人独居比例远高于城市,加上医疗配套设施、 老年人安全保障设施、 交通便利程度等条件的相对落后,跌倒事故在村镇地区愈渐频繁,因跌倒未及时送医引发严重损伤及死亡的事故时有发生.因此,对于老人跌倒事故的及时发现和救治是减少村镇独居老人跌倒致死的关键,也是我国推动乡村振兴和乡村治理的重要需求.
有关老年人摔倒检测方法,国内外专家从不同角度和技术路线已有一些研究.一部分研究以人体穿戴式传感器数据为依据,设计获得跌倒判断算法,将速度传感器设备数据与跌倒阈值的关系进行比较,从而得出人体是否出现跌倒的结论.汤引生等[1]设计了基于三轴加速度传感器的老年人摔倒检测算法,使用三轴加速度传感器获得实时数据,建立摔倒检测阈值点判断算法,确定其中的关键参数.马英楠等[2]对54名老年人行走时胸椎、 膝盖、 肩胛骨、 骨盆等4个关节的数据进行分析,分别在矢状面、 冠状面、 横断面上计算各关节的平均位移,并作为特征参数通过支持向量机进行易跌倒老人预测模型训练,得到了形成高精度模型的最小维度.徐涛等[3]通过石墨烯/橡胶传感器设计了老人跌倒姿态实时识别系统,通过传感器获取重心加速度和角速度,再通过双重判定识别和判断人体跌倒.
另一部分研究则是基于图像数据分析技术进行跌倒姿态分析判断.跌倒判断从图像上分为人体检测分割、 跌倒动作检测两个步骤.在人体分割的研究上,高玉潼等[4]基于对称差分法实现了对监控系统中各种复杂情况下的图像进行处理,分割出人行轮廓,进而进行人脸识别.在跌倒动作检测上,袁鹏泰等[5]通过改进的yolo算法将人体图像从视频的每一帧中提取出来,利用openpose[6]算法计算人体图像的关节信息,将关节信息作为参数采用SVM算法可以构建人体姿态分类模型,以每一帧的状态检测结果形成一段状态序列,分析状态序列即可实现对正常、 跌倒、 平躺以及其他姿态的识别判断.陈永彬等[7]通过采集老年人活动视频图像数据,提取姿态特征,以人体骨骼特征点变化量作为参数,同时提取场景的语义信息与人体特征参数,二者结合分析实现对老年人摔倒的检测识别.申代友等[8]使用RGB相机和红外IR相机获取标定后的老人所在环境的3D图像,并利用深度卷积神经网络提取人体的多个关节点位置信息,最后基于多个连续帧之间人体关节点的运动变化特征和3D场景特征相结合的方法综合判定老人是否发生跌倒行为.黄国范等[9]提出了一种人体动作姿态的自动识别算法,用运动历史图像和运动能量图像,分别表示动作姿态发生的区域以及动作姿态发生的过程,并从中提取出改进的不变矩作为特征向量进行人体动作姿态的自动识别.
先前的研究大多采用速度传感器的佩戴实施对老人跌倒的监测[10-12],但是多个传感器的佩戴对于老人的生活起居会带来不便; 基于深度图像处理技术通过提取关节运动信息来判断跌倒动作,需要在老人活动场所设置特定的深度相机,所需设备成本较高,不适用于在村镇的公共区域、 个人住宅等场景大批量应用; 单一地通过传感器数据或者是图像数据进行判断,如果在图像采集区域之外,或穿戴式传感器设备出现故障的时候,独居老人将脱离跌倒监测预警体系,失去对老人跌倒受伤风险的监测预警效应[13-15].
基于穿戴式设备的跌倒检测主要针对身体各部位的重力感应参数,或身体部分体征参数进行建模分析(图1),模型所需参数较少、 数据传输量低、 处理速度快,只要佩戴设备即可进行实时监测而不存在观察死角,但是仅从节点的重力感应无法区分躺倒和跌倒的区别,从体征数据无法区分由于情绪或其他因素导致的相似性体征变化; 基于视频监控设备的跌倒检测主要针对视频图像特征,分析视频中被监测者的肢体关节移动轨迹,以判断是否发生跌倒,此方法判断相对准确性较高,模型所需不同帧数的图像,总体参数量较大,对数据传输网络信号和运算单元的计算能力要求较高,模型相对较复杂,同样算力下相对穿戴式数据分析法所需时间较长,且视频采集设备存在监控死角,无法全方位覆盖[16].
图1 基于设备的跌倒检测方法优缺点
自从村镇社区大数据互联与智能服务平台研究及示范项目开展以来,本研究团队在北京周边多个村镇试验性发放了随身健康数据采集设备400多个,通过便携式手环对独居老人进行24 h健康监测和数据采集,并安装家庭突发情况监控摄像头进行人体姿态识别,综合实时地收集了老人的身体健康指标状况,为建立跌倒判断和预警技术奠定了基础.
本方法通过健康数据监测手环分别采集被监护村镇老人的实时体征数据,包括体温、 血压、 脑电波检测率、 心电图、 心跳频率等,在视频监控覆盖区域外如家中或其他室内场所通过手环的数据进行阈值监测,及多指标综合分析[17].
手环采集的数据可能会因为设备问题出现数据偏差,因村镇地区互联网信号不良导致数据上传失败等问题,因此在试验区域设置老年健康视频监测设备,对设备覆盖的区域,通过图像物体识别、 物体动态跟踪等技术进行监测,从生理指标、 行为动作等多方面对老人进行实时跌倒监测.
如图2,首先通过视频监控设备在室内和室外场景分别对40名试验人员佩戴健康手环进行正常动作(行走、 跑动、 下蹲、 弯腰),通过未经提示的推、 绊形成试验人员的非自主性(向前、 向后)跌倒,记录正常和异常(跌倒)动作的生理数据和视频数据,以此模拟村镇独居老人的活动姿态和生理状况,然后仅根据被跟踪的试验人员的人体姿态及生理指标判断是否出现跌倒的情况.
图2 2D视频数据跌倒状态
传统跌倒检测算法相对简单,首先选择脖子作为基准点,通过人的边界框计算人体高度,计算相邻两帧间隔的脖子垂直距离,如果脖子移动垂直距离超过人体身高的一半,则判断为跌倒.但是,摄像头平视角度和被监测老人所处位置角度过大时,该方法准确率降低,且老人弯、 坐、 躺等动作皆会引起误报.
本方法对上述算法进行优化.如图3所示,将模拟视频进行逐帧切割,通过Mask RCNN[18]对每帧图像进行人体实例分割,分割出图像中人体掩膜及边框范围,利用openpose对视频中每一帧图像的人体边框范围内部进行识别,提取人体边框图像中的关节点信息.因为弯腰、 坐下等干扰性情况脖颈节点变化很大,但髋关节受干扰影响较小,因此采用人体髋关节代替脖颈成为跌倒判断核心点.将以下3个参数作为指标,将每一帧图像作为循环网络窗口序列,每一段视频作为一条数据,输入BiLSTM深度循环神经网络[19],最后进行sigmoid函数激活并输出是否跌倒的二分类结果: ① 核心点下降的速度; ② 人体纵向中心线(头部关节到髋关节连线)与地面(膝关节到脚关节连线的垂直线)的倾斜角; ③ 人体边框的宽高比.
通过试验数据则可以反向计算出3个参数的阈值范围,如果图像中的人体参数处于阈值范围内,则为正常未摔倒的情况,如果超出阈值范围,则为摔倒状态.相反的,如果上面条件1中的人体核心点回到原高度,且条件2,3恢复正常值,则改场景为被监测对象重新站起,如果条件1不变,条件2,3在一段时间内仍保持在临界值范围之外,则进一步判断老人跌倒后未能重新站立,应立即采取救援措施.
图3 基于行为分析的实时2D视频数据跌倒状态监测方法流程
由于视频监控设备成本较高,村镇中视频监控可覆盖面积有限,针对无视频监测覆盖的区域,则通过佩戴式设备进行跌倒检测.由于跌倒时体征变化可能和未知突发性疾病、 外界因素导致的心情变化等场景相似,无法确定完全采用生理体征数据分析能否准确识别跌倒; 跌倒时的核心速度变化情况和躺倒、 快速左下等情况类似,因此也不能用来单独判断跌倒.本文通过健康手环的基础功能,获取实时血压(blood pressure,bp)、 心率(heart beat rate,hbr)、 血液循环(blood circulation,bc)3项生理特征参数和手环垂直加速度(vertical acceleration,va)变化感知参数,以是否跌倒为标签,输入机器学习模型,进行人体姿态体征预测计算,输出是否摔倒的预测结果,通过预测结果和实际结果的对比,进行模型训练,生成基于体征数据的村镇老人摔倒判断模型[20-21].
对方法1.1和1.2进行改进,将1.1的3个参数(核心下降速度A、 人体纵向中心线与地面的倾斜角B、 人体边框的宽高比C)与1.2的3个生理体征数据向量(bp,hbr,bc)以及与垂直加速度(va)融合形成多维融合数据向量(A,B,C,bp,hbr,bc,va),进而对新组成的参数进行跌倒判断模型训练(图4).
图4 多维数据分析跌倒行为检测方法参数融合示意
试验对40名人员佩戴健康手环进行正常动作(行走、 坐靠/躺倒、 下蹲、 弯腰); 通过未经提示的推、 绊,形成试验人员的非自主性跌倒.正常动作每人每个动作重复5次,跌倒动作每人重复15次(向前跌倒10次,向后跌倒5次),记录正常和异常(跌倒)动作的生理体征数据和视频数据,视频数据每秒帧数(FPS)为10,视频长度10 s,即每段视频含100帧,从而形成包含1 400组试验的数据集,对每组数据进行对应动作的标注.按照0%~15%的比例从数据集中随机抽取验证数据集、 测试数据集,剩下的作为训练数据集,随机比例取50%.为保证3个数据集均包含正样本(跌倒)和负样本(正常动作)数据,对随机生成的数据集进行检查(表1).
表1 跌倒模型训练试验数据 次
2.2.1 基于穿戴式设备参数分析的跌倒判断模型训练与验证(试验1)
试验采用scikit-learn机器学习库,在python 2.8环境下执行.通过标准差归一法(standardScale)进行数据预处理,使数据符合正态分布,转化函数如式(1):
(1)
其中μ为所有样本数据的均值,σ为所有样本数据的标准差.
通过逻辑回归、 决策树、 KNN、 贝叶斯算法、 随机森林、 SVM[22]、 BP神经网络7种模型对试验数据中获取的血压(Blood pressure)、 心率(Heart beat rate)、 血液循环(Blood circulation)3项健康体征数据以及垂直加速度(vertical accelertation)变化数据进行样本训练和测试,研究不同算法在跌倒数据集下的预测准确率、 召回值和F1分数.
2.2.2 2D视频数据跌倒状态监测方法阈值计算(试验2)
采用Mask RCNN对所有视频数据每一帧进行人体边框检测,通过openpose对边框内部人体关节进行定位,对每一帧图像生成json格式的人体关节节点数据和图像数据,提取每帧数据作为窗口序列,将1.1中的3个参数(核心位置、 人体倾斜角和人体宽高比)作为BiLSTM循环神经网络模型每个窗口序列的指标输入,学习率设为0.5,精度0.002,通过sigmoid函数激活,输出跌倒判断结果,在训练和验证数据集下对此网络进行训练,得到跌倒识别模型.
2.2.3 多维数据融合跌倒检测(试验3)
采用Mask RCNN对所有视频数据每一帧进行人体实例检测,通过openpose对人体实例图像进行分析,提取关节定位,根据前帧和当前帧数据计算核心下降速度A,结合人体纵向中心线与地面的倾斜角B、 人体边框的宽高比C与1.2中的3个生理体征数据(1,2,3)进行融合形成多维融合数据(A,B,C,1,2,3); 将融合数据作为窗口参数输入BiSTML模型,学习率0.5,精度0.002,通过sigmoid函数激活,输出跌倒判断结果,在训练和验证数据集下对此网络进行训练,得到多维数据融合跌倒行为监测模型.
分类模型通常通过精准度(precision)、 召回值(recall)、 F1分数(F1-score)、 准确率(accuracy)等指标进行分类模型的性能评判,由于F1值主要用来作为正负样本比例相差较大情况下的评价指标,本文正负样本比例3∶4,相差不大,采用准确率作为主要评价指标更为合适,F1作为参考指标.
对比以上3个试验的测试结果,对试验结果进行分析.
试验1: 基于穿戴式设备参数分析的跌倒判断方法,通过7种不同的模型和网络进行了测试.从试验结果上看,如图5所示,由于参与训练参数较小,7种机器学习分类算法训练的模型性能差异不大.用于对比的体征数据跌倒判断模型的F1比较接近,上下限阈值差别在0.04以内,准确率差别稍大,但阈值差距也在0.07以内.KNN和随机森林算法准确率较高达到0.77,BP网络次之,F1分数达到0.76,逻辑回归和贝叶斯算法最低为0.69和0.71.对于准确率相近的KNN和随机森林算法,说明两种方法在真正例(True Positive,TP)和真反例(True Negative,TN)的判断上性能相似,而KNN的F1值略高于随机森林,说明其在假反例(False Negative,FN)和假正例(False Positive,FP)的判断上更优于后者,更适用于本文研究环境的对象.
图5 穿戴设备感知数据摔倒判断模型测试结果统计
从表2可知,试验2基于单一骨骼关节的跌倒动态图像检测模型的准确率(Accuracy)为0.79,但是精准度值只有0.75,原因在于对实际为负样本的数据被错误的分类为正样本的情况偏多,导致TN值较低、 FN值较高,有21个非跌倒场景(负样本)被识别为跌倒场景(正样本).因此可知,模型虽有良好的准确率,但是其精准度(Precision)远低于基于穿戴式设备参数分析的KNN模型.剖解上述FN的情况,21个样本中17个为坐靠、 躺倒的场景,占总FP的81%,因为在人快速躺倒于床上(睡觉)或者坐在沙发上的动作和跌倒类似,且放松状态下的坐下及躺倒速度和跌倒状态几乎相同,从骨骼节点的矢量变化和身体倾斜角度变化上很难区分坐靠和躺倒场景对跌倒识别的干扰,而从穿戴设备采集的身体指标数据则可以区分出意外跌倒时和有意识左下或躺倒时的生理状态,因此出现了穿戴式设备参数模型精准度高于图像识别模型的情况.
对此,本文进一步优化跌倒识别模型.由于主动地坐下和躺倒时,人体躯干位置和床、 沙发等休息用家具位置存在大量重叠,因此在图像处理过程中,除了用Mask RCNN识别提取人体边框,还标记出图像中沙发、 椅子、 床的边框,将以上3类物体边框信息同时作为输入参数,训练生成具备周边环境感知能力的跌倒图像识别模型.改进后的模型准确率为0.85,相比改进前提高了6个百分点,相比试验1结论中最优的KNN模型提高了8个百分点.
在改进后的图像跌倒识别模型结果中,FN样本中存在少量跌倒于沙发或者床上的情况,此类情况下用人体身体位置和沙发、 床等家具位置亦无法判断是否跌倒,此时,只有通过穿戴式设备获取的人体生理状态指标进行分析,因此,试验3将生理指标、 垂直加速度和图像参数融合为综合评定参数,采用相同的BiLSTM网络进行处理.对比之下,试验3基于多维数据融合的跌倒模型准确率为0.90,相比试验2方法的结果提高了5个百分点,相比试验1方法的结果提高了13个百分点.
表2 纯图像跌倒识别模型及多维数据分析模型测试结果
从3个试验结果分析,通过视频图像的跌倒判断模型比穿戴式设备数据跌倒判断模型的准确率值高8%,但针对部分特殊情况,结合生理数值可以排除场景干扰,提高分类准确率.因此融合图像数据、 穿戴式设备数据的综合判断模型在村镇老年人跌倒识别场景中具有更高的性能,与单一参数判断模型最高的值相比分别提高了5%和13%.
综上,基于生理体征数据分析跌倒行为预测法在采用随机森林和k邻近点时具有0.77的准确率,基于多关键点及周边环境感知的跌倒图像检测准确率为0.85,而本文提出的多维数据融合的村镇老年人跌倒综合判断法将图像数据和体征数据融合后采用BiLSTM模型训练分类,准确率达到0.90,优于以上两种方法.同时,在村镇地区设备故障无法修复,或通讯出现问题的情况下,视频数据或者生理特征数据无法同时传输,仍可通过对生理特征或图像特征的单一参数模型进行监测预测,同样具备较高的准确率,保证了老年人跌倒检测的持续性和实时性.
由于试验样本数量仍然有限,本文采用的方法尚为一般性算法模型,在性能稳定、 运算快速的基础上获得了较高的精准度和F1分值,而当下神经网络发展迅速,如果将迁移学习和知识蒸馏等方法应用到老年人跌倒识别模型的研究上,可通过深度网络的剪枝,将大型复杂的深度模型缩减为精简灵活的轻量级模型,有望通过小样本数据获取小体积、 快速敏捷的轻量级深度神经网络模型,提供更快捷、 更精准的村镇老年人跌倒判断预警,也更有利于模型在终端设备上部署安装和实时的处理运算,这将是今后需要进一步深化研究的方向.