RADS-Tech/RADS

GitHub: RADS-Tech/RADS

基于 YOLOv8n 与五规则启发式算法的路边交通事故实时检测系统,支持自动短信告警和 Web 操作员仪表盘。

Stars: 0 | Forks: 0

# 🚨 RADS - 路边事故检测系统 [![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://www.python.org/downloads/) [![YOLOv8](https://img.shields.io/badge/YOLOv8-Ultralytics-00FFFF.svg)](https://github.com/ultralytics/ultralytics) [![PHP](https://img.shields.io/badge/PHP-8.0+-777BB4.svg)](https://www.php.net/) [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) **基于 AI 驱动的 YOLOv8 实时事故检测及自动化短信报警系统** RADS 是一个端到端的事故检测系统,结合了深度学习 (YOLOv8n)、多规则分析和基于 Web 的监控平台,可自动检测视频片段中的交通事故,并通过 SMS 立即向有关部门报警。 ## ✨ 功能特性 ### ⚡ 核心能力 - **YOLOv8n 微调**: 基于 6,424 帧标注图像(4 种车辆类别:汽车、自行车、公交车、卡车)进行定制化模型训练 - **5 规则事故检测系统**: 结合速度下降、IoU 重叠、面积变化、异常停车和轨迹偏移的多启发式方法 - **Web 仪表盘**: 为操作员提供实时监控界面,支持视频上传与分析 - **自动化 SMS 报警**: 集成 Fast2SMS 实现即时紧急通知 - **置信度评分**: 设置 65% 阈值并进行时间平滑处理,以最大限度地减少误报 ### 🛡️ 优化 - **处理速度**: 3 fps 采样结合模型融合(比基线快 40-50%) - **减少误报**: 严格的阈值、4 帧时间持续性以及需要触发 3 条以上的多规则 - **时间平滑**: 跨多帧的持续事件检测 ## 🏗️ 系统架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ PRESENTATION LAYER │ │ (HTML/CSS/JS Dashboard - User Interface) │ └──────────────────────┬──────────────────────────────────────┘ │ ┌──────────────────────▼──────────────────────────────────────┐ │ APPLICATION LAYER │ │ (PHP Backend - Auth, Upload, Analysis Trigger) │ └──────────────────────┬──────────────────────────────────────┘ │ ┌──────────────────────▼──────────────────────────────────────┐ │ AI DETECTION ENGINE │ │ (Python + YOLOv8n + 5-Rule System + BoT-SORT Tracker) │ └──────────────────────┬──────────────────────────────────────┘ │ ┌──────────────────────▼──────────────────────────────────────┐ │ DATA LAYER │ │ (MySQL - operators, detection_logs, alert_logs) │ └─────────────────────────────────────────────────────────────┘ │ ┌──────────────────────▼──────────────────────────────────────┐ │ EXTERNAL SERVICES │ │ (Fast2SMS API - SMS Gateway) │ └─────────────────────────────────────────────────────────────┘ ``` ## 🎬 演示 ### 🔐 登录界面 ![登录](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/4b2191f119183750.png) ### 📊 仪表盘界面 ![仪表盘](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/5d0dc344ff183752.png) ### 🔄 事故检测处理 ![分析中](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/d191ce4640183754.png) ### 🎯 检测结果 ![检测结果](https://raw.githubusercontent.com/RADS-Tech/RADS/main/docs/images/detection_result.png) ### 🚨 事故警报(系统生成) ![事故警报](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/0f03355d46183758.png) ### 📢 已通知有关部门 ![已通知有关部门](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/424cfa16dc183802.png) ### 📩 短信警报(实际消息) ![事故警报短信](https://raw.githubusercontent.com/RADS-Tech/RADS/main/docs/images/accident-alert_preview.png) ## 📖 使用说明 ### 启动系统 1. **启动 XAMPP 服务** - 打开 XAMPP 控制面板 - 启动 Apache 和 MySQL 2. **访问仪表盘** http://localhost/RADS/roadside_accident_website/ 3. **注册操作员账户** - 点击 "Register" - 填写详细信息(位置信息将嵌入到 SMS 警报中) - 使用凭据登录 4. **上传并分析视频** - 点击 "Import New Video" 或将视频拖拽至上传区域 - 支持的格式:MP4, AVI, MOV, MKV - 等待分析(通常 30 秒的视频需要 20-30 秒处理时间) 5. **处理检测结果** - 如果检测到事故:点击 "YES — Alert Authorities" 发送 SMS - 如果是误报:点击 "NO — False Alarm" 取消 ## 🧠 工作原理 ### 1. 车辆检测 - **YOLOv8n** 检测每一帧中的车辆 - **BoT-SORT 跟踪器** 在帧间分配一致的 ID - 以 **3 fps** 处理,以达到最佳的速度/精度平衡 ### 2. 5 规则事故检测 每条规则独立评估事故发生的可能性: | 规则 | 描述 | 权重 | 阈值 | |------|-------------|--------|-----------| | **速度下降** | 速度降至滚动平均值的 60% 以下 | 35% | 60% 减速 | | **IoU 重叠** | 边界框重叠连续 3 帧大于 0.18 | 30% | 0.18 IoU | | **面积变化** | 边界框面积连续 3 帧变化超过 50% | 10% | 50% 变化 | | **异常停车** | 从快速(大于 25 像素/帧)到停止(小于 2.5 像素/帧) | 20% | 在 8 帧内 | | **轨迹偏移** | 方向变化大于 125° | 5% | 125° 角度 | ### 3. 置信度计算 ``` frame_score = weighted_sum(rule_scores) # 多规则奖励:如果 3+ 规则同时触发,提升 20% if num_rules_triggered >= 3: frame_score *= 1.20 # Temporal smoothing:仅将持续 >0.35 的峰值计入 4+ 帧 final_confidence = 0.65 * sustained_peak + 0.35 * mean_high_frames # Classification accident = (final_confidence >= 0.65) ``` ### 4. 警报工作流 ``` Accident Detected → Operator Confirmation → SMS via Fast2SMS → Database Log ``` ## ⚙️ 配置 ### 检测参数 编辑 `roadside_accident_website/detect.py`: ``` # Confidence thresholds CONF_THRESHOLD = 0.35 # YOLO detection confidence ACCIDENT_THRESHOLD = 0.65 # Final accident classification # Rule thresholds DECEL_RATIO_THRESH = 0.60 # Velocity drop ratio IOU_THRESH = 0.18 # Bounding box overlap AREA_CHANGE_THRESH = 0.50 # Area change percentage # Temporal parameters TEMPORAL_PERSIST = 4 # Frames to sustain event IOU_MIN_FRAMES = 3 # IoU persistence frames ``` ### 短信消息格式 编辑 `roadside_accident_website/php/send_alert.php`: ``` $message = "ACCIDENT ALERT! Location: {$location}. " . "Operator: {$operator}. Confidence: {$confidence}%. " . "Respond immediately."; ``` ## 📊 结果 ### 训练性能 | 指标 | 值 | |--------|-------| | **mAP50** | 81.2% | | **Precision** | 73.0% | | **Recall** | 73.0% | | **Training Epochs** | 50 (早停) | | **数据集大小** | 6,424 张训练图像 + 1,606 张验证图像 | ### 各类别性能 | 类别 | Precision | Recall | mAP50 | |-------|-----------|--------|-------| | 汽车 | 0.78 | 0.74 | 0.83 | | 摩托车 | 0.69 | 0.70 | 0.78 | | 公交车 | 0.74 | 0.72 | 0.81 | | 卡车 | 0.71 | 0.73 | 0.82 | ### 处理速度 - **30 秒视频**: 约 20-30 秒处理时间 - **采样率**: 3 fps(从 30 秒视频中提取 90 帧) - **GPU**: NVIDIA GTX 1660 Super (6GB VRAM) ## 📁 项目结构 ``` RADS/ ├── roadside_accident_website/ # Main web application │ ├── php/ │ │ ├── register.php # User registration │ │ ├── login.php # Authentication │ │ ├── analyze.php # Python script caller │ │ └── send_alert.php # SMS dispatch │ ├── model/ │ │ ├── best.pt (not included) # YOLOv8 trained weights │ │ └── detect.py # Accident detection script │ ├── dashboard.php # Operator interface │ ├── database_setup.sql # MySQL schema │ └── index.html # Landing page │ ├── training/ │ ├── train.py # YOLOv8 training script │ ├── data.yaml # Dataset configuration │ └── datasets/ │ ├── train/ # Training images │ └── val/ # Validation images │ ├── docs/ │ ├── RADS_Project_Report.pdf (pending upload) # Signed version will be added │ ├── RADS_Presentation.pdf # Project presentation │ └── images/ # Documentation images │ ├── requirements.txt # Python dependencies ├── README.md # This file └── LICENSE # MIT License ``` ## 🛠️ 使用的技术 ### AI/ML 技术栈 - **YOLOv8n** (Ultralytics) - 目标检测 - **PyTorch 2.7.1** - 深度学习框架 - **OpenCV** - 视频处理 - **NumPy** - 数值计算 - **BoT-SORT** - 多目标跟踪 ### Web 技术栈 - **PHP 8.0+** - 后端逻辑 - **MySQL** - 数据库 - **HTML5/CSS3/JavaScript** - 前端 - **XAMPP** - 本地开发服务器 ### 外部服务 - **Fast2SMS** - 短信网关 API ### 开发工具 - **Python 3.8+** - **CUDA 12.4** - GPU 加速 - **Git** - 版本控制 ## 🔮 未来增强计划 ### 计划功能 1. **实时 RTSP 流集成** - 对 CCTV 视频源进行实时处理,而非上传视频 - 支持 WebRTC 进行基于浏览器的流媒体传输 2. **专用事故分类器** - 专门针对事故片段训练的二元 CNN 模型 - 比基于规则的方法具有更高的准确性 3. **多摄像头仪表盘** - 同时监控多个位置 - 带有优先级队列的统一警报面板 4. **严重程度分类** - 将事故分类为轻微/中度/严重 - 根据严重程度优先处理响应 5. **边缘部署** - 部署在 NVIDIA Jetson 上进行现场处理 - 降低延迟和带宽需求 6. **移动应用** - 面向操作员的 iOS/Android 应用程序 - 推送通知代替 SMS ## 📄 许可证 本项目基于 **MIT License** 授权 - 详情请参见 [LICENSE](LICENSE) 文件。 ## 🙏 致谢 - **Ultralytics** 提供的 YOLOv8 框架 - **Fast2SMS** 提供的 SMS API 服务 - **OpenCV** 社区提供的计算机视觉工具 - 学术导师和审稿人的指导 ## 📞 联系方式 **项目负责人**: * Arnab Majhi * Bodhiswatwa Chowdhury **组织**: https://github.com/RADS-Tech **GitHub 主页**: * https://github.com/ArnabARDJ * https://github.com/DecodeTatai **项目链接**: https://github.com/RADS-Tech/RADS ## 📈 项目状态 **当前版本**: 1.0.0 **状态**: 稳定版 **最后更新**: 2026 年 3 月 ### 路线图 - [x] YOLOv8 微调 - [x] 5 规则检测系统 - [x] Web 仪表盘 - [x] SMS 报警 - [x] 性能优化 - [ ] 实时 RTSP 流传输 - [ ] 移动应用 - [ ] 严重程度分类 - [ ] 边缘部署
**如果您觉得这个项目有帮助,请考虑在 GitHub 上给它一个 ⭐!** 用 ❤️ 为更安全的道路而制作
标签:Fast2SMS, ffuf, OpenVAS, PHP, Python, SMS报警, Ultralytics, Vectored Exception Handling, Web仪表盘, YOLOv8, 交通事故检测, 人工智能, 凭据扫描, 多规则算法, 应急响应系统, 异常检测, 数据可视化, 无后门, 智能交通系统, 机器视觉, 模型微调, 深度学习, 用户模式Hook绕过, 目标检测, 视频分析, 计算机视觉, 车辆识别, 逆向工具, 道路安全