Đây là một ứng dụng web hoàn chỉnh được xây dựng bằng Python và Flask, sử dụng các công nghệ Thị giác Máy tính (YOLOv5, DeepSORT) và xử lý nền (Celery, Redis) để phân tích lưu lượng, mật độ, và tốc độ của các phương tiện giao thông từ video.
🚀 Tính năng chính
Giao diện Web Thân thiện: Người dùng có thể dễ dàng tải lên, quản lý và xem kết quả phân tích video thông qua một giao diện web trực quan.
Xử lý Nền Mạnh mẽ: Sử dụng Celery và Redis, các video được xử lý ở chế độ nền, giúp giao diện web luôn mượt mà và không bị treo, ngay cả khi đang phân tích các video dài.
Tối ưu hóa Hiệu suất trên CPU: Tích hợp các kỹ thuật Giảm độ phân giải xử lý và Bỏ qua Khung hình (Frame Skipping) để tăng tốc độ phân tích một cách đáng kể mà không cần GPU.
Theo dõi Ổn định (Robust Tracking): Tích hợp thuật toán DeepSORT để duy trì ID của các phương tiện một cách ổn định, xử lý tốt các tình huống che khuất hoặc giao thông đông đúc.
Phân tích Ùn tắc: Sử dụng logic "Vùng Giám sát" (Monitoring Zone), hệ thống có thể theo dõi và tính toán tốc độ tức thời của tất cả các phương tiện, kể cả khi chúng đang đứng yên.
Dashboard Tương tác: Mỗi video sau khi phân tích sẽ có một trang dashboard riêng (xây dựng bằng Streamlit) với các biểu đồ chi tiết về mật độ, tốc độ, phân bổ và so sánh giữa các loại xe.
Công cụ Dòng lệnh (CLI): Cung cấp script run_cli.py cho các nhà phát triển để chạy phân tích hàng loạt hoặc gỡ lỗi, với tùy chọn hiển thị cửa sổ xem trước.
🧰 Công nghệ sử dụng
Web Framework: Flask, Flask-SQLAlchemy
Xử lý Nền: Celery, Redis
Computer Vision: OpenCV, Ultralytics (YOLOv5)
Tracking: DeepSORT (deep-sort-realtime)
Data Processing: Pandas, NumPy
Dashboarding: Streamlit, Plotly
⚙️ Cài đặt và Chuẩn bị
Thực hiện các bước sau để cài đặt môi trường và chạy dự án.
1. Clone Repository
bash
1git clone <URL_CUA_BAN>2cd TrafficAnalysisWebApp
2. Cài đặt Redis
Hệ thống xử lý nền Celery yêu cầu Redis.
Trên Windows: Cài đặt thông qua WSL (Windows Subsystem for Linux) hoặc tải các bản build không chính thức từ tpor/redis-windows.
Trên macOS:brew install redis
Trên Ubuntu/Debian:sudo apt-get install redis-server
Sau khi cài đặt, hãy đảm bảo server Redis đang chạy.
Thao tác này sẽ tạo một thư mục core_analysis/models/yolov5/.
💡 Hướng dẫn sử dụng
Dự án có thể được chạy theo hai chế độ: Giao diện Web hoặc Dòng lệnh.
Chế độ 1: Giao diện Web (Dành cho Người dùng cuối)
Bước 1: Khởi động Celery Worker
Mở một Terminal thứ nhất tại thư mục gốc của dự án và chạy lệnh sau. Worker này sẽ lắng nghe và thực hiện các tác vụ phân tích.
celery -A tasks.video_tasks.celery worker --loglevel=info
Bước 2: Khởi động Ứng dụng Web
Mở một Terminal thứ hai tại thư mục gốc và chạy lệnh sau để khởi động server Flask:
python run_web.py
Bước 3: Sử dụng Ứng dụng
Mở trình duyệt và truy cập vào http://127.0.0.1:5000.
Sử dụng giao diện để tải lên video.
Theo dõi trạng thái xử lý trên trang chủ và trong cửa sổ terminal của Celery worker.
Khi video đã xử lý xong, nhấp vào "Xem Dashboard" để xem kết quả.
(Lưu ý: Phần nhúng Streamlit sẽ được triển khai ở các bước phát triển tiếp theo)
Chế độ 2: Dòng lệnh (Dành cho Lập trình viên)
Chế độ này cho phép bạn chạy phân tích trực tiếp và nhanh chóng.
Bước 1: Đặt Video
Đặt file video của bạn (ví dụ: my_video.mp4) vào thư mục instance/uploads/. Thư mục này sẽ được tự động tạo trong lần chạy đầu tiên.