Link to this sectionСемантическая сегментация#
Семантическая сегментация присваивает метку класса каждому пикселю изображения, создавая плотную карту классов, покрывающую всю сцену. В отличие от сегментации экземпляров, которая разделяет отдельные объекты, семантическая сегментация группирует все пиксели одного класса вместе, независимо от того, сколько отдельных объектов присутствует.
Выходными данными модели семантической сегментации является единая карта классов размером «высота на ширину», где значение каждого пикселя соответствует предсказанному 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 - Метрики Скорости (Speed) усреднены по валидационным изображениям Cityscapes с использованием экземпляра RTX3090.
Воспроизведи с помощьюyolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048 - Значения Параметров (Params) и FLOPs указаны для объединенной модели после
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 классов; тип данных выбран в зависимости от количества классов. |
result.masks | - | - | Нет масок экземпляров. |
result.boxes | - | - | Нет рамок/уверенности для экземпляров. |
result.masks.xy | - | - | Нет полигонов по умолчанию. |
Для полей Results, специфичных для каждой задачи, смотри раздел Результаты предсказания по задачам.
Link to this sectionСегментация экземпляров против семантической сегментации#
| Аспект | Сегментация экземпляров (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, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-sem_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-sem.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-sem.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-sem.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-sem.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-sem_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-sem_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-sem_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-sem.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-sem_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-sem_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-sem_rknn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
| ExecuTorch | executorch | yolo26n-sem_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-sem_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DEEPX | deepx | yolo26n-sem_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-sem_qnn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
Подробности по 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)Проверь страницу Configuration для получения списка других доступных аргументов.
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) и точность по пикселям (pixel accuracy), которые являются стандартными мерами для оценки производительности семантической сегментации.
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")Для получения дополнительной информации об экспорте в различные форматы обратись к странице Export.