YOLO Vision 2026:

Сегментация экземпляров с помощью Ultralytics YOLO#

Ultralytics YOLO instance segmentation examples

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

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



Watch: Run Segmentation with Pretrained Ultralytics YOLO Model in Python.
Совет

Модели YOLO26 Segment используют суффикс -seg, т. е. yolo26n-seg.pt, и предварительно обучены на COCO.

Модели#

Здесь представлены предварительно обученные модели YOLO26 Segment. Модели Detect, Segment и Pose предварительно обучены на датасете COCO, Semantic модели предварительно обучены на датасете Cityscapes, а модели Classify предварительно обучены на датасете ImageNet.

Модели загружаются автоматически из последнего релиза Ultralytics при первом использовании.

Модельразмер
(пиксели)
mAPbox
50-95(e2e)
mAPmask
50-95(e2e)
Скорость
CPU ONNX
(мс)
Скорость
T4 TensorRT10
(мс)
параметры
(М)
FLOPs
(Б)
YOLO26n-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.1
YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.2
YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.5
YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0139.8
YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8313.5
  • Значения mAPval указаны для одной модели в одном масштабе на датасете COCO val2017.
    Воспроизведите с помощью yolo val segment data=coco.yaml device=0
  • Speed усреднена по изображениям COCO val с использованием инстанса Amazon EC2 P4d.
    Воспроизведите с помощью yolo val segment data=coco.yaml batch=1 device=0|cpu
  • Значения Params и FLOPs даны для слитной модели после model.fuse(), которая объединяет слои Conv и BatchNorm и, для моделей end2end, удаляет вспомогательную голову детекции «один ко многим». Предварительно обученные чекпоинты сохраняют полную архитектуру обучения и могут показывать большие значения.

Обучение#

Обучи модель YOLO26n-seg на датасете COCO8-seg в течение 100 эпох с размером изображения 640. Полный список доступных аргументов смотри на странице Configuration.

