Semantic Segmentation
Семантическая сегментация присваивает класс каждому пикселю и возвращает единую плотную карту классов. Как работают модели, чем этот метод отличается от сегментации экземпляров, примеры кода.
Семантическая сегментация — задача компьютерного зрения, которая присваивает метку класса каждому пикселю изображения. На выходе получается плотная карта классов той же высоты и ширины, что и входное изображение; каждое значение — это ID класса, например «дорога», «тротуар», «здание», «небо» или «человек». Классификация изображений присваивает одну метку изображению, а детекция объектов рисует рамку вокруг каждого объекта. Семантическая сегментация описывает всю сцену по областям, включая бесформенные участки фона, например траву и небо, у которых нет отдельных экземпляров для подсчёта.
Принцип работы семантической сегментации#
Модель семантической сегментации — это классификатор, работающий на уровне пикселей. Свёрточная нейронная сеть (CNN) или визуальный трансформер выдаёт отдельную карту оценок для каждого класса, обычно в уменьшенном разрешении. Затем карты масштабируются до размера изображения, а каждому пикселю присваивается класс с наибольшей оценкой. При обучении предсказание каждого пикселя сравнивается с размеченной маской с помощью перекрёстной энтропии. Пиксели со значением игнорирования, часто равным 255, не учитываются при вычислении функции потерь.
Главная сложность заключается в том, что для распознавания содержимого области требуется большое рецептивное поле и значительное уменьшение разрешения, а для точного определения границ — высокая пространственная детализация. В 2014 году полносвёрточные сети (FCN) впервые превратили классификационные сети в модели плотного предсказания. Архитектуры кодировщика и декодера, такие как U-Net, затем стали восстанавливать границы, передавая высокодетализированные признаки кодировщика декодеру через пропускающие соединения, а DeepLab использовала дилатированные (атрусные) свёртки, чтобы расширить контекст без уменьшения карты признаков. Модели реального времени объединяют контекст низкого разрешения с мелкими деталями таким образом:
Модели Ultralytics YOLO26 для семантической сегментации, обозначенные суффиксом -sem, используют такой подход: они классифицируют пиксели по признакам шеи, уменьшенным в 8 раз и уже содержащим объединённый контекст, а затем увеличивают логиты в 8 раз до исходного размера. Модели предварительно обучены на 19 классах Cityscapes или 150 классах ADE20K и обучаются на изображениях масок или полигонах YOLO, которые на лету преобразуются в маски.
from ultralytics import YOLO
# Load a YOLO26 semantic segmentation model trained on the 19 Cityscapes classes
model = YOLO("yolo26n-sem.pt")
# Predict one class ID for every pixel of a street image
results = model("https://ultralytics.com/images/bus.jpg")
class_map = results[0].semantic_mask.data
# Measure how much of the image each class covers
ids, counts = class_map.unique(return_counts=True)
for class_id, count in zip(ids.tolist(), counts.tolist()):
print(f"{results[0].names[class_id]}: {count / class_map.numel():.1%}")В выводе перечислены все присутствующие классы и доля изображения, которую занимает каждый из них. Все люди на фотографии учитываются как одна доля класса «человек», потому что карта классов хранит класс каждого пикселя, но не указывает, к какому объекту он относится.
Семантическая, экземплярная и паноптическая сегментация#
Семантическая сегментация — одна из трёх задач сегментации изображений:
- Экземплярная сегментация: присваивает каждому объекту, который можно посчитать, собственную маску и ID. Например, три автомобиля становятся автомобилем 1, автомобилем 2 и автомобилем 3, а пиксели фона остаются без меток.
- Паноптическая сегментация: присваивает каждому пикселю класс, как и семантическая сегментация, а пикселям объектов, которые можно посчитать, дополнительно присваивает ID экземпляра.
Семантическая сегментация подходит для сцен, где важнее области, а не количество объектов, например для определения проезжей части или типа земного покрова.
Если тебе нужна помощь с выбором между семантической сегментацией и сегментацией экземпляров, смотри руководство по сравнению семантической сегментации и сегментации экземпляров. В уроке Ultralytics Academy «Семантическая сегментация: разметка каждого пикселя» разобраны разметка данных и обучение модели для этой задачи.
Примеры применения в реальных условиях#
- Автономные автомобили: системы управления сегментируют кадры с камер на дорогу, тротуар, дорожную разметку, транспортные средства и пешеходов, чтобы определять проезжую часть и препятствия.
- Медицинская визуализация: модели выделяют контуры органов, опухолей и поражений на снимках КТ и МРТ, чтобы врачи могли измерять объёмы и планировать лечение; U-Net изначально разработали для биомедицинских изображений.
- Анализ спутниковых снимков: на картах земного покрова каждому пикселю присваивается класс «вода», «лес», «пахотные земли» или «застроенная территория», чтобы отслеживать вырубку лесов и рост городов.
- Сельское хозяйство: полевые роботы и дроны классифицируют пиксели как культуру, сорняк или почву, чтобы опрыскиватели обрабатывали только сорняки.
Бенчмарки и метрики#
Модели оценивают по среднему значению пересечения по объединению (IoU), или mIoU: перекрытие предсказанных и истинных пикселей вычисляют для каждого класса, а затем усредняют. Поэтому редкие классы, такие как столбы и дорожные знаки, имеют такой же вес, как дорога и небо. ADE20K включает 150 классов для внутренних и наружных сцен и предназначен для общего анализа сцен, а Cityscapes, самый известный бенчмарк для вождения, содержит 5 000 уличных изображений из 50 городов с точной попиксельной разметкой; модели ранжируют по mIoU на 19 оцениваемых классах.










