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, 两轮车检测, 交通监控, 交通规则, 图像处理, 头盔检测, 安全驾驶, 安防系统, 无后门, 智能交通, 模型推理, 模型部署, 深度学习, 目标检测, 自动驾驶辅助, 计算机视觉, 车牌识别, 违规检测, 逆向工具