3riy/Road-Incident-Detection-and-SMS-Alert-System

GitHub: 3riy/Road-Incident-Detection-and-SMS-Alert-System

基于计算机视觉和T5大模型的实时道路事故检测系统,通过YOLO/MobileNet识别碰撞、火灾、拥堵等事件,自动生成自然语言报告并通过Twilio发送短信告警。

Stars: 1 | Forks: 0

# 🚨 实时道路事故/危险检测与 SMS 预警通知系统 ### 一个使用 Computer Vision (MobileNet/YOLO)、基于 AI 的事故报告 (T5) 以及通过 Flask 仪表板进行即时 SMS 预警 (Twilio) 的实时道路事故检测系统。 Screenshot from 2025-11-16 13-43-00

# 目录 * [📝 概述](#overview) * [🧩 核心功能](#core-features) * [💥 CV/YOLO 模型可检测的事故](#incidents-the-cvyolo-model-detects) * [📹 项目演示图片](#project-demo-images) * [⚙️ 技术栈](#technology-stack) * [🔄 流程](#flow) * [🖧 图表](#diagram) * [📝 步骤](#steps) * [📁 项目结构](#project-structure) * [🐍 Root Python 模块](#root-python-modules) * [📹 Mobilenet 模型文件夹](#model-folder) * [🎨 UI 层](#ui-layer) * [🧪 依赖项](#dependencies) * [🔧 配置指南](#configuration-guide) * [💬 创建免费 Twilio 账户](#step-1---create-a-free-twilio-account) * [⛁ 创建免费 MongoDB Atlas 账户](#step-2---create-a-free-mongodb-atlas-account) * [🚀 运行应用程序的步骤](#steps-to-run-the-application) * [💪 开发挑战](#development-challenges) * [✅ 结语](#final-notes) * [许可证](#license) ## 概述 该系统持续监控视频源,检测危险,使用 T5 生成自然语言事故报告,并通过 SMS 向响应人员发出警报。 ### 核心功能 * 📹 **实时视频分析** (OpenCV + MobileNet SSD + 可选 YOLO) * 🧠 **自动事故报告** 使用 T5 模型 * 🕹️ **控制员验证界面** * ✉️ **通过 Twilio 发送 SMS/WhatsApp** * 📱 **移动应用通知** * 🌐 **Flask 仪表板** 用于实时监控 ### CV/YOLO 模型可检测的事故 YOLO 模型经过预训练,可以检测各种物体,例如汽车、公共汽车、机动三轮车、建筑物、树木以及狗和猫。 * 车辆碰撞 💥 (车辆边界框接触/重叠逻辑) * 交通拥堵 🚧 (邻近度和聚类逻辑) * 火灾 🔥 (HSV 颜色检测逻辑) * 行人被车辆撞击 💥 (近似邻近度逻辑) image ## 项目演示图片 对于我们的黑客马拉松演示,我们使用玩具车来模拟真实的汽车碰撞。可以看到汽车周围有边界框以及置信度分数。 - 目标检测中的 置信度分数 是一个数值(通常在 0 到 1 之间),表示机器学习模型对预测物体存在及其分类正确性的确定程度 Screenshot from 2025-11-16 13-43-00

同时发生或重叠的多个事故也将显示,如下所示: image

检测到事故(在本例中为火灾)后,将通过 Twilio API 触发 SMS 警报。 Screenshot from 2025-10-26 06-03-47

事故数据将记录到 MongoDB 数据库中。 Screenshot from 2025-10-24 21-54-04


Some other pictures from the development process:

