Harsha081459/Traffic-Rule-Violation-Detection-for-Two-Wheelers
GitHub: Harsha081459/Traffic-Rule-Violation-Detection-for-Two-Wheelers
这是一个基于计算机视觉的交通违规检测系统,专注于从图像中自动识别两轮车的头盔未戴和车牌信息问题。
Stars: 0 | Forks: 0
# 交通违规检测提交
## 概述
本次提交在 `solution.py` 中实现了所需的 `TrafficViolationDetector` 类。
给定一张RGB街景图像,系统检测违规的两轮车,并仅返回所需的JSON兼容字典:
```
{
"violations": [
{
"num_riders": int,
"helmet_violations": int,
"license_plate": "string"
}
]
}
```
`predict()` 不返回推理时间、调试键、图像路径、边界框或额外字段。
## 提交结构
```
/
solution.py
requirements.txt
README.md
models/
full_detector.pt
helmet_detector.pt
plate_detector.pt
# optional fallback / OCR files if used:
# yolo11n.pt
# easyocr/*.pth
```
## 使用的模型
### 1. 全图检测器
- 权重文件: `models/full_detector.pt`
- 模型类型: YOLO11m
- 输入: 完整街景图像
- 类别:
- `0: two_wheeler`
- `1: rider`
- 用途: 检测摩托车/踏板车和骑手框。骑手框用于骑手计数和车辆-骑手关联。
### 2. 头盔检测器
- 权重文件: `models/helmet_detector.pt`
- 模型类型: YOLO11s
- 输入: 扩展的两轮车/骑手裁剪区域
- 类别:
- `0: helmet`
- `1: no_helmet`
- 用途: 通过检测 `no_helmet` 头部来计数头盔违规。
### 3. 车牌检测器
- 权重文件: `models/plate_detector.pt`
- 模型类型: YOLO11n
- 输入: 违规两轮车的裁剪区域
- 类别:
- `0: license_plate`
- 用途: 在OCR前检测车牌裁剪区域。
### 四、OCR
- OCR引擎: EasyOCR,如果本地 `models/easyocr/` 目录下存在模型文件。
- 代码不在运行时下载OCR模型。如果EasyOCR模型文件不存在,检测器仍会返回所需输出格式,但无法识别的车牌将返回空字符串。
## 处理流程
1. 在 `__init__()` 中加载所有模型。
2. 在 `predict(image_path)` 中,使用OpenCV读取图像。
3. 运行全图YOLO检测器找到两轮车和骑手。
4. 将骑手框与每个两轮车关联。
5. 对每个扩展的两轮车裁剪区域运行头盔检测器。
6. 使用基于骑手框和头盔/无头盔头部检测的融合逻辑计数骑手。
7. 如果车辆违规,则运行车牌检测器和OCR。
8. 仅返回所需的 `violations` 字典。
## 重要实现细节
- `predict()` 是无状态的,并会捕获运行时错误,失败时返回 `{"violations": []}`。
- 模型仅在构造函数中加载。
- 输出格式严格,不包含任何额外的调试字段。
- 骑手计数包含重复/合并骑手框的处理,以避免多计。
- 头盔违规数量受限于骑手数量,以防止重复的 `no_helmet` 框导致答案膨胀。
- 当EasyOCR可用时,车牌OCR使用多种轻量级预处理变体和投票机制。
## 依赖项
使用以下命令安装依赖项:
```
pip install -r requirements.txt
```
系统设计用于在离线评估中使用,所有必需的模型文件需预先放置在 `models/` 目录内。
标签:EasyOCR, OpenCV, Python, YOLO, 两轮车检测, 交通监控, 交通规则, 图像处理, 头盔检测, 安全驾驶, 安防系统, 无后门, 智能交通, 模型推理, 模型部署, 深度学习, 目标检测, 自动驾驶辅助, 计算机视觉, 车牌识别, 违规检测, 逆向工具