基于姿态估计的异常跌倒检测算法设计与实现

2021-10-25 03:35祝衍军李建新
科学技术创新 2021年30期
关键词:关节点纵坐标倾斜角

祝衍军 李建新 刘 捷

(东莞职业技术学院,广东 东莞 523000)

我国老年化程度持续加深,独居老年人和空巢老年人在不断增加,第七次全国人口普查数据显示我国60 岁及以上人口比重已经达到了18.7%,其中65 岁及以上人口比重达到13.50%。由于老年人身体机能差、平衡能力不强和应变能力弱,摔倒后容易引起严重的后果,如果不能及时得到医护人员救治,极有可能因为错过了最佳抢救时间而危及生命。为了减轻老人因跌倒而产生的伤害,跌倒检系统也日渐完善,但目前市场上的大部分跌倒检测系统都需要配套其对应的终端设备,存在应用场景有限和使用不灵活性等问题。因此本文根据跌倒行为特征,基于深度学习算法工具设计和实现了一个可以在Android 手机上运行的实时性较好和检测精度较高的异常跌倒算法。

1 跌倒特征提取与算法设计

1.1 跌倒特征提取

跌倒是一个瞬间动作,人体的动作、高度和速度等都会随着跌倒发生快速的改变,在跌倒过程中,一般都是从站着到坐到地上或者躺倒到地上,人体的中心点快速的从较高位置下降到地面或者接近地面的高度。文献[1]从头部、身体质心、小腿中心三个位置相对位置的变化与特征向量与水平地面的夹角来检测跌倒行为,文献[2]根据多帧的左右耳、左右目、左右足首等部位相对位置的加权平均变化来判断跌倒行为,大部分跌倒检测算法没有充分考虑跌倒的时空特征,要么只提取跌倒视频的时间特征,要么只提取跌倒视频的空间特征,本文充分考虑跌倒的时空特性,从跌倒的连续视频帧选取人体中心点下降的速度、人体外接矩形宽高比和人体纵向中心线与地面的倾斜角作为跌倒特征。

本文通过Openpose 人体姿态识别获取人体关节点数据,根据OpenPose 提供的关节点数据来计算人体中心点下降的速度、人体纵向中心线与地面形成的倾斜角和人体外接矩形宽高比。OpenPose[3]人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以caffe 为框架开发的开源库,可以实现人体动作、面部表情、手指运动等姿态估计。OpenPose 获取到的人体关节图总共包括18 个关节点:0:鼻子(Nose),1:脖子(Neck),2:右肩(RShoulder),3:右肘(RElbow),4:右腕(RWrist),5:左肩(LShoulder),6:左肘(LElbow),7:左腕(LWrist),8:右髋(RHip),9:右膝(RKnee),10:右踝(RAnkle),11:左髋(LHip),12:左膝(LKnee),13:左踝(LAnkle),14:右眼(REye),15:左眼LEye,16:右耳(REar),17:左耳(LEar),具体如图1 所示。

图1 OpenPose 获取的人体关节点数据示意图

本文以左右髋的中间点作为人体中心点,每隔一段时间获取一次左髋(8)和左髋(11)的位置,计算这段时间内人体中心点纵坐标值的变化速率做为人体中心点下降速度。设t1 时刻的人体中心点的纵坐标值为yt1,则,其中yt1,8和yt1,11分别为t1 时刻OpenPose 获取的人体左髋(8)和右髋(11)的纵坐标值,设t2 时刻的人体中心点的纵坐标值为yt2,则,其中yt2,8和yt2,11分别为t2 时刻OpenPose 获取的人体左髋(8)和右髋(11)的纵坐标值,人体中心点下降速度v 则为:

在跌倒时人体外接矩形宽高比变化最为明显,当人直立活动时,人体高度会大于宽度,当发生跌倒时人体高度将会快速下降,宽度会快速增大。本文高度取头部4 个关节点(右眼-14,左眼-15,右耳-16,左耳-17)纵坐标加权平均与脚部2 个关节点(右踝-10,左踝-13)纵坐标加权平均的差值,宽度取左腕(4)和右腕(7)横坐标的差值,t1 时刻具体宽度W、高度H 和宽高比R的计算公式为:

