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.
- Python 3.7.3 amd64: cài đặt xong restart PC
- Visual Studio Code
- Cài đặt extension Jupyter notebook cho Visual Studio Code
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
1 2 |
import torch torch.cuda.is_available() |
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