Image segmentation на собеседовании Data Scientist

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем разбирать на собесе

Сегментация — типовая задача CV. На собесе DS / CV: «отличие semantic / instance», «архитектура U-Net», «когда SAM».

Виды сегментации

Semantic segmentation. Каждый пиксель → класс (без различения экземпляров).

Image: 2 кота, дерево
Output: pixels {cat, cat, ..., tree, ..., bg}

Instance segmentation. Каждый пиксель → instance конкретного объекта.

Image: 2 кота
Output: pixels {cat_1, cat_2}

Panoptic. Combined — semantic для «stuff» (фон, дорога) + instance для «things» (кот, машина).

U-Net

Архитектура (Ronneberger 2015). Encoder-decoder с skip connections.

Input → encoder (downsampling) → bottleneck → decoder (upsampling) → output mask
                                            ↗ skip connections from encoder

Свойства:

  • Сохраняет high-resolution details через skip.
  • Тренируется на маленьких датасетах (медицинские).
  • Выход — pixel-wise mask того же размера, что input.
  • Изначально для biomedical (cells), но расширилось.

Применение: medical, satellite, defect detection, document segmentation.

Mask R-CNN

Mask R-CNN (He 2017). Instance segmentation поверх Faster R-CNN.

Архитектура:

  1. RPN proposes regions.
  2. RoIAlign extracts features.
  3. Параллельно: classification head + bbox regression head + mask head.
  4. Mask head — small FCN (conv + transposed conv), выход — binary mask размера 28×28 для каждого class.

Свойства:

  • Точная instance segmentation.
  • Тяжёлая (RPN + 3 heads).
  • Стандарт до 2020.
  • Позже — DETR-based, Mask2Former.
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Segment Anything (SAM)

SAM (Meta 2023). Foundation model для сегментации.

Возможности:

  • Сегментация по prompts: точка, bbox, текст, mask.
  • Zero-shot — на новых доменах без fine-tune.
  • Огромная датасет SA-1B (1B masks).
SAM(image, point=(x, y)) → mask of object at point
SAM(image, bbox=(x1,y1,x2,y2)) → mask of object in bbox

В production:

  • Annotation tool (semi-auto labeling).
  • Interactive segmentation в апплях.
  • Backbone для специализированных моделей.

Метрики: IoU, Dice

IoU (Intersection over Union).

IoU = |A ∩ B| / |A ∪ B|

mIoU — average по классам.

Dice coefficient. F1 для пикселей.

Dice = 2|A ∩ B| / (|A| + |B|)

Связь: Dice = 2·IoU / (1 + IoU). Dice чуть «мягче».

Boundary IoU. IoU только в окрестности границы — meaningful для high-res масок.

Pixel accuracy. Простой baseline, но смещён при дисбалансе classes.

Частые ошибки

Использовать pixel accuracy на дисбалансе. 95% pixels — фон. Accuracy 95% — модель просто предсказывает «всё фон». Используй mIoU.

Не нормализовать выход. Mask head — sigmoid (binary) или softmax (multi-class). Без нормализации — neправильное обучение.

U-Net на multi-class без правильной loss. Cross-entropy с per-pixel weights, иначе minor классы теряются.

Mask R-CNN с маленьким размером. RPN с дефолтными anchors не подойдёт для tiny objects. Tune anchors.

SAM без prompts. SAM требует prompt — без него выдаёт случайные сегменты.

Связанные темы

FAQ

Что лучше — Dice или Cross-Entropy?

CE для общего обучения, Dice loss для дисбалансированных пикселей. Часто комбинируют.

Можно ли SAM в production?

Большая модель (~600M-2B params). На edge — quantized SAM. Замены: MobileSAM, TinySAM.

Это официальная информация?

Нет. Статья основана на работах (Ronneberger U-Net 2015, He Mask R-CNN 2017, Kirillov SAM 2023).


Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.