基于人体关键点识别的摔倒检测算法

基于人体关键点识别的摔倒检测算法

最开始我们做跌倒检测的时候用的是传统的单纯用yolo等目标检测算法,但是在交流中我们也发现一个问题,就是传统的目标检测难以区分摔倒与跑跳坐下蹲下等动作之间的区别,即难以实现类间分类,然后就是一拍脑门想起来了可以基于人体关键点识别来做跌倒检测,和其他的动作区分开来,而且这个方案已经比较成熟了,详细可见下面的参考文献。在这里先做一下算法的调研。之后等这个项目结题后再进行具体模型的分享。

现存算法

传统时空分析

通过实时跟踪人体骨骼关键点(如头、肩、膝盖、脚踝等),分析这些点的位置变化规律来判断是否跌倒。优点是直观和解释性强,适合实时的检测;缺点为数据缺失时可能出错,这个在鲁棒性上可以做一些工作。

flowchart LR
    A[视频/图像输入] --> B[关键点提取]
    B --> C[动态特征计算]
    C --> D[分类决策]
    D --> E{{跌倒判定结果}}

    %% 关键点提取模块
    subgraph keypoint_extract [关键点提取]
        direction TB
        B1[OpenPose] -->|输出关键点| B2[BlazePose]
    end

    %% 动态特征计算模块
    subgraph feature_cal [动态特征计算]
        direction TB
        C1[质心高度<br>(头部/躯干骤降)]:::feature
        C2[关节角度<br>(躯干-地面夹角)]:::feature
        C3[运动速度<br>(垂直加速度突增)]:::feature
    end

    %% 分类决策模块
    subgraph decision [分类决策]
        direction TB
        D1[阈值法]:::decision -->|"高度 < 阈值?"| D1a[报警]
        D2[机器学习模型]:::decision --> D2a[SVM] & D2b[随机森林]
    end

    %% 应用样式
    class A input;
    class B,B1,B2 process;
    class C,C1,C2,C3 feature;
    class D,D1,D2 decision;
    class E result;
  • 关键点提取:

    人体关键点检测模型(如OpenPose、BlazePose)从视频中抓取人体关键点坐标。

  • 动态特征计算:

​ 质心高度:头部或躯干关键点的高度突然下降可能是跌倒信号。

​ 关节角度:如肩膀-膝盖连线与地面的夹角急剧变小(例如从站立时的90°到跌倒后的接近0°)。

​ 运动速度:头部或躯干在垂直方向的加速度骤增(例如跌倒时的“失重”瞬间)。

  • 分类决策:

​ 手动调阈值:设定特征阈值(如质心高度低于膝盖时判定跌倒)。

​ 机器学习模型:用SVM或随机森林基于特征组合分类。 直接上机器学习算了。


深度学习时序建模

算力和数据要求比较高。

  • LSTM:分析关键点序列的时序变化,捕捉“跌倒前-跌倒中-跌倒后”的动态过程。
    • 例如,专利CN112163564A将人体分为头、躯干、腿三区域,用LSTM记忆动作轨迹,预判跌倒风险。
  • 3D CNN:直接输入视频片段,同时提取空间(姿态)和时间(动作)特征(勉强算吧,做出来了也是勾八)。
  • 图卷积网络(GCN):将人体骨骼视为图结构,分析关节间的关联性,适合处理复杂动作。这个网络还不咋熟,到时候再学一下。

基于CLAHE与形态学的目标骨架提取

这个主要是骨架提取的,不需要深度学习模型,计算资源需求不高,但是可能在复杂背景下的鲁棒性不足。

  • 图像增强:使用限制对比度自适应直方图均衡化(CLAHE)提升图像对比度,突出人体轮廓。
  • 骨架提取
    1. 背景差分法分离运动目标,形态学闭运算填充空洞。
    2. 边缘检测(如Sobel算子)提取人体轮廓,中值滤波去噪。
    3. 细化算法生成人体骨架,提取近似关键点(如头部、四肢末端)。

拓展

遮挡问题

使用时空滤波(如滑动窗口滤波)填补遮挡导致的关键点缺失。

实时性优化

  • 采用模型蒸馏技术,将大模型的知识迁移到小模型。

  • 通过OpenVINO™等工具将模型部署到边缘设备,减少云端依赖。

鲁棒性优化(这个robust的翻译见一次骂一次)

  • 多传感器融合,比如加个手环上面整点加速计之类的,但是这个成本直接干上去了

基于人体关键点识别的摔倒检测算法
http://example.com/2025/04/05/机器学习/项目实践/2025-04-05-基于人体关键点识别的摔倒检测算法/
作者
ZHW
发布于
2025年4月5日
许可协议