Сегментация экземпляров

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, в то время как модели 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
  • Скорость усреднена по изображениям COCO val с использованием инстанса Amazon EC2 P4d.
    Воспроизведи с помощью yolo val segment data=coco.yaml batch=1 device=0|cpu
  • Значения Params и FLOPs указаны для объединенной (fused) модели после model.fuse(), которая объединяет слои Conv и BatchNorm и, для моделей end2end, удаляет вспомогательную «один-ко-многим» голову детекции. Предварительно обученные чекпоинты сохраняют полную архитектуру обучения и могут показывать более высокие значения.

Обучение (Train)

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

Пример
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 смотри на странице Обучение. Модели сегментации также можно обучать на облачных GPU через Ultralytics Platform.

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

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

Валидация (Val)

Проверь точность обученной модели 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 in polygon format
    xyn = result.masks.xyn  # normalized
    masks = result.masks.data  # mask in matrix format (num_objects x H x W)

Полные детали режима predict смотри на странице Предсказание.

Экспорт (Export)

Экспортируй модель 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. Примеры использования будут показаны для твоей модели после завершения экспорта.

ФорматАргумент formatМодельМетаданныеАргументы
PyTorch-yolo26n-seg.pt-
TorchScripttorchscriptyolo26n-seg.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-seg.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-seg_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-seg_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pbimgsz, batch, device
TF Litetfliteyolo26n-seg.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-seg_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/imgsz, batch, device
MNNmnnyolo26n-seg.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-seg_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-seg_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-seg_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-seg_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-seg_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-seg_deepx_model/imgsz, int8, data, optimize, device

Смотри полные сведения об export на странице Экспорт.

Часто задаваемые вопросы (FAQ)

Как обучить модель сегментации YOLO26 на пользовательском наборе данных?

Чтобы обучить модель сегментации 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?

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

Зачем использовать YOLO26 для сегментации экземпляров?

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

Как загрузить и проверить предварительно обученную модель сегментации 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)

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

Как экспортировать модель сегментации YOLO в формат ONNX?

Экспорт модели сегментации 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")

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

Комментарии