Phát triển hệ thống giám sát người điều khiển xe máy có đội mũ bảo hiểm hay không, phát hiện vi phạm chở quá số người trên xe máy. Hệ thống có thể:
- Phân tích ảnh, video hoặc stream từ ESP32-CAM.
- Ghi log vi phạm vào file CSV.
- Lưu ảnh người vi phạm.
- Hiển thị thống kê và số liệu theo thời gian thực.
| Thành phần | Công nghệ |
|---|---|
| Nhận diện | YOLOv8 |
| Web server | Flask (Python) |
| Stream video | ESP32-CAM hoặc video upload |
| Giao diện | HTML, Bootstrap, JavaScript |
| Log & Thống kê | CSV + Pandas |
├── app.py # Flask app chính
├── best.pt # Mô hình YOLOv8 đã huấn luyện
├── templates/ # HTML frontend
│ ├── index.html
│ ├── stream.html
│ ├── video.html
│ └── stats.html
├── static/
│ ├── uploads/ # Ảnh/video gốc
│ └── outputs/ # Ảnh/video đã xử lý
├── logs/
│ ├── violations.csv # Log vi phạm
│ └── images/ # Ảnh người vi phạm (crop từ khung hình)
└── requirements.txt # Danh sách thư viện
python -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # Linux/macOSpip install -r requirements.txtpython app.pyTruy cập tại: http://127.0.0.1:5000
| Chức năng | URL | Mô tả |
|---|---|---|
| Trang chính | / |
Giao diện chính upload ảnh/video |
| Upload & xử lý ảnh/video | /upload |
Xử lý bằng YOLOv8 |
| Xem ảnh kết quả | /image/<filename> |
Hiển thị ảnh đã nhận diện |
| Xem video kết quả | /video/<filename> |
Hiển thị video đã nhận diện |
| Stream trực tiếp (ESP32-CAM) | /stream và /video_feed |
Nhận ảnh từ camera |
| Thống kê vi phạm | /stats và /stats_json |
Biểu đồ số lượng theo ngày |
| Thống kê thời gian thực | /stats_stream |
Cập nhật real-time |
-
Khi phát hiện người không đội mũ bảo hiểm (
class_id == 1) hoặc vi phạm, hệ thống:-
Lưu ảnh crop phần người vi phạm vào
logs/images/ -
Ghi vào
logs/violations.csvgồm:time: thời gian vi phạmviolation: loại vi phạm ("No Helmet", "With Helmet")image: tên ảnh crop
-
Bạn có thể tự huấn luyện mô hình best.pt với dữ liệu nhãn đội mũ bảo hiểm:
yolo task=detect mode=train model=yolov8n.pt data=data.yaml epochs=100 imgsz=640index.html: Giao diện chính để upload ảnh/videostream.html: Hiển thị camera ESP32-CAMstats.html: Biểu đồ thống kê số lượng người vi phạm
- Python 3.8+
- OpenCV, Flask, Ultralytics, Pandas