Instance Segmentation
Phân đoạn instance vẽ đường bao riêng cho từng vật thể trong ảnh bằng mask pixel riêng, nhờ đó các vật thể cùng lớp chạm nhau vẫn được tách biệt. Model, metric và code.
Phân đoạn instance là tác vụ thị giác máy tính xác định từng đối tượng trong ảnh, gán lớp và phác họa đối tượng bằng mask riêng ở cấp pixel. Tác vụ này kết hợp khả năng suy luận theo từng đối tượng của phát hiện đối tượng với độ chính xác đến từng pixel của phân đoạn ảnh: detector vẽ một bounding box hình chữ nhật có thể chứa cả nền, còn model phân đoạn instance đánh dấu chính xác pixel nào thuộc về đối tượng nào. Hai người đứng sát vai nhau sẽ tạo thành hai mask riêng với hai nhãn, nhờ đó có thể đếm, đo và tách từng đối tượng riêng lẻ.
Phân đoạn instance, ngữ nghĩa và toàn cảnh#
Phân đoạn instance là một trong ba tác vụ phân đoạn, khác nhau ở ý nghĩa của nhãn:
- Phân đoạn ngữ nghĩa: Gán lớp cho mọi pixel và gộp tất cả đối tượng cùng lớp thành một vùng, vì vậy ba chiếc ô tô đang đỗ trở thành một vùng "ô tô". Phương pháp này cũng gán nhãn cho các vùng nền như đường và bầu trời.
- Phân đoạn instance: Gán cho mỗi đối tượng có thể đếm được, hay "thing", một mask và ID riêng; vì vậy ba chiếc ô tô trở thành ô tô 1, ô tô 2 và ô tô 3. Pixel không thuộc về đối tượng được phát hiện nào sẽ không được gán nhãn.
- Phân đoạn toàn cảnh: Gán lớp cho mọi pixel, đồng thời gán ID instance cho các đối tượng có thể đếm được, kết hợp hai cách biểu diễn trong một đầu ra duy nhất.
Các model có thể nhận prompt như Segment Anything Model (SAM) của Meta thực hiện phân đoạn tương tác: model trả về mask cho đối tượng được chỉ định bằng cú nhấp, box hoặc prompt văn bản mà không cần danh sách lớp cố định.
Cách model phân đoạn instance hoạt động#
Model hai giai đoạn phát hiện trước rồi mới phân đoạn. Mask R-CNN, thiết kế tham chiếu phổ biến từ năm 2017, đề xuất các vùng ứng viên, phân loại và tinh chỉnh từng box, rồi dự đoán mask nhỏ 28×28 bên trong mỗi box bằng một nhánh mask riêng.
Model một giai đoạn dự đoán box và mask trong một lượt duy nhất, phù hợp với suy luận thời gian thực. YOLACT giới thiệu thiết kế prototype mà các model phân đoạn YOLO cũng sử dụng: mạng dự đoán một tập mask prototype dùng chung cho toàn ảnh, cùng một vector ngắn chứa hệ số mask cho mỗi đối tượng được phát hiện. Mask của mỗi đối tượng là tổng có trọng số theo hệ số của các prototype, được cắt theo box rồi phân ngưỡng thành mask nhị phân.
Các model dựa trên Transformer như Mask2Former sử dụng cách tiếp cận thứ ba: dự đoán một tập truy vấn mask cố định và dùng cùng một kiến trúc cho phân đoạn ngữ nghĩa, instance và toàn cảnh.
Mask, polygon và metric#
Nhãn huấn luyện thường là các polygon được vẽ quanh từng đối tượng, lưu ở những định dạng như JSON COCO hoặc tệp văn bản YOLO, trong đó mỗi đối tượng có một class ID và danh sách đỉnh đã chuẩn hóa. Khi suy luận, model xuất mỗi instance dưới dạng mask nhị phân; mask có thể được chuyển lại thành đường viền polygon để lưu trữ hoặc vẽ. Độ chính xác được báo cáo bằng độ chính xác trung bình mean của mask (mAP), tính tương tự mAP của box, ngoại trừ việc Intersection over Union (IoU) được đo giữa mask dự đoán và mask ground truth. Vẽ polygon quanh mọi đối tượng mất nhiều thời gian hơn vẽ box, vì vậy các model có thể nhận prompt như SAM được sử dụng rộng rãi để tạo mask nháp chỉ bằng một cú nhấp, sau đó người gán nhãn chỉnh sửa lại.
Các model phân đoạn Ultralytics YOLO26, có hậu tố -seg, sử dụng thiết kế prototype với 32 prototype và 32 hệ số cho mỗi detection; kết quả trả về từng instance cùng lớp, box, mask và đường viền polygon:
from ultralytics import YOLO
# Load a YOLO26 instance segmentation model pretrained on the 80 COCO classes
model = YOLO("yolo26n-seg.pt")
# Segment every object instance in the image
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Each instance has its own class and mask outline, even when classes repeat
for class_id, polygon in zip(result.boxes.cls.int().tolist(), result.masks.xy):
print(f"{result.names[class_id]}: outline with {len(polygon)} points")
result.save(filename="instance_segmentation.jpg")Mỗi người được phát hiện được in thành một dòng riêng với đường viền riêng, còn ảnh đã lưu tô màu riêng cho mask của từng instance. Để gán nhãn dữ liệu của bạn và huấn luyện model, xem cách huấn luyện YOLO26 tùy chỉnh cho phân đoạn instance hoặc bài học Label and Train Instance Segmentation của Ultralytics Academy.
Ứng dụng thực tế#
Mask instance hữu ích trong mọi trường hợp mà hình dạng hoặc số lượng chính xác của từng đối tượng ảnh hưởng đến quyết định:
- Robot gắp linh kiện: Cánh tay robot gắp linh kiện từ thùng chứa lộn xộn cần đường viền chính xác của từng linh kiện để chọn điểm gắp không vướng các linh kiện bên cạnh.
- Sinh học tế bào: Pipeline hiển vi phân đoạn từng tế bào và nhân tế bào, kể cả những tế bào tiếp xúc nhau, để đếm và đo kích thước, hình dạng.
- Nông nghiệp: Robot thu hoạch và hệ thống ước tính năng suất tách từng quả trong tán cây dày để đếm và ước tính kích thước dựa trên diện tích mask.
- Theo dõi đối tượng trong video: Kết hợp mask instance với bộ theo dõi để bám theo chính xác đường bao của từng đối tượng qua các khung hình.
- Xe tự hành: Các bộ dữ liệu lái xe như Cityscapes cung cấp nhãn cấp instance cho tám lớp người và phương tiện, giúp model nhận thức tách từng người đi bộ trong đám đông.










