Meet YOLO26: next-gen vision AI.

Link to this sectionСемантическая сегментация#

Semantic segmentation examples

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



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-sem1024 × 204878.34.4 ± 0.01.622.7
YOLO26s-sem1024 × 204880.88.4 ± 0.06.588.8
YOLO26m-sem1024 × 204882.019.9 ± 0.114.3304.5
YOLO26l-sem1024 × 204882.926.5 ± 0.117.9384.7
YOLO26x-sem1024 × 204883.648.9 ± 0.240.2861.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-ade20k64038.83.9 ± 0.21.64.4
YOLO26s-sem-ade20k64045.64.2 ± 0.36.517.4
YOLO26m-sem-ade20k64047.44.7 ± 0.314.359.5
YOLO26l-sem-ade20k64049.78.3 ± 0.217.975.0
YOLO26x-sem-ade20k64051.59.9 ± 0.340.2168.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 accuracy

Link 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_maskSemanticMask(H,W)Плотная карта классов.
result.semantic_mask.datatorch.uint8
torch.int16
torch.int32
(H,W)ID классов; тип данных (dtype) выбирается в зависимости от количества классов.
result.masks--Нет масок экземпляров.
result.boxes--Нет прямоугольников/достоверностей экземпляров.
result.masks.xy--По умолчанию многоугольники отсутствуют.

Для получения информации о специфичных для задачи полях Results см. раздел Предсказания по задачам.

Link to this sectionЭкземплярная vs Семантическая сегментация#

АспектЭкземплярная сегментация (task="segment")Семантическая сегментация (task="semantic")
Цель предсказанияСегментировать каждый обнаруженный объект отдельноПрисвоить один ID класса каждому пикселю
Поле выводаresult.masksresult.semantic_mask
Основные данныеresult.masks.dataresult.semantic_mask.data
Форма(N,H,W)(H,W)
Значения пикселейЗначения бинарной маски: 0 или 1ID классов: 0, 1, 2, ...
Dtypetorch.uint8torch.uint8
torch.int16
torch.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-
TorchScripttorchscriptyolo26n-sem.torchscriptimgsz, quantize, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-sem.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-sem_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-sem.engineimgsz, quantize, dynamic, simplify, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-sem.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-sem_saved_model/imgsz, keras, quantize, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-sem.pbimgsz, batch, device
TF Litetfliteyolo26n-sem.tfliteimgsz, quantize, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-sem_edgetpu.tfliteimgsz, quantize, data, fraction, device
TF.jstfjsyolo26n-sem_web_model/imgsz, quantize, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-sem_paddle_model/imgsz, batch, device
MNNmnnyolo26n-sem.mnnimgsz, batch, quantize, device
NCNNncnnyolo26n-sem_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-sem_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-sem_rknn_model/imgsz, batch, name, quantize, data, fraction, device
ExecuTorchexecutorchyolo26n-sem_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-sem_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-sem_deepx_model/imgsz, quantize, data, optimize, device
Qualcomm QNNqnnyolo26n-sem_qnn.onnximgsz, 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")

Для получения подробной информации об экспорте в различные форматы обратись к странице Экспорт.

Комментарии