CN05 – Nhận diện biển số xe sử dụng thuật toán Yolo kết hợp với Tracker đếm số lượng xe từ khung biển số
Việc quản lý giao thông trên đường thì một yêu cầu quan trọng là phát hiện và đếm số lượng xe ô tô lưu thông từ dữ liệu video thu được thông qua hệ thống camera quan sát để giải quyết bài toán quản lý, điều hành, phân luồng và điều khiển giao thông.
Ứng dụng: nhận dạng biển số xe để phát hiện các xe chạy quá tốc độ hoặc sai làn đường, thu phí bãi đỗ xe, trạm cân xe tự động hay giữ xe thông minh,…
MỤC TIÊU ĐỀ TÀI
- Xây dựng một mô hình hệ thống quản lý bãi giữ xe tự động.
- Hạn chế những vấn đề bất cập của bãi giữ xe hiện nay.
- Để đạt được những mục tiêu trên cần tiến hành các công việc như sau: tìm hiểu về quá trình xử lý và nhận dạng biển số xe và tìm hiểu về các hệ thông bãi giữ xe đã được áp dụng ở Việt Nam.
LƯU ĐỒ GIẢI THUẬT
CẤU TẠO VÀ ỨNG DỤNG CỦA MẠNG YOLO
- YOLO: You Only Look Once
- Không phải là thuật toán tốt nhất nhưng là thuật toán nhanh nhất -> Đạt tốc độ gần như real time
- Có thể phát hiện nhiều vật thể trong cùng một bức ảnh
CÁC BƯỚC THỰC HIỆN TRAIN YOLO:
Bước 1: TẢI SOURCE DARKNET VỀ MÁY
Đầu tiên các bạn tạo thư mục Train_Yolo trên máy tính. Chúng ta sẽ chuyển vào và làm việc trong thư mục này.
Trên Command Prompt hoặc Terminal hãy chuyển vào thư mục Train_Yolo bằnh lệnh cd Train_Yolo, sau đó gõ lệnh: git clone https://github.com/pjreddie/darknet
Sau khi đợi vài phút, trong thư mục Train_Yolo sẽ có thêm thư mục darknet với 1 mớ folder bên trong, như vậy là tải thành công rồi. Bây giờ chúng ta sẽ chuyển sang bước biên dịch (make). Ở bước này, đầu tiên bạn mở file Makefile trong thư mục darknet và lưu ý 2 dòng sau:
# dòng GPU bên dưới để là 1 nếu máy bạn có GPU, ngược lại để 0
GPU=0
# dòng OPENCV để 1 nếu bạn muốn dùng thư viện OpenCV
OPENCV=1
Nếu để opencv=1 bị lỗi thì gõ lệnh:
SUDO APT-GET INSTALL LIBOPENCV-DEV
Xong, bây giờ bạn lưu lại file Makefile và gõ tiếp lệnh:
make
Chú ý: Nếu gõ make bị lỗi thì làm như sau:
Gõ thêm đoạn này:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib:/usr/local/cudnn/lib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
Bước 2: CHUẨN BỊ DỮ LIỆU TRAIN
- Dữ liệu train thì collect trên internet hoặc từ bất cứ nguồn nào có sẵn.
- Càng nhiều càng tốt và ảnh nên tính bằng đơn vị nghìn cho model.
Ví dụ: Về biển số, thì nhóm chung em sử dụng thư viện Mì AI: https://miai.vn/thu-vien-mi-ai
- Sau khi có dữ liệu, vào thư mục darknet/data và tạo folder images.
- Copy tât cả các ảnh dùng để train vào thư mục images.
- Tiếp đó quay ra xóa toàn bộ file trong thư mục darknet/data/labels (nếu có file, nếu không có thư mục labels thì tạo ra).
Bước 3: GÁN NHÃN CHO DỮ LIỆU
- Để gán nhãn cho dữ liệu, chúng ta sẽ sử dụng một công cụ có sẵn là LabelImg tại đây: https://github.com/tzutalin/labelImg.
- Mở Terminal hay Command Promt, chuyển vào thư mục darknet (nếu đang ở thư mục khác) và chạy lệnh:
git clone https://github.com/tzutalin/labelImg
- Sau khi chạy xong thì sẽ có một thư mục labelImg được tạo ra trong thư mục darknet, ta chuyển vào trong đó bằng lệnh cd lblImg.
Chạy lệnh cài thư viện:
# lệnh cài đặt thư viện pyqt5 (GUI) và lxml
pip install pyqt5 lxml
# lệnh chạy biên dịch mã nguồn thư viện
make qt5py3
* Sau khi chạy xong thì mở ứng dụng labelImg bằng lệnh: Python labelImg.py
Bước 4: CHUẨN BỊ CÁC FILE CẦN THIẾT PHỤC VỤ QUÁ TRÌNH TRAIN DỮ LIỆU
Trong bước này, với cách train YOLO của nhóm chúng em, chúng ta cần làm việc với 06 file như sau:
- yolo.data
- yolo.names
- train.txt
- val.txt
- yolov3.cfg
- darknet53.conv.74
Bước 5: TIẾN HÀNH TRAIN MODEL
Chạy lệnh train:
./darknet detector train yolo.data cfg/yolov3.cfg darknet53.conv.74
Nếu mọi thứ thành công, chúng ta sẽ được file weights. Sẽ nhìn thấy màn hình dạng như sau:
GIAO DIỆN TỔNG QUAN
VIDEO MÔ TẢ: https://drive.google.com/file/d/1d1q449x9GFwKEch-fIgXsZ1Fq0FI9HWL/view?usp=sharing
Vui lòng xem chi tiết tại đây