kharismasekarningtyas/rule-based-climbing-detection
GitHub: kharismasekarningtyas/rule-based-climbing-detection
该项目是一个基于 YOLOv8 姿态估计与 Norfair 跟踪的规则化视频监控系统,用于自动检测禁区内的攀爬行为并输出告警与日志。
Stars: 0 | Forks: 0
# 基于规则的攀爬检测
# 用于禁区监控的基于规则的攀爬检测
这是一个基于计算机视觉的监控系统,使用 **YOLOv8 Pose Estimation**、**Norfair Multi-Object Tracking** 和 **基于规则的检测**(Rule-Based Detection)来检测禁区内的攀爬活动。
该代码库包含一个实习项目,实现了一个用于检测禁区内攀爬活动的可视化监控系统。该系统结合了人体姿态估计、多目标跟踪以及基于人体关键点的预定义规则,以识别监控视频中的潜在攀爬行为。
## 功能特性
* 使用 **YOLOv8 Pose** 进行人体姿态估计
* 使用 **Norfair** 进行多人目标跟踪
* 使用选定的身体关键点进行基于规则的攀爬检测
* 可配置的禁区(Restricted Area, ROI)
* 实时可视化
* 检测到攀爬活动时的声音警报
* 检测结果的 CSV 日志记录
* 生成带有标注的输出视频
## 项目结构
```
rule-based-climbing-detection/
│
├── data/
│ └── climbing.mp4
│
├── outputs/
│ ├── output_climbing.mp4
│ └── climbing_log.csv
│
├── main.py
├── requirements.txt
└── README.md
```
## 检测流水线
1. 读取输入的监控视频。
2. 使用 **YOLOv8 Pose** 检测人体姿态。
3. 使用 **Norfair** 跟踪每个检测到的人。
4. 从每个检测到的人体中提取身体关键点。
5. 检查预定义的身体关键点是否进入禁区(ROI)。
6. 对人的活动进行分类:
* **OK** – 未检测到攀爬活动。
* **CLIMBING** – 选定的身体关键点与禁区相交。
* **POSSIBLE** – 在身体关键点不可用时,人体中心进入禁区。
7. 生成带有标注的输出视频,并将检测日志保存为 CSV 格式。
## 环境要求
* Python 3.10 或 3.11
* OpenCV
* Ultralytics
* Norfair
* NumPy
* Shapely
安装所有依赖项:
```
pip install -r requirements.txt
```
## 用法
1. 将输入视频放置在 `data/` 目录下。
2. 运行应用程序:
```
python climbing.py
```
## 输出结果
系统会生成:
* **带标注的视频**,包含:
* 边界框(Bounding boxes)
* 人员 ID
* 身体关键点
* 禁区(ROI)
* 检测状态
* **CSV 日志**,包含:
* 时间戳
* 帧编号
* 人员 ID
* 检测状态
* 身体关键点索引
* 关键点坐标
## 技术栈
* Python
* OpenCV
* YOLOv8 Pose (Ultralytics)
* Norfair
* NumPy
* Shapely
## 作者
**Kharisma Sekarningtyas**
Internet Engineering Technology
Vocational College, Universitas Gadjah Mada
标签:YOLOv8, 姿态估计, 目标跟踪, 行为识别, 视频监控, 计算机视觉, 逆向工具