人体纵向中心线与地面形成的倾斜角通过求取头部关节点和一条小腿中部位置之间连线的反正切值获得,本文以OpenPose 获取的人体鼻子(0)作为头部关节点,小腿中间位置则取右膝(9)和右踝(10)两个关节点的平均值,则t1 时刻的小腿中间位置中的值分别为,则t1 时刻人体纵向中心线与地面形成的倾斜角为:

1.2 跌倒算法设计

目前大部分跌倒检测算法没有充分考虑跌倒的时空特征,要么只提取跌倒视频的时间特征,要么只提取跌倒视频的空间特征,本文将时间特征相关的人体中心点下降速度、人体外接矩形宽高比和空间特征相关的人体纵向中心线与地面倾斜角作为跌倒特征,首先通过获取到的每帧图片计算一次人体中心点下降的速度和人体外接矩形宽高比,如果每秒钟人体中心点下降速度大于1.4m/s,则进一步判断近3 秒内人体外接矩形宽高比持续增大,且最近一帧的人体外接矩形宽高比大于2,然后再通过计算最近一帧的人体纵向中心线与地面形成的倾斜角是否小于45°来判断其是否跌倒;如果人体已经处于跌倒状态,则不能先通过与时间特性相关的人体中心点下降速度、人体外接矩形宽高比来继续判断,只能通过计算与空间特征相关的人体纵向中心线与地面倾斜角作为持续跌倒的判定条件,具体的跌倒判定算法流程图如图2 所示。如果人体在10 秒内一直处于持续跌倒状态(不能自行爬起来),则系统需要采取进一步预警措施,如报警或者通知其家人等。

图2 跌倒判定算法流程图

1.3 算法验证

本文将实现跌倒判定算法的APP 部署到华为Mate20 手机进行验证和测试,使用手机的后置摄像头对站在距离手机位置1-2 米的位置进行测试,针对日常非跌倒行为的走路、躺下、蹲下、坐下、跳跃和跌倒行为的横向摔倒、侧向摔倒、向后摔倒、向前摔倒进行测试共9 种动作行为进行测试,每种动作行为测试5 次,具体测试数据如表1 所示。

表1 跌倒判定算法验证实验结果

从测试实验结果可以看出,算法对走路、蹲下、坐下、跳跃、横向摔倒、向后摔倒、向前摔倒这7 种动作行为具有较好的检测效果,检测准确度达到了100%,但对躺下、侧向摔倒这2 种动作行为的检测效果较差,需要进一步提取更多的特征对其进行判定。

2 软件功能设计与实现

本文根据常见的应用场景将整个系统架构分为老年客户端APP、家属客户端APP、数据存储和后台管理服务器、第三方即时通讯服务器四部分,具体如图3 所示。老年客户端APP 根据设计的异常跌倒检测算法监控老年人状态,如果老人10 秒内一直处于持续跌倒状态,则系统自动促发报警机制,将老人跌倒地址、短视频等信息发送给家属客户端APP;家属客户端APP功能主要分为家属管理和跌倒确认及报警等功能,家属管理可以动态的增删家庭成员,设置其是否可以接收到跌倒信息,跌倒确认及报警是指收到跌倒信息后,查看跌倒视频,再次确认老人是否跌倒以及提供视频通话和拨打急救电话等功能;视频通话采用成熟的第三方即时通讯SDK 来实现。

图3 软件整体架构

3 结论

本文针对老年人容易摔倒的现状,基于OpenPose 获取人体关节点数据,结合跌倒行为特征,设计了一个基于人体关节点来判定跌倒行为的算法,详细阐述了算法中需要用到的关节点及其计算公式和算法流程,经过在Android 手机终端测试验证,该算法具有较好的检测效果。

猜你喜欢
关节点纵坐标倾斜角
更正
基于关节点数据关注RGB视频的双人交互行为识别
中低比转速带导叶离心泵出水边倾斜角对无叶区压力脉动的影响研究
平面直角坐标系中的特殊点
基于人体行为模型的跌倒行为检测方法①
平面直角坐标系中“混”“漏”要不得
结构化:向儿童思维更深处漫溯
第五届播睿智杯“奇思妙想”有奖数学知识竞赛
直线问题的错解分析
点击直线与圆的考点