Data Annotation
Gán nhãn dữ liệu bổ sung ground truth như lớp, bounding box, mask và keypoint vào dữ liệu thô. Nội dung đề cập các loại gán nhãn theo tác vụ, định dạng tệp và gán nhãn tự động.
Gán nhãn dữ liệu là quá trình bổ sung thông tin ground truth vào dữ liệu thô, chẳng hạn như tên lớp cho một ảnh, hộp hoặc đa giác bao quanh từng đối tượng, keypoint trên cơ thể hoặc thẻ gắn vào một đoạn văn bản, để các model học có giám sát có thể học từ dữ liệu đó. Đây là từ đồng nghĩa với gắn nhãn dữ liệu, và các nhóm thị giác máy tính thường dùng thuật ngữ annotation cho hình học được vẽ như hộp và mask. Một annotation gồm hai phần: hình học hoặc thẻ do người hay model vẽ, và định dạng tệp lưu trữ dữ liệu đó để huấn luyện.
Các loại annotation theo tác vụ#
Đầu ra mà model cần tạo ra sẽ quyết định annotator vẽ gì. Chi tiết càng cao càng tốn thời gian, vì vậy các nhóm chọn loại annotation đơn giản nhất nhưng vẫn chứa đủ thông tin mà model cần.
- Nhãn lớp: Một lớp cho mỗi ảnh trong phân loại ảnh, thường được lưu dưới dạng tên thư mục chứa ảnh, theo cấu trúc thư mục của các bộ dữ liệu phân loại kiểu ImageNet.
- Hộp giới hạn: Một hộp và một lớp cho mỗi đối tượng trong phát hiện đối tượng. Định dạng YOLO ghi một tệp văn bản cho mỗi ảnh, với một dòng
class x_center y_center width heightcho mỗi đối tượng, được chuẩn hóa về khoảng 0–1 theo kích thước ảnh. COCO JSON lưu[x_min, y_min, width, height]theo pixel, còn Pascal VOC XML lưu tọa độ pixel của hai góc. - Hộp định hướng: Bốn điểm góc khớp với các đối tượng xoay như tàu thuyền và phương tiện trong ảnh chụp từ trên không, được dùng cho phát hiện hộp giới hạn định hướng.
- Đa giác và mask: Đường viền cho phân đoạn instance, hoặc một lớp cho từng pixel trong phân đoạn ngữ nghĩa. YOLO và COCO lưu đa giác dưới dạng danh sách đỉnh, còn COCO cũng lưu mask dưới dạng mã hóa độ dài chuỗi (RLE) cho các vùng đông người.
- Keypoint: Vị trí x, y và cờ hiển thị cho từng mốc trong ước tính tư thế. Annotation người trong COCO đánh dấu 17 keypoint, mỗi keypoint được gắn cờ là chưa gán nhãn, đã gán nhãn nhưng bị che khuất hoặc hiển thị.
Độ chính xác của annotation đặc biệt quan trọng đối với đối tượng nhỏ. Nếu dịch hộp 20 × 20 pixel sang phải 3 pixel và xuống dưới 3 pixel, độ giao nhau trên hợp (IoU) với hộp ban đầu giảm xuống 0.57, vì vậy một dự đoán khớp với đối tượng thực sẽ bị tính là bỏ sót ở 8 trong 10 ngưỡng IoU, từ 0.60 đến 0.95, được lấy trung bình trong độ chính xác trung bình trung bình (mAP) của COCO. Hướng dẫn bằng văn bản xác định từng lớp và giải quyết các trường hợp ngoại lệ, chẳng hạn như cần vẽ hộp sát đến mức nào quanh đối tượng bị che khuất một phần, giúp hàng nghìn annotation nhất quán với nhau.
Annotation ngoài hình ảnh#
- Video: Hộp hoặc mask trên từng khung hình, được liên kết bằng ID theo dõi để bám theo từng đối tượng theo thời gian trong theo dõi nhiều đối tượng.
- Lidar và 3D: Hình hộp chữ nhật trong đám mây điểm, mỗi hình có tâm, kích thước và góc hướng, dùng cho phát hiện đối tượng 3D trong lĩnh vực lái xe và robot.
- Văn bản: Các đoạn được đánh dấu bằng độ lệch ký tự và loại thực thể cho nhận dạng thực thể có tên (NER), hoặc một nhãn cho mỗi tài liệu trong các tác vụ như phân tích cảm xúc.
- Âm thanh: Các đoạn có dấu thời gian cùng bản chép lời hoặc danh tính người nói cho nhận dạng giọng nói.
- Sở thích về model: Annotator chọn phản hồi tốt hơn trong hai phản hồi của model, tạo ra dữ liệu so sánh dùng trong học tăng cường từ phản hồi của con người (RLHF).
Tự động gán nhãn#
Gán nhãn có hỗ trợ model bắt đầu từ các đề xuất của model để con người xem xét và chỉnh sửa. Detector đề xuất hộp cho các lớp mà nó đã nhận biết, còn model phân đoạn có thể nhắc lệnh như Segment Anything của Meta biến một hộp hoặc cú nhấp thành mask, thay cho việc lần theo từng đỉnh của đa giác. Hàm auto_annotate trong gói Ultralytics kết hợp hai bước này: detector YOLO26 tìm và phân loại đối tượng, còn SAM 2.1, chạy trong gói Ultralytics, chuyển từng hộp thành đa giác được lưu theo định dạng phân đoạn YOLO.
from pathlib import Path
from ultralytics.data.annotator import auto_annotate
from ultralytics.utils import ASSETS
# Detect objects in the bundled sample images, then turn each box into a SAM 2.1 polygon
auto_annotate(data=ASSETS, det_model="yolo26n.pt", sam_model="sam2.1_b.pt", output_dir="auto_labels")
# Read the annotation file written for the bus image
rows = Path("auto_labels/bus.txt").read_text().splitlines()
print(f"{len(rows)} objects annotated")
print(rows[0][:80])Mỗi dòng trong bus.txt là một chỉ số lớp COCO, theo sau là các cặp đỉnh x, y của đa giác được chuẩn hóa về khoảng 0–1, sẵn sàng để annotator xem xét và chỉnh sửa trước khi huấn luyện. Các detection thấp hơn ngưỡng confidence mặc định là 0.25 sẽ không được gán nhãn, vì vậy vẫn cần vẽ thủ công các đối tượng bị bỏ sót.
Gán nhãn dữ liệu và các thuật ngữ liên quan#
- Gắn nhãn dữ liệu: Từ đồng nghĩa, thường dùng hơn cho thẻ lớp gắn với toàn bộ mục dữ liệu, chẳng hạn đánh dấu email là thư rác.
- Tăng cường dữ liệu: Biến đổi ảnh đã gán nhãn cùng với annotation tương ứng, chẳng hạn lật ngang tọa độ hộp, để tăng độ đa dạng của ground truth hiện có.
- Học bán giám sát: Model tự gán nhãn dữ liệu chưa được gán nhãn và huấn luyện trên các dự đoán có độ tin cậy cao của chính nó, gọi là pseudo-label, mà không cần con người xem xét.
- Dữ liệu tổng hợp: Ảnh được kết xuất hoặc tạo ra, với annotation do bộ tạo cung cấp vì bộ tạo biết chính xác vị trí và đường viền của từng đối tượng.










