基于深度学习的人体姿势跌倒检测算法效果展示基于深度学习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/11macOSLinuxPython版本Python 3.8 或更高版本(推荐 Python 3.8-3.10)硬件要求CPU:支持常规视频处理的多核处理器内存:4GB RAM 以上摄像头(可选):用于实时检测 安装步骤1. 克隆或下载项目gitclone项目地址cd目录2. 安装依赖库pipinstallopencv-python pipinstallmediapipe pipinstallnumpy或使用一行命令安装所有依赖:pipinstallopencv-python mediapipe numpy3. 验证安装python-cimport cv2; import mediapipe; import numpy; print(所有依赖安装成功!) 运行步骤方式一:检测视频文件将视频文件放入videos文件夹修改main.py第16行,指定视频路径:capcv2.VideoCapture(videos/你的视频.mp4)运行程序:python main.py方式二:使用摄像头实时检测修改main.py第15-16行:capcv2.VideoCapture(0)# 取消注释此行# cap cv2.VideoCapture(videos/2.mp4) # 注释掉此行运行程序:python main.py3. 退出程序按ESC键退出视频播放4. 检测结果说明程序会在视频画面上显示以下检测结果:CGDD(红色):检测到质心快速下降BTD(绿色):检测到身体过度倾斜SCDD(蓝色):检测到人体宽高比异常STATE FALLEN(黄色):综合判定为跌倒状态⚙️ 参数调整如需调整检测灵敏度,可修改以下参数:CGDD(质心下降检测)cgddCGDD(window_size7,threshold0.06)window_size:滑动窗口大小(帧数),越小越敏感threshold:下降阈值,越小越敏感BTD(身体倾斜检测)btdBTD(angle_threshold45)angle_threshold:倾斜角度阈值(度),越小越敏感SCDD(宽高比检测)scddSCDD(ratio_threshold0.9)ratio_threshold:宽高比阈值,越小越敏感PostureState(姿态状态机)在posture_state.py中修改:ifcog_y0.75andtilt_angle60:# 质心位置和倾斜角度阈值ifself.low_frames10:# 连续帧数阈值⚠️ 注意事项视频质量:确保视频清晰度足够,光线充足,避免严重遮挡拍摄角度:建议摄像头与人体保持正面或侧面,避免俯视或仰视角度过大检测距离:人体应占据画面的适当比例,不要太远或太近误判处理:弯腰、蹲下等动作可能被误判为跌倒,可根据实际场景调整参数性能优化:高分辨率视频可能导致处理延迟,可适当降低视频分辨率多人场景:当前版本仅支持单人检测,多人场景需要额外开发依赖版本:建议使用稳定的依赖库版本,避免API变更导致的问题实时检测:使用摄像头时,确保摄像头权限已开启 文件夹结构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.pyMediaPipe姿态检测封装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