Пример
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.yaml")  # build a new model from YAML
model = YOLO("yolo26n-seg.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

Смотри подробности о полном режиме train на странице Train. Модели сегментации также можно обучать с помощью облачного обучения Ultralytics Platform.

Формат набора данных#

С подробным форматом датасетов сегментации YOLO можно ознакомиться в Dataset Guide. Чтобы конвертировать существующий датасет из других форматов (например, COCO и т. д.) в формат YOLO, используй инструмент JSON2YOLO от Ultralytics. Ты также можешь создавать маски сегментации с помощью аннотирования Ultralytics Platform, используя инструменты полигонов и умную аннотацию на базе SAM.

Валидация#

Выполни валидацию точности обученной модели YOLO26n-seg на датасете COCO8-seg. Никакие аргументы не нужны, так как model сохраняет свои data обучения и аргументы в качестве атрибутов модели.

Пример
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # a list containing mAP50-95(B) for each category
metrics.box.image_metrics  # per-image metrics dictionary for det with precision, recall, F1, TP, FP, and FN
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # a list containing mAP50-95(M) for each category
metrics.seg.image_metrics  # per-image metrics dictionary for seg with precision, recall, F1, TP, FP, and FN

Предсказание#

Используй обученную модель YOLO26n-seg для выполнения предсказаний на изображениях.

Пример
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.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:
    xy = result.masks.xy  # mask polygons in pixel coordinates
    xyn = result.masks.xyn  # normalized mask polygons
    masks = result.masks.data  # binary masks, shape (N,H,W), dtype torch.uint8

Смотри полную информацию о режиме predict на странице Предсказание.

Вывод результатов#

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

АтрибутТипФормаОписание
result.masksMasks(N)Маски экземпляров.
result.masks.datatorch.uint8(N,H,W)Бинарные маски, значения 0 или 1.
result.masks.xynp.float32list[(P,2)]Пиксельные полигоны.
result.masks.xynnp.float32list[(P,2)]Нормализованные полигоны.
result.boxesBoxes(N)Прямоугольники/классы/достоверности экземпляров.
result.boxes.clstorch.float32(N,)Идентификаторы классов; приводятся к int для получения имен.

Информацию о специфичных для задач полях Results для каждой задачи см. в разделе Результаты предсказания по задачам.

Чем это отличается от семантической сегментации#

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

Экспорт#

Экспортируй модель YOLO26n-seg в другой формат, такой как ONNX, CoreML и т.д.

Пример
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

Доступные форматы экспорта YOLO26-seg приведены в таблице ниже. Ты можешь экспортировать в любой формат, используя аргумент format, т. е. format='onnx' или format='engine'. Ты можешь выполнять предсказание или валидацию напрямую на экспортированных моделях, т. е. yolo predict model=yolo26n-seg.onnx. Примеры использования приводятся для твоей модели после завершения экспорта.

Примечание

Встроенные конвейеры NMS для CoreML (nms=True) поддерживают только модели обнаружения объектов. Экспорт сегментации в CoreML выдает предупреждение и принудительно устанавливает nms=False, создавая исходную модель без NMS.

ФорматАргумент formatМодельМетаданныеАргументы
PyTorch-yolo26n-seg.pt-
TorchScripttorchscriptyolo26n-seg.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-seg.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-seg_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-seg_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/imgsz, batch, device
MNNmnnyolo26n-seg.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-seg_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-seg_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-seg_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-seg_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-seg_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-seg_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-seg_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-seg.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-seg_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-seg_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms

Смотри полную информацию об export на странице Экспорт.

FAQ#

  • Чтобы обучить модель сегментации YOLO26 на кастомном датасете, тебе сначала нужно подготовить свой датасет в формате сегментации YOLO. Ты можешь использовать такие инструменты, как JSON2YOLO, для конвертации датасетов из других форматов. Как только твой датасет будет готов, ты сможешь обучить модель с помощью Python или команд CLI:

    Пример
    from ultralytics import YOLO
    
    # Load a pretrained YOLO26 segment model
    model = YOLO("yolo26n-seg.pt")
    
    # Train the model
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

    Ознакомься со страницей Конфигурация, чтобы узнать о других доступных аргументах.

  • Обнаружение объектов идентифицирует и локализует объекты на изображении, рисуя ограничивающие рамки вокруг них, тогда как сегментация экземпляров не только определяет ограничивающие рамки, но и очерчивает точную форму каждого объекта. Модели сегментации экземпляров YOLO26 предоставляют маски или контуры, которые очерчивают каждый обнаруженный объект, что особенно полезно для задач, где важно знать точную форму объектов, например, в медицинской визуализации или автономном вождении.

  • Ultralytics YOLO26 — это современная модель, признанная за свою высокую точность и производительность в реальном времени, что делает ее идеальной для задач сегментации экземпляров. Модели YOLO26 Segment поставляются предварительно обученными на датасете COCO, что обеспечивает высокую надежность при работе с самыми разными объектами. Кроме того, YOLO поддерживает обучение, валидацию, предсказание и экспорт с бесшовной интеграцией, что делает ее универсальным инструментом как для исследований, так и для промышленного применения.

  • Загрузка и проверка предварительно обученной модели сегментации YOLO очень просты. Вот как ты можешь это сделать с помощью Python и CLI:

    Пример
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-seg.pt")
    
    # Validate the model
    metrics = model.val()
    print("Mean Average Precision for boxes:", metrics.box.map)
    print("Mean Average Precision for masks:", metrics.seg.map)

    Эти шаги предоставят тебе такие метрики валидации, как средняя точность по классам (mAP), которые имеют решающее значение для оценки производительности модели.

  • Экспорт модели сегментации YOLO в формат ONNX прост и может быть выполнен с помощью Python или команд CLI:

    Пример
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-seg.pt")
    
    # Export the model to ONNX format
    model.export(format="onnx")

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

Комментарии