Компьютерное зрение

Semantic Segmentation

Беспилотный автомобиль должен в 50мс понять: это дорога, это тротуар, вот пешеход #1 идёт вправо, вот пешеход #2 стоит. Bounding boxes слишком грубы - нужна попиксельная карта. Именно это делает семантическая и паноптическая сегментация.

  • **Автономное вождение:** Waymo, Tesla FSD - полная сцена сегментируется за < 50мс
  • **Медицина:** U-Net победил в задаче сегментации EM-снимков нейронов (ISBI 2012), сейчас стандарт для КТ/МРТ
  • **Спутниковые снимки:** сегментация зданий, дорог, растительности для картографии

FCN: первая полносвёрточная сеть

В 2015 году Джонатан Лонг, Эван Шелхамер и Тревор Даррелл из UC Berkeley показали, что классификатор изображений можно превратить в попиксельный сегментатор, заменив финальные FC-слои на свёрточные. Их Fully Convolutional Network принимала изображение любого размера и впервые обучалась end-to-end на задаче сегментации. В том же году Olaf Ronneberger, Philipp Fischer и Thomas Brox предложили U-Net для биомедицинских снимков, а группа Liang-Chieh Chen начала линейку DeepLab с atrous-свёртками. Три идеи 2015 года задали направление сегментации на десятилетие вперёд.

Предварительные знания

  • Свёрточные слои и pooling
  • Backbone-сети и feature maps
  • Метрика IoU
  • Image Classification: CNNs
  • Two-Stage Detectors: семейство R-CNN

FCN: замена FC-слоёв на свёрточные

Классификатор изображений (AlexNet, VGG) на выходе даёт один вектор на всё изображение. Для сегментации нужен вектор на каждый пиксель. Long et al. (2015) предложили простое решение: заменить финальные FC-слои на 1×1 свёртки - тогда сеть принимает изображение любого размера и выдаёт map классов.

**Transposed convolution** (deconvolution) - обучаемый upsampling: сначала вставляет нули между входными значениями (stride), затем применяет обычную свёртку. Позволяет восстановить пространственное разрешение.

**mIoU (mean Intersection over Union)** - стандартная метрика сегментации: для каждого класса IoU = |пересечение| / |объединение| предсказанной и ground-truth масок. Среднее по всем классам.

Зачем в FCN заменять FC-слои на 1×1 свёртки?

U-Net: skip connections для точных границ

FCN теряет детали: при downsampling ×32 граница опухоли в 2 пикселя исчезает. **U-Net** (Ronneberger et al., 2015) решает это через симметричную архитектуру: encoder сжимает → decoder восстанавливает, а skip connections передают точную пространственную информацию напрямую.

Skip connections в U-Net - это concatenation (не сложение, как в ResNet). Decoder на каждом уровне получает: upsampled features (семантика глубоких слоёв) + encoder features того же уровня (точные локации границ). Вместе это позволяет сегментировать структуры в 1-2 пикселя.

  • **Медицинское применение:** сегментация клеток на электронных микрофотографиях (оригинальная задача U-Net)
  • **Малое количество данных:** U-Net хорошо работает с 30-50 аннотированными примерами за счёт data augmentation (elastic deformations)
  • **Влияние:** U-Net стал стандартом в медицинской imaging и основой для Stable Diffusion (U-Net в diffusion models)

Чем skip connections в U-Net отличаются от residual connections в ResNet?

DeepLab: дилатационные свёртки и ASPP

Проблема maxpooling: уменьшает разрешение, теряет детали. DeepLab (Chen et al., 2015-2018) предлагает альтернативу: **atrous convolution** (dilated convolution) - свёртка с дырками, которая увеличивает рецептивное поле без уменьшения разрешения.

**DeepLabV3+ (2018)** добавляет decoder от U-Net: ASPP encoder + lightweight decoder с skip connections. Это объединило преимущества dilated convolutions (большой контекст без потери разрешения) и U-Net (точные границы через skip connections).

ВерсияКлючевая идеяVOC 2012 mIoU
DeepLabV1 (2015)Dilated conv + CRF post-processing71.6%
DeepLabV2 (2016)ASPP (multi-scale)79.7%
DeepLabV3 (2017)Improved ASPP + BN85.7%
DeepLabV3+ (2018)Encoder-decoder + Xception backbone89.0%

**CRF (Conditional Random Field):** post-processing в ранних DeepLab, уточняющий границы через попарные энергии соседних пикселей. В DeepLabV3+ от него отказались - decoder с skip connections даёт границы не хуже.

Какое преимущество дилатационных (atrous) свёрток перед maxpooling в задаче сегментации?

Panoptic Segmentation: things и stuff вместе

Semantic segmentation помечает каждый пиксель классом, но не различает экземпляры: все машины - просто «машина». Instance segmentation (Mask R-CNN) различает экземпляры, но игнорирует аморфные области (небо, дорога). **Panoptic segmentation** объединяет оба подхода.

**Panoptic FPN** (Kirillov et al., 2019): Mask R-CNN для instance branch + semantic head поверх FPN для stuff classes. Оба используют общий FPN backbone - единственный проход через сеть даёт и instances и stuff.

  • **Автономное вождение:** Tesla FSD использует паноптическую сегментацию - нужно различать пешехода #1 и пешехода #2, но не считать экземпляры дороги
  • **Scene understanding:** роботы-манипуляторы должны знать и что (класс), и который именно (экземпляр) объект брать
  • **Медицина:** различать экземпляры клеток (instance) + ткань/фон (semantic)

Задача panoptic segmentation отличается от semantic тем, что:

Эволюция семантической сегментации

  • **FCN (2015):** замена FC на 1×1 conv + transposed conv, базовая мультимасштабность через skip connections
  • **U-Net (2015):** симметричный encoder-decoder + concatenation skip connections для точных границ
  • **DeepLabV3+ (2018):** dilated conv + ASPP для большого контекста без потери разрешения, 89% VOC
  • **Panoptic (2019):** objects = instances + stuff = semantic, метрика PQ = SQ × RQ

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

Сегментация строится на детекции и оперирует теми же backbone сетями.

  • Two-Stage Detectors: R-CNN Family — Mask R-CNN добавляет сегментационную голову к Faster R-CNN
  • Feature Pyramid Networks — FPN - общий backbone для Panoptic FPN и DeepLabV3+

Вопросы для размышления

  • Почему skip connections помогают сегментации, но не так критичны для классификации изображений?
  • Какой тип сегментации (semantic, instance, panoptic) нужен для системы автоматической парковки и почему?
  • Как dilated convolutions с разными rate в ASPP компенсируют отсутствие нескольких масштабов входного изображения?

Связанные уроки

  • cv-07 — Backbone детекции и FPN переиспользуются для плотного предсказания
  • cv-09 — Instance-сегментация добавляет маски по объектам сверху
  • dl-04 — Encoder-decoder CNN лежат в основе U-Net и FCN
  • ml-40-segmentation — Та же задача разметки пикселей в классическом ML-курсе
  • alg-12-bfs — Разметка связных компонент масок это обход графа
  • ml-01
Semantic Segmentation

0

1

Войти