基于深度学习mediape实现人员跌倒人体姿势跌倒检测算法源码+说明文件

基于深度学习的人体姿势跌倒检测算法

效果展示

基于深度学习mediape实现人员跌倒人体姿势跌倒检测算法

📋 项目简介

本项目是一个基于深度学习和人体姿态估计的实时跌倒检测系统。通过MediaPipe姿态检测模型提取人体33个关键骨架点,结合多种算法综合判断是否发生跌倒事件,可用于老年人看护、安全监控等场景。

🧠 算法原理

本项目采用多算法融合的策略,通过以下四个模块协同工作实现跌倒检测:

1. 人体姿态检测 (PoseDetector)

  • 使用 MediaPipe Pose 模型实时检测人体33个关键骨架点
  • 支持视频流和摄像头实时检测
  • 提供骨架点可视化功能

2. 质心下降检测 (CGDD - Center of Gravity Drop Detection)

  • 原理:追踪人体质心(左右髋部中点)的垂直位置变化
  • 算法:维护一个滑动窗口(默认7帧),计算窗口内质心Y坐标的变化量
  • 判断:当质心下降幅度超过阈值(默认0.06)时,判定为快速下降
  • 特点:有效检测突然的下落动作

3. 身体倾斜检测 (BTD - Body Tilt Detection)

  • 原理:计算人体躯干的倾斜角度(肩部中点到髋部中点的连线与垂直方向的夹角)
  • 算法:使用反正切函数计算倾斜角度
  • 判断:当倾斜角度超过阈值(默认45°)时,判定为身体过度倾斜
  • 特点:有效区分站立和倾斜/倒地状态

4. 宽高比检测 (SCDD - Shape Change Detection)

  • 原理:计算人体骨架包围盒的宽高比
  • 算法:提取所有骨架点的X、Y坐标,计算宽度(max_x - min_x)和高度(max_y - min_y)的比值
  • 判断:当宽高比超过阈值(默认0.9)时,判定为人体横向展开(倒地)
  • 特点:直接反映人体姿态从竖直到水平的变化

5. 姿态状态机 (PostureState)

  • 原理:综合质心位置和倾斜角度,通过状态机判定最终跌倒状态
  • 算法:当质心Y坐标>0.75(屏幕下方)且倾斜角度>60°时,累计计数
  • 判断:连续10帧满足条件,判定为"FALLEN"(已跌倒)状态
  • 特点:避免瞬时误判,提高检测稳定性

💻 环境要求

操作系统

  • Windows 10/11
  • macOS
  • Linux

Python版本

  • Python 3.8 或更高版本(推荐 Python 3.8-3.10)

硬件要求

  • CPU:支持常规视频处理的多核处理器
  • 内存:4GB RAM 以上
  • 摄像头(可选):用于实时检测

📦 安装步骤

1. 克隆或下载项目

bash 复制代码
git clone <项目地址>
cd <目录>

2. 安装依赖库

bash 复制代码
pip install opencv-python
pip install mediapipe
pip install numpy

或使用一行命令安装所有依赖:

bash 复制代码
pip install opencv-python mediapipe numpy

3. 验证安装

bash 复制代码
python -c "import cv2; import mediapipe; import numpy; print('所有依赖安装成功!')"

🚀 运行步骤

方式一:检测视频文件

  1. 将视频文件放入 videos 文件夹

  2. 修改 main.py 第16行,指定视频路径:

    python 复制代码
    cap = cv2.VideoCapture("videos/你的视频.mp4")
  3. 运行程序:

    bash 复制代码
    python main.py

方式二:使用摄像头实时检测

  1. 修改 main.py 第15-16行:

    python 复制代码
    cap = cv2.VideoCapture(0)  # 取消注释此行
    # cap = cv2.VideoCapture("videos/2.mp4")  # 注释掉此行
  2. 运行程序:

    bash 复制代码
    python main.py

3. 退出程序

  • ESC 键退出视频播放

4. 检测结果说明

程序会在视频画面上显示以下检测结果:

  • CGDD(红色):检测到质心快速下降
  • BTD(绿色):检测到身体过度倾斜
  • SCDD(蓝色):检测到人体宽高比异常
  • STATE FALLEN(黄色):综合判定为跌倒状态

⚙️ 参数调整

如需调整检测灵敏度,可修改以下参数:

CGDD(质心下降检测)

python 复制代码
cgdd = CGDD(window_size=7, threshold=0.06)
  • window_size:滑动窗口大小(帧数),越小越敏感
  • threshold:下降阈值,越小越敏感

BTD(身体倾斜检测)

python 复制代码
btd = BTD(angle_threshold=45)
  • angle_threshold:倾斜角度阈值(度),越小越敏感

