Semantic Segmentation
Semantic Segmentation (рус. семантическая сегментация) — метод компьютерного зрения, при котором каждой точке (пикселю) изображения присваивается метка определённого класса, что позволяет машинам интерпретировать сцену на попиксельном уровне[1].
Что важно знать
| Семантическая сегментация | |
|---|---|
| англ. Semantic Segmentation | |
| Область использования | Компьютерное зрение, Машинное обучение, Искусственный интеллект |
Понятие
Семантическая сегментация решает задачу детального «понимания» изображения:
- каждому пикселю присваивается метка «дорога», «здание», «человек» и т. д.
- все экземпляры одного класса получают одну и ту же метку, без разделения на «объект 1», «объект 2»[2].
Такая детализация отличает метод от:
- классификации изображений — одной метки на всё изображение
- обнаружения объектов — ограничивающих рамок без точных контуров
- сегментации экземпляров — попиксельных масок с разделением отдельных объектов
- паноптической сегментации — объединения семантической и экземплярной сегментации[3].
Определение
Семантическая сегментация — это процесс разметки изображения, при котором оно разбивается на области-маски, точно повторяющие форму объектов; каждой области присваивается семантическая метка класса[1]. Основная цель — полное понимание сцены путём классификации каждого пикселя. Ключевые особенности:
- точные границы объектов
- сохранение контекстной информации на уровне сцены
- отсутствие различения экземпляров одного и того же класса[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].
Постобработка результатов
Этапы работы
Процесс внедрения семантической сегментации включает несколько последовательных этапов, каждый из которых играет ключевую роль в достижении высокой точности и эффективности модели.
На первом этапе формулируются цели проекта, перечень классов и требования к точности, скорости и ресурсам, что определяет выбор архитектуры и датасета[11].
Качественная разметка — ключ к высокой точности. Для попиксельной аннотации используются инструменты CVAT, LabelMe, Supervisely, Labelbox[12].
Датасет делится на обучающую и валидационную части (например, 80/20). Выбираются функции потерь Cross-Entropy либо Dice Loss для несбалансированных классов[7].
Основная метрика — Intersection over Union (IoU). Для многоклассовых задач считают среднее значение mIoU. Дополнительно используют Precision, Recall и F1-score[4].
Контейнеризация с помощью Docker обеспечивает переносимость, а Kubernetes — масштабирование и отказоустойчивость при обслуживании REST-API модели[13].
Собранные в продакшене ошибки и новые изображения повторно аннотируются и добавляются к обучающему набору, формируя цикл непрерывного улучшения модели[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].
Примечания
| Правообладателем данного материала является АНО «Интернет-энциклопедия «РУВИКИ». Использование данного материала на других сайтах возможно только с согласия АНО «Интернет-энциклопедия «РУВИКИ». |


