Link to this sectionСемантическая сегментация#
Семантическая сегментация присваивает метку класса каждому пикселю изображения, создавая плотную карту классов, которая покрывает всю сцену. В отличие от экземплярной сегментации, которая разделяет отдельные объекты, семантическая сегментация группирует все пиксели одного класса вместе, независимо от того, сколько отдельных объектов присутствует.
Watch: How to Train Ultralytics YOLO26 Semantic Segmentation Model on Custom Dataset | Ultralytics Platform
Результатом работы модели семантической сегментации является единая карта классов с высотой и шириной, где каждое значение пикселя соответствует предсказанному ID класса. Это делает семантическую сегментацию идеальной для задач парсинга сцен, таких как автономное вождение, медицинская визуализация и картирование земного покрова.
Используй task=semantic или задачу CLI yolo semantic для семантической сегментации. Файлы моделей семантической сегментации YOLO26 используют суффикс -sem, например yolo26n-sem.pt.
Link to this sectionМодели#
Модели семантической сегментации YOLO26, предварительно обученные на наборе данных Cityscapes, представлены ниже.
Модели скачиваются автоматически из последнего релиза Ultralytics при первом использовании.
| Модель | размер (пиксели) | mIoUval | Скорость RTX3090 PyTorch (мс) | параметры (М) | FLOPs (Б) |
|---|---|---|---|---|---|
| YOLO26n-sem | 1024 × 2048 | 78.3 | 4.4 ± 0.0 | 1.6 | 22.7 |
| YOLO26s-sem | 1024 × 2048 | 80.8 | 8.4 ± 0.0 | 6.5 | 88.8 |
| YOLO26m-sem | 1024 × 2048 | 82.0 | 19.9 ± 0.1 | 14.3 | 304.5 |
| YOLO26l-sem | 1024 × 2048 | 82.9 | 26.5 ± 0.1 | 17.9 | 384.7 |
| YOLO26x-sem | 1024 × 2048 | 83.6 | 48.9 ± 0.2 | 40.2 | 861.7 |
- mIoUval значения приведены для одной модели в одном масштабе на валидационном наборе Cityscapes.
Воспроизведи с помощьюyolo semantic val data=cityscapes.yaml device=0 imgsz=2048 - Метрики скорости усреднены по валидационным изображениям Cityscapes с использованием инстанса RTX3090.
Воспроизведи с помощьюyolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048 - Значения Params и FLOPs указаны для объединенной (fused) модели после
model.fuse(), которая объединяет слои Conv и BatchNorm. Предобученные чекпоинты сохраняют полную архитектуру обучения и могут показывать более высокие значения.
Ниже представлены модели семантической сегментации YOLO26, предварительно обученные на наборе данных ADE20K.
Модели скачиваются автоматически из последнего релиза Ultralytics при первом использовании.
| Модель | размер (пиксели) | mIoUval | Скорость RTX3090 PyTorch (мс) | параметры (М) | FLOPs (Б) |
|---|---|---|---|---|---|
| YOLO26n-sem-ade20k | 640 | 38.8 | 3.9 ± 0.2 | 1.6 | 4.4 |
| YOLO26s-sem-ade20k | 640 | 45.6 | 4.2 ± 0.3 | 6.5 | 17.4 |
| YOLO26m-sem-ade20k | 640 | 47.4 | 4.7 ± 0.3 | 14.3 | 59.5 |
| YOLO26l-sem-ade20k | 640 | 49.7 | 8.3 ± 0.2 | 17.9 | 75.0 |
| YOLO26x-sem-ade20k | 640 | 51.5 | 9.9 ± 0.3 | 40.2 | 168.1 |
- Значения mIoUval указаны для одной модели при одном масштабе на валидационном наборе данных ADE20K.
Воспроизведи результат с помощью командыyolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml device=0 imgsz=640, заменивyolo26n-sem-ade20k.ptна нужный чекпоинтyolo26*-sem-ade20k.pt. - Показатели Speed усреднены по валидационным изображениям ADE20K с использованием инстанса RTX3090.
Воспроизведи результат с помощью командыyolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml batch=1 device=0|cpu imgsz=640, заменивyolo26n-sem-ade20k.ptна нужный чекпоинтyolo26*-sem-ade20k.pt. - Значения Params и FLOPs указаны для объединенной (fused) модели после
model.fuse(), которая объединяет слои Conv и BatchNorm. Предобученные чекпоинты сохраняют полную архитектуру обучения и могут показывать более высокие значения.
Link to this sectionОбучение#
Обучи YOLO26n-sem на наборе данных Cityscapes8 в течение 100 эпох при размере изображения 1024. Полный список доступных аргументов смотри на странице Конфигурация.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.yaml") # build a new model from YAML
model = YOLO("yolo26n-sem.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-sem.yaml").load("yolo26n-sem.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)Полные подробности о режиме train смотри на странице Обучение.
Link to this sectionФормат набора данных#
Наборы данных для семантической сегментации используют одноканальные изображения масок, как правило в формате PNG, где каждое значение пикселя представляет ID класса. Пиксели со значением 255 рассматриваются как "игнорируемые" и исключаются из вычисления функции потерь. В YAML-файле набора данных должны быть указаны пути к изображениям и соответствующим им директориям с масками. Подробности о формате смотри в Руководстве по наборам данных для семантической сегментации. Поддерживаемые наборы данных включают Cityscapes и ADE20K.
Link to this sectionВалидация#
Проверь точность обученной модели YOLO26n-sem на наборе данных для семантической сегментации. Передай data явно, чтобы при валидации использовался нужный YAML-файл набора данных.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val(data="cityscapes.yaml")
metrics.miou # mean Intersection over Union
metrics.pixel_accuracy # overall pixel accuracyLink to this sectionПредсказание#
Используй обученную модель YOLO26n-sem для запуска предсказаний на изображениях.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
# Access the results
for result in results:
semantic_mask = result.semantic_mask.data # class map, shape (H,W), integer dtype selected by class countПолную информацию о режиме predict смотри на странице Predict.
Link to this sectionВывод результатов#
Семантическая сегментация YOLO возвращает один объект Results на каждое изображение. Каждый результат хранит одну плотную карту классов для всего изображения вместо списка масок объектов. Пиксели с одинаковым предсказанным классом имеют общий ID класса, даже если они принадлежат разным объектам.
| Атрибут | Тип | Форма | Описание |
|---|---|---|---|
result.semantic_mask | SemanticMask | (H,W) | Плотная карта классов. |
result.semantic_mask.data | torch.uint8torch.int16torch.int32 | (H,W) | ID классов; тип данных (dtype) выбирается в зависимости от количества классов. |
result.masks | - | - | Нет масок экземпляров. |
result.boxes | - | - | Нет прямоугольников/достоверностей экземпляров. |
result.masks.xy | - | - | По умолчанию многоугольники отсутствуют. |
Для получения информации о специфичных для задачи полях Results см. раздел Предсказания по задачам.
Link to this sectionЭкземплярная vs Семантическая сегментация#
| Аспект | Экземплярная сегментация (task="segment") | Семантическая сегментация (task="semantic") |
|---|---|---|
| Цель предсказания | Сегментировать каждый обнаруженный объект отдельно | Присвоить один ID класса каждому пикселю |
| Поле вывода | result.masks | result.semantic_mask |
| Основные данные | result.masks.data | result.semantic_mask.data |
| Форма | (N,H,W) | (H,W) |
| Значения пикселей | Значения бинарной маски: 0 или 1 | ID классов: 0, 1, 2, ... |
| Dtype | torch.uint8 | torch.uint8torch.int16torch.int32 |
| Объекты одного класса | Сохраняются как отдельные экземпляры | Объединяются в одну область класса |
| Многоугольники | Да, через result.masks.xy и result.masks.xyn | По умолчанию вывод многоугольников не предусмотрен |
| Рамки и уверенность | Да, через result.boxes | Нет рамок или оценок уверенности для каждого экземпляра |
| Типичное использование | Подсчет, отслеживание, обрезка, измерение на уровне объектов | Плотная разметка сцены, проезжая часть, земной покров, медицинские области |
Link to this sectionЭкспорт#
Экспортируй модель YOLO26n-sem в другой формат, такой как ONNX, CoreML и т.д.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Export the model
model.export(format="onnx")Доступные форматы экспорта семантической сегментации YOLO26 приведены в таблице ниже. Ты можешь выполнить экспорт в любой формат, используя аргумент format, например format='onnx' или format='engine'. Ты можешь предсказывать или проводить валидацию непосредственно на экспортированных моделях, например yolo predict model=yolo26n-sem.onnx. Примеры использования будут показаны для твоей модели после завершения экспорта.
| Формат | Аргумент format | Модель | Метаданные | Аргументы |
|---|---|---|---|---|
| PyTorch | - | yolo26n-sem.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-sem.torchscript | ✅ | imgsz, quantize, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-sem_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-sem.engine | ✅ | imgsz, quantize, dynamic, simplify, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-sem.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz, keras, quantize, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-sem.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-sem.tflite | ✅ | imgsz, quantize, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-sem_edgetpu.tflite | ✅ | imgsz, quantize, data, fraction, device |
| TF.js | tfjs | yolo26n-sem_web_model/ | ✅ | imgsz, quantize, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-sem_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-sem.mnn | ✅ | imgsz, batch, quantize, device |
| NCNN | ncnn | yolo26n-sem_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-sem_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-sem_rknn_model/ | ✅ | imgsz, batch, name, quantize, data, fraction, device |
| ExecuTorch | executorch | yolo26n-sem_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-sem_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-sem_deepx_model/ | ✅ | imgsz, quantize, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-sem_qnn.onnx | ✅ | imgsz, batch, name, quantize, data, fraction, device |
Смотри подробную информацию об export на странице Export.
Link to this sectionFAQ#
Link to this sectionКак обучить модель семантической сегментации YOLO26 на собственном наборе данных?#
Чтобы обучить модель семантической сегментации YOLO26 на собственном наборе данных, нужно подготовить изображения масок в формате PNG, где каждое значение пикселя представляет ID класса (0, 1, 2, ...), а пиксели со значением 255 игнорируются при обучении. Создай файл YAML набора данных, указывающий на директории с изображениями и масками, затем обучи модель:
from ultralytics import YOLO
# Load a pretrained YOLO26 semantic segmentation model
model = YOLO("yolo26n-sem.pt")
# Train the model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=512)Проверь страницу Конфигурация для получения информации о дополнительных аргументах.
Link to this sectionВ чем разница между экземплярой и семантической сегментацией?#
Экземплярная и семантическая сегментации — это задачи на уровне пикселей, но они отличаются в одном ключевом аспекте:
- Семантическая сегментация присваивает метку класса каждому пикселю, но не различает отдельные объекты одного и того же класса. Например, все автомобили на сцене имеют одну и ту же метку класса.
- Экземплярная сегментация идентифицирует каждый отдельный объект по отдельности, создавая четкие маски для каждого объекта, даже если они принадлежат к одному классу.
Семантическая сегментация лучше всего подходит для задач понимания сцены, таких как автономное вождение и картирование земного покрова, в то время как экземплярная сегментация предпочтительнее, когда важен подсчет или отслеживание отдельных объектов.
Link to this sectionМожно ли использовать данные экземплярной сегментации для обучения семантической сегментации?#
Да. Если твой набор данных использует метки многоугольников Ultralytics YOLO (один .txt файл на изображение), опусти masks_dir в YAML наборе данных, и загрузчик конвертирует многоугольники в семантические маски для каждого изображения "на лету". Для многоклассовых наборов данных (N > 1) дополнительный класс background автоматически добавляется к names. Для одноклассовых наборов данных (N == 1) обучение остается с 1 классом — твой объявленный класс становится 1 в маске, а нетронутые пиксели становятся 0. Подробности смотри в Руководстве по наборам данных для семантической сегментации.
Link to this sectionКакие наборы данных поддерживаются для семантической сегментации?#
Ultralytics YOLO26 предоставляет встроенные конфигурации для нескольких наборов данных семантической сегментации:
- Cityscapes: Городские уличные сцены с 19 классами, широко используемые для исследований в области автономного вождения.
- ADE20K: Крупномасштабный набор данных для парсинга сцен со 150 классами.
Ты также можешь использовать любой пользовательский набор данных, который предоставляет аннотации масок в формате PNG, где значения пикселей соответствуют ID классов.
Link to this sectionКак проверить предварительно обученную модель семантической сегментации YOLO26?#
Проверь предварительно обученную модель семантической сегментации YOLO26 с помощью YAML-файла набора данных, используемого для оценки:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-sem.pt")
# Validate the model
metrics = model.val(data="cityscapes.yaml")
print("Mean IoU:", metrics.miou)
print("Pixel Accuracy:", metrics.pixel_accuracy)Эти шаги предоставят тебе метрики валидации, такие как среднее пересечение по объединению (mIoU) и точность по пикселям, которые являются стандартными мерами для оценки производительности семантической сегментации.
Link to this sectionКак экспортировать модель семантической сегментации YOLO26 в формат ONNX?#
Экспортируй модель семантической сегментации YOLO26 в формат ONNX с помощью Python или команд CLI:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-sem.pt")
# Export the model to ONNX format
model.export(format="onnx")Для получения подробной информации об экспорте в различные форматы обратись к странице Экспорт.