RADS-Tech/RADS
GitHub: RADS-Tech/RADS
基于 YOLOv8n 与五规则启发式算法的路边交通事故实时检测系统,支持自动短信告警和 Web 操作员仪表盘。
Stars: 0 | Forks: 0
# 🚨 RADS - 路边事故检测系统
[](https://www.python.org/downloads/)
[](https://github.com/ultralytics/ultralytics)
[](https://www.php.net/)
[](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) │
└─────────────────────────────────────────────────────────────┘
```
## 🎬 演示
### 🔐 登录界面

### 📊 仪表盘界面

### 🔄 事故检测处理

### 🎯 检测结果

### 🚨 事故警报(系统生成)

### 📢 已通知有关部门

### 📩 短信警报(实际消息)

## 📖 使用说明
### 启动系统
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绕过, 目标检测, 视频分析, 计算机视觉, 车辆识别, 逆向工具, 道路安全