Đếm lon nước ngọt bằng YOLO v7

YOLO v7 hiện nay được đánh giá cao nhờ khả năng detect chính xác và tốc độ nhanh. Bài viết này sẽ hướng dẫn các bạn các bước để detect object mà không cần hiểu quá sâu về kiến trúc. Đọc xong bài này các bạn sẽ biết cách để traning model detect object tùy ý.

Có 3 bước chính cần làm là:

  1. Labeling: thu thập hình ảnh và gán nhãn loại nước ngọt
  2. Training: huấn luyện model
  3. Predict: đánh giá kết quả huấn luyện

Bước 1: gán nhãn hình ảnh

Bạn cần chuẩn bị đầy đủ các hình ảnh của các loại nước ngọt cần nhận diện, kể cả ảnh xấu nếu trong thực tế sử dụng cũng xấu như vậy. Tuy nhiên mình thì hạn chế thu thập và nhận diện ảnh chất lượng kém vì quá tốn thời gian mà chưa chắc đã thành công.

Để gán nhãn các bạn có thể dùng tool Darknet Locator.

Data để train mình đã thu thập sẵn trong folder yolov7\data\beverage\train\images

Bước 2: cài đặt các phần mềm cần thiết

Để training bạn cần có GPU hoặc sử dụng Colab, do mình không thích sử dụng Colab nên bài này mình sử dụng GPU NVIDIA RTX 3060 12GB VRAM để training.

  • OS: Windows 10 hoặc Ubuntu 20.04
  • CPU: Intel Core i5 4590
  • GPU: NVIDIA RTX 3060 12GB
  • RAM: 16GB
Cài đặt phần mềm
  • CUDA 11.3
  • cuDNN 8.2.1: cài xong restart PC
  • Python 3.7.3: cài xong restart PC
  • Visual Studio Code và extension Jupyter Notebook
Cài đặt các package cần thiết

Trong folder source code có file requirements.txt, các bạn cài đặt bằng lệnh
pip install -r requirements.txt
Cài xong restart PC

Cài đặt Pytorch

Cài đặt Pytorch CUDA 11.3
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
Cài xong restart PC

Download file pretrain yolov7.pt

Download vào folder chứa source code

Bước 2: traning model

Trong folder source code đã có sẵn hình ảnh và nhãn. Các bạn không cần làm gì thêm, chỉ cần ấn nút là chạy. Hình ảnh lon nước ngọt: trong folder drinks-1. Trong đây có file data.yaml định nghĩa dữ liệu với 37 classes và folder chứa ảnh.

Mở file yolov7_training.ipynb lên, chạy block Training Yolov7. Thời gian training theo cấu hình ở trên là gần 4 giờ, kết quả đạt được là file best.pt

Trong quá trình chạy có lỗi các bạn có thể resume lại ở block Resume.

Bước 3: đánh giá kết quả huấn luyện

Cũng trong file yolov7_training.ipynb, các bạn chạy block Evalution để inference hình ảnh. Bên dưới là 1 ảnh kết quả

Ghi chú

  • Nếu máy bạn không đủ VRAM có thể giảm –batch hoặc –workers xuống
  • Đối với Windows để biết GPU có được sử dụng hay không bạn mở tab Performance, chọn GPU và chọn Cuda. Kết quả như hình dưới là đang dùng GPU để training

Source code

https://github.com/thigiacmaytinh/beverage_yolov7