labelme: Công cụ gán nhãn dữ liệu ảnh chuyên sâu

Tổng quan

Trong quy trình phát triển mô hình học sâu, bước đầu tiên và quan trọng nhất là tạo bộ dữ liệu huấn luyện. Điều này thường yêu cầu gán nhãn thủ công cho hình ảnh. Bài viết này sẽ giới thiệu phần mềm labelme - một công cụ mạnh mẽ hỗ trợ gán nhãn dữ liệu ảnh, cùng với hướng dẫn cài đặt và sử dụng chi tiết.

1. Giới thiệu về labelme

labelme là phần mềm chú thích ảnh được phát triển bởi Phòng thí nghiệm Khoa học Máy tính và Trí tuệ Nhân tạo (CSAIL) thuộc Học viện Công nghệ Massachusetts (MIT). Được viết bằng PythonPyQT, công cụ này hỗ trợ đa dạng các tác vụ gán nhãn:

  • Gán nhãn bằng đa giác, hình chữ nhật, hình tròn, đường gấp khúc, đoạn thẳng và điểm (dùng cho phát hiện đối tượng, phân đoạn ảnh,...)
  • Gán nhãn dạng cờ (flag) cho phân loại ảnh và làm sạch dữ liệu
  • Chú thích video
  • Xuất dữ liệu theo chuẩn VOC và COCO

2. Hướng dẫn cài đặt

2.1. Cài đặt qua Conda

# Tạo môi trường mới
conda create -n labelme python=3

# Kích hoạt môi trường
conda activate labelme

# Cài đặt labelme
conda install labelme -c conda-forge

2.2. Cài đặt qua Docker

# Trên macOS
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\" &
docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=docker.for.mac.host.internal:0 -v $(pwd):/root/workdir wkentaro/labelme

# Trên Linux
xhost +
docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=:0 -v $(pwd):/root/workdir wkentaro/labelme

2.3. Cài đặt trên Ubuntu

sudo apt-get install labelme

# Hoặc
sudo pip3 install labelme

# Hoặc tải bản thực thi độc lập từ:
# https://github.com/wkentaro/labelme/releases

3. Sử dụng labelme

3.1. Khởi chạy từ dòng lệnh

# Đảm bảo đã kích hoạt môi trường ảo
labelme

3.2. Giao diện chính

Sau khi chạy lệnh trên, cửa sổ chương trình sẽ xuất hiện. Giao diện được chia thành 6 khu vực chính: thanh menu (trên cùng), thanh công cụ (trái), vùng trung tâm hiển thị ảnh và thao tác gán nhãn, danh sách nhãn (phải trên), danh sách file (phải dưới) và thanh trạng thái (dưới cùng). Người dùng có thể thực thi lệnh thông qua thanh menu, công cụ hoặc chuột phải tại vùng trung tâm. Danh sách nhãn và file hỗ trợ tương tác để chuyển đổi, xóa, chỉnh sửa hoặc ẩn nhãn.

3.3. Chức năng chi tiết

Thanh menu:

  • Open: Mở file ảnh. Hỗ trợ định dạng jpg, png, gif, bmp, jpeg. Danh sách file bên phải hiển thị tất cả file cùng thư mục.
  • Next/Prev Image: Chuyển ảnh tiếp theo/trước đó. Trong chế độ 3D, chuyển ảnh tại góc nhìn đang focus.
  • Open Dir: Mở thư mục, hiển thị ảnh đầu tiên và danh sách file trong thư mục.
  • Import: Nhập file chú thích có sẵn.
  • Save: Lưu thay đổi vào file JSON mặc định.
  • Close/Quit: Đóng file hiện tại / thoát chương trình.
  • Create Brush:
    • 2D: Tạo hình cọ để phân đoạn. Vẽ vùng muốn gán nhãn, nhấn Enter để nhập nhãn.
    • 3D: Vẽ trực tiếp trên ảnh ở bất kỳ góc nhìn nào.
  • Edit Brush: Thay đổi kích thước cọ (mặc định là hình tròn, tỷ lệ theo chiều rộng ảnh).
  • Create Rectangle:
    • 2D: Vẽ hình chữ nhật bằng cách click và kéo.
    • 3D: Tạo hình hộp chữ nhật. Vẽ trên một góc nhìn, sau đó vẽ trên các góc nhìn khác để hoàn thiện hình khối.
  • Create Circle: Vẽ hình tròn, thao tác tương tự hình chữ nhật.
  • Create Polygons: Vẽ đa giác. Click tại các đỉnh, nhấn Enter để hoàn tất.
  • Create Curve: Vẽ đường cong mượt. Click và di chuột tự do, nhấn Enter để kết thúc.
  • Edit Color: Đổi màu nhãn thông qua bảng màu.
  • Edit Polygons: Kích hoạt chế độ chỉnh sửa, cho phép kéo, chọn, undo/redo, phóng to/thu nhỏ.
  • Delete Polygons: Xóa nhãn đã chọn (chỉ khả dụng trong chế độ chỉnh sửa).
  • Edit Label: Sửa nhãn văn bản (chỉ khả dụng trong chế độ chỉnh sửa).
  • Undo/Redo: Hoàn tác/làm lại thao tác (hỗ trợ nhiều bước).
  • Undo last point: Xóa điểm cuối của nhãn đang tạo.
  • Polygon Labels / File List: Bật/tắt hiển thị danh sách nhãn hoặc file.
  • 3D: Chuyển đổi chế độ 2D/3D.
  • Hide/Show Polygons: Ẩn/hiện tất cả nhãn.
  • Magnifier: Bật/tắt kính lúp (hiển thị vùng 20x20 pixel phóng to 100x100 ở góc dưới phải).
  • Zoom In/Out: Phóng to 1.2x / thu nhỏ 0.8x.
  • Original Size: Trở về kích thước gốc.
  • Fit Window: Điều chỉnh ảnh vừa với chiều rộng cửa sổ.

Thanh trạng thái:

Hiển thị tọa độ chuột hiện tại (2D hoặc 3D) và thông báo khi thực thi lệnh.

Vùng trung tâm:

Mặc định, nhãn chỉ hiển thị viền. Khi di chuột vào, nhãn chuyển trạng thái hovered (tô màu bên trong). Khi click, chuyển sang selected. Chế độ 3D hiển thị 3 góc nhìn (trên-xuống, trước-sau, phải-trái), click để focus và chuyển ảnh.

Danh sách nhãn:

Click để chọn nhãn (đồng bộ với vùng trung tâm). Checkbox để ẩn/hiện nhãn. Chuột phải để thực thi lệnh bổ sung.

Danh sách file:

Click để chuyển file (chỉ hoạt động ở chế độ 2D). Ở chế độ 3D, việc chuyển file được điều khiển bởi vùng trung tâm.

Thông tin bổ sung:

  • Tên file chú thích mặc định: Cùng tên với ảnh + đuôi .json. Ở chế độ 3D, tên file là tên ảnh đầu tiên + "_3D.json".
  • Cấu trúc file JSON: Gồm trường type (Brush, Rectangle, Polygons, Circle, Curve, Brush3D, Rectangle3D), color, label, points (tọa độ tỷ lệ, 3D có thêm z), radius, width, height, zspan.
  • Màu nhãn do người dùng tùy chỉnh, hiển thị khi nhãn được chọn.

Thẻ: labelme image-annotation data-labeling PyQT deep-learning

Đăng vào ngày 17 tháng 6 lúc 19:29