Instance и Panoptic сегментация
Mask R-CNN, Panoptic FPN — отличие instance от semantic и panoptic segmentation.
Instance и Panoptic сегментация — каждый объект по отдельности
Семантическая сегментация говорит «это всё — машины». Но сколько машин? Какая где? Instance segmentation различает отдельные экземпляры: машина #1 (красная слева), машина #2 (синяя справа) — каждая со своей маской. Это комбинация detection (найти каждый объект) и segmentation (точный контур).
Mask R-CNN — стандарт instance segmentation
Mask R-CNN (2017) — элегантное расширение Faster R-CNN. Добавляет параллельную ветку, которая для каждого detected object предсказывает бинарную маску:
- Backbone + FPN — извлечение multi-scale фич (ResNet-50/101 + FPN)
- RPN — генерация region proposals (как в Faster R-CNN)
- ROI Align — извлечение фич для каждого proposal. Важно: ROI Align вместо ROI Pooling (билинейная интерполяция → нет квантизации координат → точные маски)
- Head: 3 параллельных ветки: classification (класс), bbox regression (координаты), mask prediction (бинарная маска 28×28 для каждого класса)
Ключевой инсайт: маска предсказывается независимо для каждого класса (K бинарных масок, где K = число классов). Это развязывает classification и segmentation — модель не должна одновременно решать «какой класс» и «где граница».
import torchvision
from torchvision.models.detection import maskrcnn_resnet50_fpn_v2
# Pretrained Mask R-CNN
model = maskrcnn_resnet50_fpn_v2(weights="DEFAULT")
model.eval()
# Inference
import torch
from PIL import Image
from torchvision import transforms
img = Image.open("street.jpg")
tensor = transforms.ToTensor()(img).unsqueeze(0)
with torch.no_grad():
preds = model(tensor)[0]
# preds содержит:
# 'boxes': [N, 4] — bounding boxes
# 'labels': [N] — class IDs
# 'scores': [N] — confidence scores
# 'masks': [N, 1, H, W] — binary masks (soft, нужно threshold > 0.5)Semantic vs Instance vs Panoptic
- Semantic segmentation — класс для каждого пикселя. Все машины = один класс «car». Stuff classes (небо, дорога) + Things classes (машины, люди), но без различения экземпляров.
- Instance segmentation — отдельная маска для каждого объекта (Things). Не работает со Stuff (небо, дорога — не имеют отдельных «экземпляров»).
- Panoptic segmentation — объединение: semantic для Stuff + instance для Things. Каждому пикселю — класс + instance ID (для Things). Полное понимание сцены.
Stuff vs Things
Panoptic Segmentation
Panoptic FPN (2019) — расширение Mask R-CNN. Добавляет semantic segmentation branch к FPN для Stuff-классов. Instance branch (Mask R-CNN head) для Things. Merge: instance маски имеют приоритет над semantic в местах пересечения.
Panoptic Quality (PQ) — метрика: PQ = SQ × RQ • SQ (Segmentation Quality) — средний IoU matched пар (predicted + GT) • RQ (Recognition Quality) — F1 score матчинга (TP / (TP + 0.5×FP + 0.5×FN)) PQ объединяет качество и сегментации, и детекции в одну метрику.
Современные подходы
- Mask2Former (2022) — unified architecture для semantic, instance и panoptic segmentation. Один фреймворк, три задачи. Transformer-based: masked attention + learnable queries. State-of-the-art на всех трёх задачах.
- SAM (Segment Anything, 2023) — promptable segmentation. Работает в zero-shot: любой объект по клику/боксу/тексту. Не различает классы, но даёт идеальные маски.
- OneFormer (2023) — multi-task universal segmentation. Один вход, одна модель, task-conditioned (semantic/instance/panoptic через текстовый промпт).
Практическое применение
- Autonomous driving — panoptic segmentation: дорога (stuff) + машины/пешеходы (instances). Каждый объект отслеживается отдельно.
- Medical imaging — instance segmentation клеток, органов, патологий. U-Net + instance head.
- AR/VR — real-time instance segmentation для background removal, virtual try-on.
- Robotics — grasp detection: маска конкретного объекта для захвата манипулятором.
🎯 На собеседовании
Ключевые вопросы