Hướng dẫn đếm sắt xây dựng bằng YOLO

Mục lục

Tiền đề bài viết

Đếm sắt xây dựng là 1 bài toán kinh điển trong học lập trình ứng dụng Computer Vision. Nó hội tụ đủ các yếu tố để trở thành ví dụ mẫu:
– Có mục tiêu rõ ràng, dễ dàng xác định được thành công hay không
– Dataset không bí mật, không nhạy cảm, dễ dàng thu thập
– Có tính ứng dụng trong thực tế
– Và cuối cùng là độ khó tương đối thấp

Bài viết này cung cấp đầy đủ cho các bạn gồm dataset, cách thức thực hiện và sử dụng.

Bước 1: cài đặt các chương trình cần thiết

  • Python 3.10 x64
  • CUDA 11.8
  • cuDNN 8.6.0

Cài đặt pip package

pip install -r requirements.txt

Cài đặt Pytorch 2.7.0 CUDA

pip install torch==2.7.0 torchvision==0.22.0 torchaudio==2.7.0 --index-url https://download.pytorch.org/whl/cu118

Bước 2: training

Trong repository đã upload sẵn notebook YOLODetect, các bạn chỉ cần training theo tham số mặc định là được.

Giải thích câu lệnh training:
results = model.train(data=f"{current_dir}/Dataset/data.yaml",
epochs=500,
imgsz=640,
batch=8,
device=0,
name="iron")

  • data: đường dẫn đến file data.yaml, chỉ ra dataset và các class cần training
  • epochs: Số vòng lặp huấn luyện, số càng nhiều thì model càng chính xác. Bạn có thể training từ 200 epoch cho nhanh, nhưng để có độ chính xác cao cần 500. Thường thì model khi đạt đủ độ chính xác sẽ ngưng.
  • imgsz: trước khi training thì ảnh sẽ được resize về kích cỡ imgsz. Khi sử dụng các bạn cần set input size tương ứng.
  • batch: là số lượng ảnh được đưa xuống GPU để xử lý trong một lần khi training. Có nghĩa là VRAM của bạn càng ít thì số này càng nhỏ. Néu batch=0 thì chương trình sẽ tự tính, nếu batch lớn thì sẽ xảy ra lỗi: CUDA out of memory
  • name: tên folder sẽ được tạo khi chạy

Sau khi training thành công, bạn sẽ được file **runs\iron\weights\best.pt**. Nếu bạn chỉ sử dụng Python thì file này là đủ.

Trong repository đã commit sẵn cho các bạn các file weight đã training thành công trong folder weight.

Bước 3: test model

Nếu bạn sử dụng Python file best.pt là có thể chạy được trực tiếp

Nếu bạn cần chạy với Windows application thì convert sang ONNX để sử dụng với chương trình YOLOLYTIC. Bạn có thể convert sang ONNX CPU hoặc CUDA để chạy với bản phù hợp.

Trong folder Weight commit sẵn 2 file bat:

  • convert_pt_to_onnx.bat: convert file *.pt sang file *.onnx chạy bằng CPU
  • convert_pt_to_onnx_CUDA.bat: convert file *.pt sang file *.onnx chạy bằng GPU (CUDA)

Các bạn sử dụng chương trình YOLOLYTIC để test model:

Như hình trên ta thấy kết quả là 114 cây sắt, thời gian chạy bằng CPU là 630ms.

Link github

Leave a Reply