Đếm xe trên đường cao tốc bằng YOLO v7 và Deep Sort

Bài toán đếm xe trên đường cao tốc chia ra 2 bài: nhận diện xe và đếm xe. Bài viết này hướng dẫn cách nhận diện các loại xe: bike, car, truck, container bằng YOLO v7.

Bước 1: chuẩn bị dataset

Video xe chạy trên cao tốc Trung Lương:

Video xe chạy tại cầu vượt Hoàng Văn Thụ:

Sau khi download video xong thì extract thành các frame, sau đó đánh nhãn. Để tiết kiệm thời gian có thể dùng pretrain và đánh nhãn tự động.

Bước 2: cài đặt phần mềm và thư viện cần thiết

Bài viết này sử dụng Windows 10, GPU NVIDIA RTX 3060.

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

Download CUDA 11.3: cuda_11.3.0_465.89_win10.exe (2.7GB). Lưu ý phải đăng ký tài khoản NVIDIA developer.
Cài đặt xong restart PC.

Download cuDNN 8.2.1: https://developer.nvidia.com/rdp/cudnn-archive
Chọn file cuDNN Library for Windows (x86) như hình dưới

Donwload xong giải nén file cudnn-11.3-windows-x64-v8.2.1.32.zip, sau đó copy các folder con vào thư mục C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin như hình dưới

Copy xong restart PC. Ghi chú: chỗ nào ghi restart PC thì cứ chịu khó restart, 1 phút là xong.

Test CUDA đã cài đặt thành công chưa bằng lệnh:
nvcc --version

Bước 4: cài đặt Pytorch

Cài đặt Pytorch CUDA
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

Kiểm tra pytorch cài đúng chưa

In ra True là được

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

https://github.com/thigiacmaytinh/HighwayCounter

pip install -r requirements.txt

Sau đó download file yolov7.pt bỏ vào folder HighwayCounter

Bước 6: training

Tất cả dữ liệu bao gồm hình ảnh và anotation đã được chuẩn bị sẵn, bạn chỉ cần training là ra kết quả.

Sau khi training thành công bạn vào folder runs\train\highwayXXX\weights sẽ thấy file best.pt, với XXX là số tăng dẫn. Đây là kết quả của quá trình training, trong repository đã commit sẵn file best.pt để các bạn thử nghiệm .

Số lượng epoch các bạn có thể giảm xuống 100 vẫn đủ chính xác. GPU yếu có thể giảm –batch xuống 4 hoặc 2, worker xuống 1 để phù hợp với cấu hình máy.

Chạy block Evaluation để test độ chính xác, lưu ý truyền đúng đường dẫn file.

Ghi chú

  • So với repository gốc của YOLOv7 thì repo này có sửa màu sắc của annotation cho dễ nhìn hơn. Cụ thể là sửa range màu từ [0;255] thành [0;200] để màu sắc sáng hơn
  • Một số máy sử dụng GPU GTX 1660 bị lỗi không detect được, chuyển sang sử dụng CPU thì hết lỗi