基于深度学习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
相关推荐
James5062 小时前
NewAPI使用
人工智能·docker·newapi
FAFU_kyp2 小时前
AP2 执行流程详解
人工智能
wangwangmoon_light2 小时前
1.23 LeetCode总结(树)_一般树
算法·leetcode·职场和发展
AI英德西牛仔2 小时前
手机怎么把AI对话导出
人工智能·ai·智能手机·豆包·deepseek·ds随心转
被考核重击2 小时前
基础算法学习
学习·算法
Old Uncle Tom2 小时前
Claude Code 记忆系统架构分析
人工智能·ai·系统架构·agent
小O的算法实验室2 小时前
2026年ASOC,学习驱动人工蜂群算法+移动机器人多目标路径规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
空中湖2 小时前
大模型修炼秘籍 第一卷灵气采集 第一章:天地为炉——海量数据之采集
人工智能
sp_fyf_20242 小时前
【大语言模型】 语言模型学习什么以及何时学习?隐式课程假说
人工智能·学习·语言模型