Phát hiện xe trên đường cao tốc bằng Yolov8

Hiện nay, các phương tiện tham gia giao thông ngày càng nhiều, đặc biệt việc quản lý giao thông trên đường cao tốc càng trở nên quan trọng. Bài viết này hướng cách sử dụng mô hình Yolov8 để phát hiện xe trên đường cao tốc.

Mô hình được chạy trên Windows với GPU NVIDIA RTX 2060.

Bước 1: cài đặt VS code và Python

Bước 2: cài đặt CUDA và cuDNN

    Download CUDA 12.1 (3.1 GB) và cuDNN v8.9.7 (1.01 GB). Lưu ý phải đăng ký tài khoản NVIDIA developer. Restart PC sau khi cài đặt.

Bước 3: clone repository và cài đặt package

    Download source code cuối bài viết

    Cài đặt các thư viện bằng lệnh

    pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cu121

    pip install ultralytics

Bước 4: Training

Tập dữ liệu đã được đánh nhãn sẵn, vào Notebook Yolov8.ipynb để train model

Với cấu hình máy yếu, GPU có hiệu suất thấp, cần giảm số lượng epoch xuống (100 epoch), giảm batch size xuống (8 batch), giảm kích thước ảnh xuống (imgzs = 224) hoặc giảm số lượng worker xuống 1

Lựa chọn mô hình YOLOv8 phù hợp:

  • YOLOv8n (Nano): Nhẹ nhất, phù hợp cho máy yếu, tốc độ nhanh nhưng độ chính xác thấp.
  • YOLOv8s (Small): Cân bằng giữa tốc độ và độ chính xác, thích hợp cho dự án nhỏ.
  • YOLOv8m (Medium): Độ chính xác cao hơn, yêu cầu nhiều tài nguyên hơn.
  • YOLOv8l (Large): Độ chính xác cao, dành cho máy có GPU mạnh.
  • YOLOv8x (Extra Large): Lớn nhất, độ chính xác cao nhất, yêu cầu phần cứng mạnh.

Có thể tải các mô hình tại YOLOv8 models

!yolo train model=yolov8n.pt data='./datasets/data.yaml' batch=32 epochs=300 imgsz=640 device=0

Sau khi quá trình huấn luyện hoàn tất, bạn có thể tìm thấy file best.pt trong thư mục runs/detect/trainXXX/weights/, với XXX là số tăng dần. Đây là kết quả của quá trình huấn luyện.

Để kiểm tra độ chính xác, chạy block Val và đảm bảo truyền đúng đường dẫn file model và file data.
!yolo val model='./runs/detect/train/weights/best.pt' data='datasets/data.yaml'

Bước 5: Detect

Chạy lệnh trong block Predict
!yolo predict model='./runs/detect/train/weights/best.pt' source='highway.mp4' device=0

Trong đó, model là đường dẫn đến file model, source là đường dẫn đến hình ảnh hoặc video cần detect, device là thiết bị sẽ được sử dụng: cpu hoặc 0 cho GPU.
Lưu ý cần truyền đúng đường dẫn model và ảnh hoặc video cần detect. Kết quả detect sẽ được lưu vào folder runs/detect/predict/

Source code

Repo Github: https://github.com/thigiacmaytinh/HighwayCounter_YOLOv8

Lưu ý

Để sử dụng GPU CUDA 12.1 cần xóa torch CPU và tải lại torch 2.4.0+cu121
Để kiểm tra, các bạn mở CMD (bấm Windows+R gõ cmd và nhấn enter) nhập lệnh pip show torch Nếu kết quả trả về Version: 2.4.0+cu121 là đã có CUDA, nếu không các bạn cần gỡ torch hiện tại và cài lại phiên bản hỗ trợ CUDA
pip uninstall torch torchvision torchaudio

pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cu121

Chúc các bạn thành công!