Image Segmentation: Semantic, Instance và Panoptic
Ba cách gán nhãn pixel và lựa chọn metric phù hợp với điều cần phân biệt.
Segmentation mô tả đối tượng và vùng ở mức pixel. Semantic, instance và panoptic khác nhau ở thông tin nhãn cần lưu, không đơn giản là ba mức chất lượng của cùng một đầu ra.
Mục tiêu học tập
- Phân biệt class label và instance ID.
- Chọn đúng dạng annotation cho một ứng dụng.
- Tính IoU mask và hiểu giới hạn của điểm trung bình.
Cùng một cảnh, ba câu hỏi
Trong ảnh có hai người đứng trên đường: semantic tô mọi pixel người cùng một màu; instance tách người thứ nhất và thứ hai; panoptic vừa giữ hai ID người vừa gán nhãn cho đường và nền phù hợp taxonomy.
“Thing” thường là vật thể đếm được như người; “stuff” là vùng như trời hay mặt đường. Ranh giới taxonomy do dataset quy định, không phải thuộc tính tuyệt đối của mọi hình ảnh.
Semantic cho mỗi pixel một class. Instance trả về mask và identity cục bộ cho từng object. Panoptic gán class và segment identity cho toàn cảnh; các stuff region không dùng identity theo cách tách từng object như thing.
Mask R-CNN thêm nhánh mask vào pipeline detection. Panoptic segmentation thống nhất mô tả thing và stuff, nhưng có nhiều kiến trúc khác nhau để tạo kết quả; không nhất thiết phải chạy ba mô hình nối tiếp.
Annotation convention quyết định cách xử lý void, vùng không rõ và overlap. Một mask instance có thể bị che khuất, nên phải phân biệt mask phần nhìn thấy với amodal mask suy ra phần bị khuất.
Không chuyển class mask thành instance ID chỉ bằng connected components mà không nêu giả định: một object có thể bị ngắt vùng nhìn thấy, và hai object cùng lớp có thể chạm nhau.
Mask, loss và metric
Hãy coi mask là bảng có ô đúng/sai. So hai bảng cho biết mô hình tô thừa hoặc tô thiếu chỗ nào. Một mask lớn đoán toàn nền có thể “đúng nhiều ô” nhưng bỏ mất vật thể nhỏ cần tìm.
Với tập pixel foreground P và G, . Semantic segmentation thường học bằng loss trên pixel, có thể kết hợp các loss vùng. Mean IoU cần quy định tập lớp và cách xử lý lớp vắng.
Instance evaluation cần ghép mask với object thật; chỉ so tổng foreground không phát hiện lỗi gộp hai người thành một. Panoptic Quality đồng thời phản ánh chất lượng vùng ghép và các segment thừa/thiếu theo protocol.
Class imbalance và label noise ở biên ảnh hưởng gradient. Nếu dùng ignore index cho pixel không có nhãn, kiểm tra denominator của loss lẫn metric. Không đưa vùng void vào background để làm điểm đẹp hơn.
Dice và IoU cho mask trống cần quy ước rõ. Một phép chia cho 0 không có diễn giải thống nhất; evaluator phải quyết định bỏ mẫu, cho điểm theo quy ước hay báo riêng.
Ví dụ chọn annotation
Muốn đo phần diện tích đường bị ngập có thể bắt đầu bằng semantic mask. Muốn đếm từng chiếc lá chồng lên nhau cần identity từng lá, nên annotation instance có thể phù hợp hơn.
Mã minh họa bốn pixel foreground trong một mask nhỏ. Nó tính IoU nhị phân, không thực hiện instance matching, average precision hay Panoptic Quality. Tách evaluator theo tác vụ để tránh báo sai tên metric.
Đánh giá trên độ phân giải và phép nội suy cố định. Resize label bằng nội suy tạo giá trị class trung gian có thể sai; cần kiểm tra convention và ánh xạ nhãn. Phân tích boundary quality riêng nếu biên là mục tiêu nghiệp vụ.
Workflow & kiến trúc
Ứng dụng & giới hạn
- Phân tích diện tích các vùng trong ảnh.
- Tách từng vật thể cho đo hình dạng hoặc đếm.
Điểm mạnh
Cung cấp biên và diện tích chi tiết hơn bounding box.
Giới hạn cần nhớ
Gán nhãn tốn công; biên mờ, vật thể chồng lấp và taxonomy không nhất quán gây sai số.
Thử trong một project nhỏ
Vẽ một ảnh 5×5 có hai object chạm nhau. Viết ba đầu ra semantic, instance, panoptic; giải thích thông tin nào không thể khôi phục từ semantic mask.
prediction = {0, 1, 4, 5}
ground_truth = {0, 1, 5, 6}
intersection = len(prediction & ground_truth)
union = len(prediction | ground_truth)
iou = intersection / union
assert abs(iou - 3/5) < 1e-12
print({"intersection": intersection, "union": union, "iou": iou})Pixel index giả định của một mask nhị phân; không phải kết quả thí nghiệm hoặc metric instance/panoptic.