SCDD(宽高比检测)

python 复制代码
scdd = SCDD(ratio_threshold=0.9)
  • ratio_threshold:宽高比阈值,越小越敏感

PostureState(姿态状态机)

posture_state.py 中修改:

python 复制代码
if cog_y > 0.75 and tilt_angle > 60:  # 质心位置和倾斜角度阈值
if self.low_frames > 10:  # 连续帧数阈值

⚠️ 注意事项

  1. 视频质量:确保视频清晰度足够,光线充足,避免严重遮挡
  2. 拍摄角度:建议摄像头与人体保持正面或侧面,避免俯视或仰视角度过大
  3. 检测距离:人体应占据画面的适当比例,不要太远或太近
  4. 误判处理:弯腰、蹲下等动作可能被误判为跌倒,可根据实际场景调整参数
  5. 性能优化:高分辨率视频可能导致处理延迟,可适当降低视频分辨率
  6. 多人场景:当前版本仅支持单人检测,多人场景需要额外开发
  7. 依赖版本:建议使用稳定的依赖库版本,避免API变更导致的问题
  8. 实时检测:使用摄像头时,确保摄像头权限已开启

📁 文件夹结构

复制代码
Fall-detection-algorithm-main/
├── main.py                 # 主程序入口,整合所有检测模块
├── pose_detector.py        # 人体姿态检测模块(基于MediaPipe)
├── cgdd.py                 # 质心下降检测算法(CGDD)
├── btd.py                  # 身体倾斜检测算法(BTD)
├── scdd.py                 # 宽高比检测算法(SCDD)
├── posture_state.py        # 姿态状态机模块
├── videos/                 # 测试视频文件夹
│   ├── 1.mp4              # 测试视频1
│   └── 2.mp4              # 测试视频2
├── README.md               # 项目说明文档
└── 基于深度学习的人体姿势跌倒检测算法.pdf  # 算法详细说明文档

核心模块说明

文件名 功能描述 输入 输出
main.py 主程序,视频流处理和结果显示 视频帧 带标注的视频画面
pose_detector.py MediaPipe姿态检测封装 BGR图像帧 骨架点坐标
cgdd.py 质心下降检测 左右髋部坐标 是否检测到下降(bool)
btd.py 身体倾斜角度检测 肩部中点、髋部中点 是否倾斜+角度值
scdd.py 人体宽高比检测 33个骨架点坐标 是否异常+宽高比
posture_state.py 跌倒状态判定 质心Y坐标、倾斜角度 当前姿态状态

🔧 技术栈

  • Python:主要编程语言
  • OpenCV:图像处理和视频流处理
  • MediaPipe:Google开源的机器学习框架,用于人体姿态估计
  • NumPy:数值计算库

📊 算法流程

复制代码
视频帧输入
    ↓
MediaPipe姿态检测(33个骨架点)
    ↓
┌──────────────────────────────────┐
│  并行运行三个检测算法:            │
│  • CGDD:质心下降检测             │
│  • BTD:身体倾斜检测              │
│  • SCDD:宽高比检测               │
└──────────────────────────────────┘
    ↓
PostureState状态机综合判定
    ↓
输出跌倒状态 + 可视化标注

📝 参考资料

  • 项目附带文档:基于深度学习的人体姿势跌倒检测算法.pdf
相关推荐
Merlos_wind2 分钟前
HashMap详解
算法·哈希算法·散列表
狐狐生风3 分钟前
LangChain 向量存储:Chroma、FAISS
人工智能·python·学习·langchain·faiss·agentai
波动几何6 分钟前
CDA架构代码工坊技能cda-code-lab
人工智能
舟遥遥娓飘飘11 分钟前
DeepSeek V4技术变革对社会结构与职业体系的重构
人工智能
狐狐生风12 分钟前
LangChain RAG 基础
人工智能·python·学习·langchain·rag·agentai
汉克老师33 分钟前
GESP2025年3月认证C++五级( 第三部分编程题(1、平均分配))
c++·算法·贪心算法·排序·gesp5级·gesp五级
墨北小七41 分钟前
使用InspireFace进行智慧楼宇门禁人脸识别的训练微调
人工智能·深度学习·神经网络
HackTorjan42 分钟前
深度神经网络的反向传播与梯度优化原理
人工智能·spring boot·神经网络·机器学习·dnn
PersistJiao1 小时前
Codex、Claude Code、gstack三者的关系
人工智能
数智工坊1 小时前
【Mask2Former论文阅读】:基于掩码注意力的通用分割Transformer,大一统全景/实例/语义分割
论文阅读·深度学习·transformer