Screenshot from 2025-10-24 14-55-44 ## 技术栈 ### Web 与后端框架 ![Flask](https://img.shields.io/badge/Flask-000000?style=for-the-badge&logo=flask) ![Gunicorn](https://img.shields.io/badge/Gunicorn-499848?style=for-the-badge&logo=gunicorn) **- flask**: Web 服务器、路由、仪表板、控制员 UI **- gunicorn**: 生产环境 WSGI 服务器 (部署) ### 计算机视觉 (CV) 技术栈 ![OpenCV](https://img.shields.io/badge/OpenCV-5C3EE8?style=for-the-badge&logo=opencv) ![Ultralytics](https://img.shields.io/badge/Ultralytics-YOLOv8-blue?style=for-the-badge) **- opencv-python**: 带有 GUI 支持的 OpenCV (本地测试) **- opencv-python-headless**: 用于服务器/Docker 的无头 OpenCV **- ultralytics**: YOLOv8 (可选的实时目标检测) ### 深度学习 / AI 组件 ![PyTorch](https://img.shields.io/badge/PyTorch-EE4C2C?style=for-the-badge&logo=pytorch) ![Transformers](https://img.shields.io/badge/HuggingFace-Transformers-yellow?style=for-the-badge&logo=huggingface) ![scikit-learn](https://img.shields.io/badge/Scikit--Learn-F7931E?style=for-the-badge&logo=scikitlearn) ![Pandas](https://img.shields.io/badge/Pandas-150458?style=for-the-badge&logo=pandas) **- torch**: T5 的 PyTorch 后端 + 模型推理 **- transformers**: HuggingFace Transformers (T5 模型) **- sentencepiece**: T5 的分词器依赖 **- tokenizers**: 快速分词器库 (HF) **- scikit-learn**: ML 实用工具 (聚类逻辑、指标) **- datasets**: HuggingFace 数据集加载器 (可选) **- pandas**: 日志和表格的数据处理 ### 数据库层 ![MongoDB](https://img.shields.io/badge/MongoDB-47A248?style=for-the-badge&logo=mongodb) **- pymongo[srv]**: MongoDB Atlas 连接器 (SRV 协议) ### 消息传递 / API 集成 ![Twilio](https://img.shields.io/badge/Twilio-F22F46?style=for-the-badge&logo=twilio) **- twilio**: SMS 通知 API ### 实用工具 (可选) ![NumPy](https://img.shields.io/badge/NumPy-013243?style=for-the-badge&logo=numpy) ![Matplotlib](https://img.shields.io/badge/Matplotlib-11557C?style=for-the-badge&logo=matplotlib) **- numpy**: 用于 CV + ML 的数值运算 **- matplotlib**: 调试视觉效果、热图、绘图 ### AI 工具 **- ChatGPT**: 用于生成 'ResQ' 标志 ## 流程 ### 图表 ``` Camera → OpenCV Detection → Incident? → T5 Report → Twilio SMS Dispatch ``` ### 步骤 1. 📡 捕获视频源。 2. 🧠 运行 CV 事故检测。 3. 📝 生成 AI 叙述。 4. 📤 SMS/WhatsApp 分发。 5. 🚑 通知响应人员 (救护车/警察/消防站)。 ## 项目结构 ``` resq/ ├── app.py ├── main.py ├── detector.py ├── t5_generator.py ├── db_utils.py ├── sms_utils.py ├── resources.py ├── config.py ├── requirements.txt ├── mobilenet/ │ ├── MobileNetSSD_deploy.prototxt │ └── MobileNetSSD_deploy.caffemodel ├── templates/ │ ├── index.html │ └── history.html └── static/ ``` ### Root Python 模块 #### `app.py` — Flask 后端与分发引擎 管理 Web 仪表板、路由、视频源、T5 pipeline、Twilio SMS、MongoDB 日志记录和资源分配。 #### `detector.py` — 实时 CV Pipeline 处理 MobileNet SSD 检测、火灾检测、碰撞逻辑、拥堵聚类、边界框以及 AI 报告触发。 #### `main.py` — 事故分类 实现聚类、重叠检测、事件合并和优先级评分。 #### `t5_generator.py` 生成叙述性事故报告和后续事件预测。 #### `db_utils.py` MongoDB 日志记录实用工具。 #### `sms_utils.py` 最小的 Twilio SMS 发送器。 #### `resources.py` 定义紧急接收号码。 #### `config.py` 包含 Twilio/MongoDB 凭证、模型名称、服务器设置。 ### 模型文件夹 MobileNet SSD 预训练模型文件。 ### UI 层 #### `index.html` 仪表板(视频源 + 实时生成的事故数据) #### `history.html` 日志历史(从 MongoDB 动态获取) ### 依赖项 #### `requirements.txt` ``` ## --- Web & Backend 框架 --- ## flask # Web server, routes, dashboard, controller UI gunicorn # Production WSGI server (deployment) ## --- Computer Vision (CV) 技术栈 --- ## opencv-python # OpenCV with GUI support (local testing) opencv-python-headless # Headless OpenCV for servers / Docker ultralytics # YOLOv8 (optional real-time object detection) ## --- Deep Learning / AI 组件 --- ## torch # PyTorch backend for T5 + model inference transformers # HuggingFace Transformers (T5 model) sentencepiece # Tokenizer dependency for T5 tokenizers # Fast tokenizer library (HF) scikit-learn # ML utilities (clustering logic for jams, metrics) datasets # HuggingFace dataset loader (optional) pandas # Data handling for logs and tables ## --- Database 层 --- ## pymongo[srv] # MongoDB Atlas connector (SRV protocol) ## --- Messaging / API 集成 --- ## twilio # SMS / WhatsApp notifications API ## --- Utilities (可选) --- ## numpy # Numerical operations used across CV + ML matplotlib # Debug visuals, heatmaps, plotting ``` ## 配置指南 以下是运行应用程序前所需的 **所有设置步骤**。 ### 步骤 1 - 创建免费 Twilio 账户 **URL:** [SMS Messaging, Built to Scale](https://login.twilio.com/u/signup?state=hKFo2SBPN0VrQ0R3LTBaQTBKRG5MdTZWVjZmdjlQbThwWGxmTKFur3VuaXZlcnNhbC1sb2dpbqN0aWTZIDdQUkRqTjFPVHY5VlRQM09Ncm1naWFaaUFTTXYtU0FCo2NpZNkgTW05M1lTTDVSclpmNzdobUlKZFI3QktZYjZPOXV1cks) 💬 注册免费账户 → 验证手机 → 获取一个 **Twilio 电话号码**。 您将需要: * **Account SID** * **Auth Token** * **Twilio 电话号码** (格式如 `+15551234567`) 您需要将这些插入到 `config.py` 中。 ### 步骤 2 - 创建免费 MongoDB Atlas 账户 **URL:** [https://www.mongodb.com/cloud/atlas/register](https://www.mongodb.com/cloud/atlas/register) 创建集群 → 创建数据库 → 创建集合。 您需要: * **MongoDB URI** (例如 `mongodb+srv://username:password@cluster.mongodb.net/`) * **数据库名称** ('resq') * **集合名称** ('reports') 您需要将这些插入到 `config.py` 中。 ### 步骤 3: 您的 `config.py` (填入您的详情) ``` # Twilio 凭证 TWILIO_ACCOUNT_SID = "your_account_sid" TWILIO_AUTH_TOKEN = "your_auth_token" TWILIO_FROM_NUMBER = "your_from_number" # MongoDB 设置 MONGO_URI = "your_uri" MONGO_DB_NAME = "resq" MONGO_COLLECTION = "reports" # T5 模型 T5_MODEL_NAME = "t5-small" # Video 源 VIDEO_SOURCE = 0 # Flask FLASK_HOST = "0.0.0.0" FLASK_PORT = 5000 ``` #### 替换为: * `your_account_sid` → 来自 Twilio 控制面板 * `your_auth_token` → 来自 Twilio 控制面板 * `your_from_number` → 您的 Twilio 电话号码 * `your_uri` → MongoDB 连接字符串 * `"resq"` → 数据库名称 (或更改) * `"reports"` → 您的集合名称 ### 您的 `resources.py` (填入您的详情) ``` # 资源类型到默认接收者手机号的映射 RESOURCE_RECEIVERS = { "Ambulance": ["no."], "Fire Truck": ["no.", "no."], "Police": ["no.", "no."], } ``` #### 替换: * `"no."` → **国际格式**的真实电话号码,例如: "+15551234567" 您可以为每个紧急单元添加多个号码。 ## 运行应用程序的步骤 ### 🔹 1. 导航到所需位置 使用 `cd` 命令移动到您想要存储项目的目录: ``` cd ~/your/desired/path ``` ### 🔹 2. 克隆仓库 ``` git clone https://github.com/3riy/Road-Incident-Detection-and-SMS-Alert-System/tree/main ``` ### 🔹 3. 导航到仓库文件夹 ``` cd Road-Incident-Detection-and-SMS-Alert-System ``` ### 🔹 4. 创建虚拟环境 ``` python3 -m venv env ``` ### 激活: ``` source env/bin/activate ``` ### 🔹 5. 安装依赖项 ``` pip install -r requirements.txt ``` ### 🔹 6. 运行 Flask 服务器 ``` python3 app.py ``` 然后打开 url: ``` http://127.0.0.1:5000 ``` ## 开发挑战 * 由于 Twilio API 为每个免费层级账户提供的积分非常有限,我的团队最初难以对 SMS 通知功能进行全面测试,但在黑客马拉松评委面前的现场演示中,我们借用了一位俱乐部成员的手机,使用他们的号码创建账户并测试了 SMS。 * 总体而言,这是一次很好的体验。 ## 结语 * 切勿提交诸如您的 MongoDB 或 Twilio 账户密码或电话号码之类的机密信息。 * 在生产环境中使用环境变量。 * 确保您的 PC 上配置了网络摄像头或 RTSP 源。 ## 许可证 本项目采用 MIT 许可证,可在适当署名的前提下自由复制、修改和分发。请在 [LICENSE.md](LICENSE.md) 阅读许可证。
标签:Flask, MobileNet, MongoDB, OpenCV, Python, SMS报警, SSD, T5模型, Twilio, Web仪表盘, YOLO, 事件检测, 人工智能, 凭据扫描, 应急响应系统, 异常检测, 无后门, 智慧交通, 深度学习, 用户模式Hook绕过, 目标检测, 系统调用监控, 自动报告生成, 自然语言生成, 视频分析, 计算机视觉, 逆向工具, 道路交通安全