基于YOLOv12和MediaPipe的人体跌倒检测系统python源码+使用说明

作品简介

# 基于YOLOv12和MediaPipe的人体跌倒检测系统



一个使用计算机视觉技术的实时跌倒检测系统,采用YOLOv12进行人体检测,MediaPipe进行姿态估计。该系统具有直观的仪表盘,用于监控和分析跌倒事件。

## 功能特点

- **实时检测**:实时处理来自网络摄像头或视频文件的视频流

- **跌倒类型分类**:区分四种跌倒类型:绊倒、滑倒、跌倒和绊跌

- **现代化PyQt5仪表盘**:具有统计信息、图表和历史记录跟踪的用户友好界面

- **多人检测**:可同时跟踪和分析多个人员

- **高级姿态分析**:监测关键身体点(肩膀、臀部、脚部)以准确评估跌倒

- **可调节灵敏度**:为不同环境微调检测阈值

- **智能跌倒计数**:通过人员跟踪和冷却时间防止重复计数

- **自动跌倒快照**:检测到跌倒时捕获并存储图像

- **声音警报**:检测到跌倒时发出音频通知

- **命令行模式**:还支持无头命令行模式以进行部署


## 系统要求


- Python 3.7-3.10(Python 3.11+可能与某些依赖项存在兼容性问题)

- PyTorch

- OpenCV

- MediaPipe

- Ultralytics (YOLOv12)

- PyQt5

- Matplotlib

- NumPy


## 安装说明


1. 下载源码:


2. 安装依赖项:

  ```

  pip install -r requirements.txt

  ```


3. 安装PyQt5(如果requirements中未包含):

  ```

  pip install PyQt5==5.15.10 PyQt5-Qt5==5.15.2 PyQt5-sip==12.13.0 matplotlib

  ```


4. 下载YOLOv12模型(首次运行时自动下载,或手动放置在项目根目录)


## 使用方法


### 仪表盘模式(推荐)


```

python fall_detection_system.py --mode dashboard

```


### 命令行模式


```

python fall_detection_system.py --mode cli --source 0

```


### 选项参数


- `--mode`:应用程序模式(`dashboard` 或 `cli`)

- `--model`:YOLOv12模型文件路径(默认:`yolov12n1.pt`)

- `--conf`:检测置信度阈值(0-1)

- `--source`:视频源(0表示网络摄像头,或视频文件路径)

- `--fall-threshold`:跌倒检测灵敏度阈值(0-1)

- `--angle-threshold`:身体角度阈值(0-90度)

- `--save-falls`:检测到跌倒时保存帧

- `--output-dir`:保存跌倒快照的目录


## 系统架构


系统由几个关键组件组成:


1. **YOLOv12人体检测**:识别视频帧中的人体

2. **MediaPipe姿态估计**:从检测到的人体中提取骨骼数据

3. **跌倒检测算法**:分析姿态数据以检测跌倒,标准包括:

  - 相对于垂直方向的身体角度

  - 身体纵横比(水平与垂直方向)

  - 突然的垂直位置变化

  - 运动模式分析

4. **人员跟踪**:跨帧跟踪个人以保持身份识别

5. **PyQt5仪表盘**:提供实时监控和分析


## 跌倒分类标准


- **绊倒**:逐渐的角度变化伴中等速度

- **滑倒**:快速角度变化伴高速度

- **跌倒**:前向动量伴中等角度变化

- **绊跌**:最小水平移动伴显著垂直下降


## 项目结构


```

fall-detection-system/

├── models/

│  └── fall_detector.py    # 核心跌倒检测模型

├── dashboard/

│  └── dashboard_app.py    # PyQt5仪表盘UI应用程序

├── utils/

│  └── utils.py        # 工具函数

├── fall_snapshots/       # 跌倒图像目录

├── fall_detection_system.py  # 主应用程序脚本

├── README.md          # 项目文档

└── requirements.txt      # 项目依赖

```


## 最近改进


- 增强了跌倒检测算法,采用更严格的标准

- 添加了冷却时间以防止重复跌倒计数

- 改进了针对不同环境的灵敏度控制

- 添加了全面的跌倒类型分类

- 修复了关键点检测以获得更准确的姿态分析

- 改进了摄像头访问和处理的错误处理

- 优化了快照保存以减少磁盘使用

- 从Tkinter迁移到PyQt5以获得更现代的界面


创作时间: