Hướng dẫn dùng labelimg trong PHP

Bài viết này hướng dẫn cách build và cách sử dụng tool LabelImg. Tool LabelImg dùng để đánh nhãn vật thể trong hình để training các model detection như YOLO.

Các bước cài đặt labelImg trên Windows

Mình sử dụng Windows 10 để thực hiện.

  • Bước 1: Các bạn clone source code từ repo: https://github.com/tzutalin/labelImg. Có thể download code hoặc clone bằng tool Source Tree
  • Bước 2: Clone xong thì cài Python, mình sử dụng : version 3.6.5 x64, tải bản Windows x86-64 executable installer
  • Bước 3: Sau khi cài xong Python thì cài PyQt5 bằng cmd:
    pip install PyQt5
  • Bước 4: Tiếp theo là cài lxml
    pip install lxml
  • Bước 5: Copy các file cần thiết bằng cmd:
    pyrcc5 -o libs/resources.py resources.qrc

Vậy là xong, gọi file labelImg.py là chương trình sẽ chạy lên để các bạn đánh nhãn cho YOLO.

Hướng dẫn dùng labelimg trong PHP

Việc cài đặt cho Linux cũng tương tự với các câu lệnh ở trên

Mình lấy ảnh CT não để vẽ thử, ấn nút W để vẽ bouding box

Hướng dẫn dùng labelimg trong PHP

Chương trình cho phép đánh nhãn nhiều loại class khác nhau trong cùng 1 ảnh và xuất ra 2 loại format là YOLO hoặc Pascal VOC.

Giá trị của bounding box (x, y, width, height) được chuẩn hóa trong khoảng [0:1] khi vẽ như hình dưới

Hướng dẫn dùng labelimg trong PHP

Phím tắt và mẹo

  • Ấn AD để chuyển ảnh tới – lui
  • Vào menu View -> chọn Auto save mode để tự động save file khi chuyển ảnh mà không cần ấn Ctr + S

Hướng dẫn dùng labelimg trong PHP
Label images tool

Đây là phần mềm gán nhãn cho hình ảnh, phục vụ cho mục đích đào tạo các mô hình Deep learning.

Cụ thể ta có thể gán nhãn cho ảnh và xuất file có đuôi:

  • Dạng.xml – sử dụng trong hầu hết các model Deep learning.
  • Dạng.txt – sử dụng trong model YOLO với backbone darknet.
  1. Hướng dẫn cài đặt trên các hệ điều hành.

Bước 1: tải Tool gán nhãn và giải nén. Tải ở đây.

Bước 2: truy cập vào thư mục giải nén ở bước 2 -> data. Sau đó xóa hết dữ liệu trong file predefined_classes.txt

  • HĐH Window:

Bước 3: đầu tiên các bạn cần tải Anaconda (python3).

Bước 4 : chúng ta khởi chạy “Anaconda Prompt”.

Bước 5: thực hiện lệnh cd tới thư mục vừa giải nén ở bước 2.

Hướng dẫn dùng labelimg trong PHP
Thực hiện lệnh ‘cd’ tới thư mục vừa giải nén.

cd tới thư mục vừa giải nén

Bước 6: Thực hiện các lệnh sau:

conda install
Hướng dẫn dùng labelimg trong PHP
Cài thư viện pyqt5
conda install -c anaconda lxml
Hướng dẫn dùng labelimg trong PHP
Cài đặt xmlx
pyrcc5 -o libs/resources.py resources.qrc
python labelImg.py
Hướng dẫn dùng labelimg trong PHP
Khởi chạy tool label.
 

Sau khi hoàn thành các bước, tool được hiển thị như hình:

Hướng dẫn dùng labelimg trong PHP
Giao diện tool Label images.
  • HĐH Linux:
git clone https://github.com/tzutalin/labelImg
sudo apt-get install pyqt5-dev-tools
sudo pip3 install -r requirements/requirements-linux-python3.txt
make qt5py3
python3 labelImg.py
  • HĐH MAC OS:
brew install python3
pip3 install pipenv
pipenv run pip install pyqt5==5.12.1 lxml
pipenv run make qt5py3
python3 labelImg.py
  1. Hướng dẫn sử dụng tool để gán nhãn.

Sau khi cài đặt và chạy thành công, tool sẽ hiển thị:

Giao diện tool label images.

Bắt đầu gán nhãn nha

Bước 1: click chọn : OPEN DIR để chọn thư mục chứa ảnh.

Bước 2: click chọn: CHANGE SAVE DIR để chọn thư mục lưu file txt/xml.

Bước 3: click vào : Pascal/VOC  để chuyển đổi file lưu từ xml sang txt (Bước này quan trọng)

chuyển .xml sang .txt(yolo)

Bước 4: chọn View/auto save mode. Để tự lưu các file.

Bước 5: chọn View/ single class mode. Để gán nhãn cho từng loại đối tượng, cách gán nhãn từng loại đối tượng một sẽ cho năng suất gán nhãn cao hơn bởi vì có thể loại bỏ các bước lựa chọn tên nhãn và click chọn OK.

Bước 6: Gán thôi

LƯU Ý:

  • Một vài phím tắt:
Hướng dẫn dùng labelimg trong PHP
Phím tắt.
  • Xem video hướng dẫn gán nhãn tại đây.
Hướng dẫn dùng labelimg trong PHP
Gán nhãn cho vật thể.

Với mỗi hình gán nhãn xong, tool sẽ tự tạo một file có tên trùng với bức ảnh và có đuôi .txt có nội dung như sau:

Hướng dẫn dùng labelimg trong PHP
Nội dung file txt.
  • là một số tự nhiên đánh số thứ tự của nhãn(classes). Với số lớp của model là 3 đối tượng thì sẽ tương ứng là Small salad là 0, Big salad nhỏ là 1, Grass là 2.
  • là các giá trị thập phân liên quan đến vị trí của hình và nằm trong khoảng 0 đến 1 và được tính toán như sau:
    • = /
    • = /
    • = /
    • = /

Bài hướng dẫn dựa vào github của tool và kinh nghiệm sử dụng cá nhân. Cảm ơn mọi người đã xem và chúc mọi người có thể dễ dàng thực hiện được.