Semantic Segmentation

Semantic Segmentation (рус. семантическая сегментация) — метод компьютерного зрения, при котором каждой точке (пикселю) изображения присваивается метка определённого класса, что позволяет машинам интерпретировать сцену на попиксельном уровне[1].

Что важно знать
Семантическая сегментация
англ. Semantic Segmentation
Область использования Компьютерное зрение, Машинное обучение, Искусственный интеллект

Понятие

Семантическая сегментация решает задачу детального «понимания» изображения:

  • каждому пикселю присваивается метка «дорога», «здание», «человек» и т. д.
  • все экземпляры одного класса получают одну и ту же метку, без разделения на «объект 1», «объект 2»[2].

Такая детализация отличает метод от:

  1. классификации изображений — одной метки на всё изображение
  2. обнаружения объектов — ограничивающих рамок без точных контуров
  3. сегментации экземпляров — попиксельных масок с разделением отдельных объектов
  4. паноптической сегментации — объединения семантической и экземплярной сегментации[3].

Определение

Семантическая сегментация — это процесс разметки изображения, при котором оно разбивается на области-маски, точно повторяющие форму объектов; каждой области присваивается семантическая метка класса[1]. Основная цель — полное понимание сцены путём классификации каждого пикселя. Ключевые особенности:

  1. точные границы объектов
  2. сохранение контекстной информации на уровне сцены
  3. отсутствие различения экземпляров одного и того же класса[4].

Структурные элементы процесса Semantic Segmentation

  • Входные данные — изображение либо видеокадр.
  • Нейросетевой энкодер — извлекает высокоуровневые признаки и понижает разрешение[5].
  • Декодер — восстанавливает пространственное разрешение и формирует карту сегментации.
  • Skip-соединения — передают детальные признаки от энкодера к декодеру, улучшая границы[6].
  • Выходная карта — маска, в которой цвет каждого пикселя соответствует классу объекта.

Архитектура свёрточных нейронных сетей

Ниже приведены наиболее популярные архитектуры[7]:

  • FCN — первая полностью свёрточная сеть; заменяет полносвязные слои деконволюциями.
  • U-Net — симметричный кодер-декодер с обильными skip-соединениями; эффективна на малых наборах данных.
  • SegNet — использует индексы пулинга для экономичной апсемплификации.
  • DeepLab (v1‒v3+) — атриус-свёртки и модуль ASPP для учёта многомасштабного контекста.
  • PSPNet — pyramid pooling для глобального контекста.

Методы улучшения точности сегментации

  • внедрение механизмов внимания (channel / spatial attention)
  • гибридные CNN-ViT-архитектуры
  • дилатационные свёртки для расширения рецептивного поля
  • многомодальное слияние (RGB + Depth / LiDAR)
  • специальные функции потерь — Dice Loss, Focal Loss
  • оптимизация моделей (pruning, quantization) для работы в реальном времени[8].

Постобработка результатов

  • CRF (Conditional Random Fields) для уточнения границ[9].
  • Морфологические операции — эрозия, дилатация, открытие/закрытие.
  • Сглаживание границ — гауссово размытие, медианный фильтр.
  • Удаление мелких сегментов — фильтрация по площади объектов[10].

Этапы работы

Процесс внедрения семантической сегментации включает несколько последовательных этапов, каждый из которых играет ключевую роль в достижении высокой точности и эффективности модели.

1. Постановка задачи

На первом этапе формулируются цели проекта, перечень классов и требования к точности, скорости и ресурсам, что определяет выбор архитектуры и датасета[11].

2. Сбор и аннотация данных

Качественная разметка — ключ к высокой точности. Для попиксельной аннотации используются инструменты CVAT, LabelMe, Supervisely, Labelbox[12].

3. Обучение модели

Датасет делится на обучающую и валидационную части (например, 80/20). Выбираются функции потерь Cross-Entropy либо Dice Loss для несбалансированных классов[7].

4. Анализ и оценка качества

Основная метрика — Intersection over Union (IoU). Для многоклассовых задач считают среднее значение mIoU. Дополнительно используют Precision, Recall и F1-score[4].

5. Развёртывание модели

Контейнеризация с помощью Docker обеспечивает переносимость, а Kubernetes — масштабирование и отказоустойчивость при обслуживании REST-API модели[13].

6. Обратная связь

Собранные в продакшене ошибки и новые изображения повторно аннотируются и добавляются к обучающему набору, формируя цикл непрерывного улучшения модели[5].

Преимущества и недостатки

Преимущества

  • Попиксельная точность и чёткие границы объектов.
  • Улучшенное понимание сцены и контекста.
  • Эффективность в сложных условиях (перекрытия, малые объекты).
  • Критически важна для автономного вождения, медицины и др[14].

Недостатки

  • Высокая стоимость и трудоёмкость попиксельной разметки.
  • Дисбаланс классов ухудшает качество редких категорий.
  • Отсутствие различения экземпляров одного класса.
  • Значительные вычислительные ресурсы при обучении и инференсе[15].

Сферы применения

  • Автономное вождение — распознавание дорог, пешеходов, знаков
  • Медицина — выделение органов и опухолей на МРТ/КТ
  • Сельское хозяйство — анализ состояния посевов с дронов
  • Геоинформационные системы — классификация спутниковых снимков
  • Контроль качества на производстве — поиск дефектов
  • Видеоаналитика и безопасность — отслеживание объектов в потоках CCTV[1].

Инструменты для использования в Semantic Segmentation

Фреймворки и библиотеки

  • TensorFlow/Keras — удобный high-level API, модели U-Net, FCN.
  • PyTorch — гибкость, библиотека segmentationmodels.pytorch (U-Net, DeepLab v3+, PSPNet).
  • MMSegmentation — модульный toolkit на PyTorch с множеством ready-to-use моделей.
  • Detectron2 — поддержка Mask R-CNN и паноптической сегментации.
  • OpenCV — традиционные алгоритмы и inference готовых DL-моделей[16].

Наборы данных

  • PASCAL VOC 2012 — ≈ 3 000 изображений, 20 классов + фон.
  • Cityscapes — 5 000 точно размеченных городских сцен, 19/30 классов.
  • ADE20K — 20 210 train / 2 000 val / 3 000 test, 150 основных классов[17].
  • COCO-Stuff 164K — 164 000 изображений, 172 класса (80 thing + 91 stuff)[18].
  • Mapillary Vistas — 25 000 HD-снимков, 124 класса уличных объектов.
  • Pascal Context — 10 103 изображения, 59 часто используемых классов.
  • CamVid — 701 кадр; оригинально 32 класса, часто используют сгруппированные 11[19].

Интеграция с другими инструментами

  • SIEM/SOAR — корреляция событий безопасности с картами сегментации (например, в видеоаналитике).
  • Docker + Kubernetes — упаковка и масштабируемое развёртывание моделей как микросервисов[13].
  • Edge-платформы (Jetson, Raspberry Pi) — inference в реальном времени после квантования моделей.

Примечания

© Правообладателем данного материала является АНО «Интернет-энциклопедия «РУВИКИ».
Использование данного материала на других сайтах возможно только с согласия АНО «Интернет-энциклопедия «РУВИКИ».