Image segmentation на собеседовании Data Scientist
Карьерник — 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.
Архитектура:
- RPN proposes regions.
- RoIAlign extracts features.
- Параллельно: classification head + bbox regression head + mask head.
- Mask head — small FCN (conv + transposed conv), выход — binary mask размера 28×28 для каждого class.
Свойства:
- Точная instance segmentation.
- Тяжёлая (RPN + 3 heads).
- Стандарт до 2020.
- Позже — DETR-based, Mask2Former.
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 — без него выдаёт случайные сегменты.
Связанные темы
- CNN-архитектуры на собесе DS
- YOLO и DETR на собесе DS
- Loss функции на собесе DS
- CLIP multimodal на собесе DS
- Подготовка к собесу Data Scientist
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+ вопросами для собесов.