1. 项目背景简介
人们在行走和奔跑等情况下,经常会发生摔倒的情况。对于正常人而言,在摔倒不是特别严重的情况下,人们可以立刻起来或者打电话报警或者通知家人, 然而对于一些特殊的人群,例如空巢老人等,在摔倒时可能无法站立起来,也无法及时电话报警或者通知家人协助帮忙。有证据表明,跌倒是全球意外伤害死亡的第二大原因,全球每年估计有684000人死于跌倒,并且60岁以上的老年人跌倒致命次数最多(Falls)。
近期我的姥姥因地面湿滑摔跤造成了肋骨骨折,差点造成了脊柱的损伤。幸亏发现的及时并没有造成更加严重的后果。通过这件事让我意识到,如果家里可以有一台自主检测跌倒的的设备,即使在家里没人的情况下也能及时报警,从而避免因发现不及时造成更加严重的伤害。
人体姿态估计可以帮助检测并识别人的行为动作,其目标是在RGB图像或视频中描绘出人体的形状,这是一种多方面任务,其中包含了目标检测、姿态估计、分割等。跌倒也属于人的一种行为动作,因此人体姿态估计技术可以应用于跌倒检测。
2. Openpose简介
可以完成人体姿态估计的方法有很多,本项目使用卡耐基梅隆大学团队开发的开源项目OpenPose,它通过检测人体骨骼关键点来识别人的动作。OpenPose是基于卷积神经网络和监督学习并以caffe为框架写成的开源库,可以实现人的面部表情、躯干和四肢甚至手指的跟踪,不仅适用于单人也适用于多人,同时具有较好的鲁棒性。可以称是世界上第一个基于深度学习的实时多人二维姿态估计,是人机交互上的一个里程碑,为机器理解人提供了一个高质量的信息维度。
检测人体骨骼关键点是姿态估计中极为重要的一步。人体骨架是以图形形式对一个人的方位所进行的描述。本质上,骨架是一组 坐标点,可以连接起来以描述该人的位姿。骨架中的每一个坐标点称为一个“部分(part)”(或关节、关键点)。两个部分之间的有效连接称为一个“对(pair)“(或 肢体)。需要注意,不是所有的部分之间的两两连接都能组成有效肢体。人体骨架模型将人体一些显著的特征或者是一些可以活动的关节定做关键 点,运用人体关键点检测技术,可以实时的定位、跟踪人体。使用最小势能法等 一些判别方法,将人体关键点连接起来,形成人体骨架模型,利用模型加上一些决策条件就能够识别跌倒。
3. 环境搭建
项目链接:https://github.com/LZQthePlane/Online-Realtime-Action-Recognition-based-on-OpenPose
项目环境要求:
python >= 3.5
Opencv >= 3.4.1
sklearn
tensorflow & keras
numpy & scipy
经测试,实际使用环境:
Python==3.6.5
Opencv==3.4.2
Sklearn==0.19.2
Tensorflow==2.1.0
Keras==2.3.1
Scipy==1.5.3
这些包直接可以通过 Anaconda 安装(https://www.anaconda.com/),Anaconda 是 Python 的一个发行版本,其优势是可以十分方便的管理Python环境以及Python的各种包。
配置环境: