Перейти к содержанию

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

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

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

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



Смотреть: Запустите сегментацию с помощью предварительно обученной модели Ultralytics YOLO на Python.

Совет

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

Модели

Предварительно обученные модели сегментации YOLO11 представлены здесь. Модели Detect, Segment и Pose предварительно обучены на наборе данных COCO, а модели Classify предварительно обучены на наборе данных ImageNet.

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

Модель размер
(пиксели)
mAPbox
50-95
mAPmask
50-95
Скорость
CPU ONNX
(мс)
Скорость
T4 TensorRT10
(мс)
параметры
(M)
FLOPs
(B)
YOLO11n-seg 640 38.9 32.0 65.9 ± 1.1 1.8 ± 0.0 2.9 10.4
YOLO11s-seg 640 46.6 37.8 117.6 ± 4.9 2.9 ± 0.0 10.1 35.5
YOLO11m-seg 640 51.5 41.5 281.6 ± 1.2 6.3 ± 0.1 22.4 123.3
YOLO11l-seg 640 53.4 42.9 344.2 ± 3.2 7.8 ± 0.2 27.6 142.2
YOLO11x-seg 640 54.7 43.8 664.5 ± 3.2 15.8 ± 0.7 62.1 319.0
  • mAPval значения для одномодельной одномасштабной модели на COCO val2017 наборе данных.
    Воспроизвести с помощью yolo val segment data=coco.yaml device=0
  • Скорость в среднем по изображениям COCO val с использованием Amazon EC2 P4d instance.
    Воспроизвести с помощью yolo val segment data=coco.yaml batch=1 device=0|cpu

Обучение

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

Пример

from ultralytics import YOLO

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

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo segment train data=coco8-seg.yaml model=yolo11n-seg.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo segment train data=coco8-seg.yaml model=yolo11n-seg.pt epochs=100 imgsz=640

# Build a new model from YAML, transfer pretrained weights to it and start training
yolo segment train data=coco8-seg.yaml model=yolo11n-seg.yaml pretrained=yolo11n-seg.pt epochs=100 imgsz=640

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

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

Валидация

Проверка обученной модели YOLO11n-seg точность на наборе данных COCO8-seg. Аргументы не требуются, так как model сохраняет свое обучение data и аргументы в качестве атрибутов модели.

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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 contains map50-95(B) of each category
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # a list contains map50-95(M) of each category
yolo segment val model=yolo11n-seg.pt  # val official model
yolo segment val model=path/to/best.pt # val custom model

Прогнозирование

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

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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)
yolo segment predict model=yolo11n-seg.pt source='https://ultralytics.com/images/bus.jpg'  # predict with official model
yolo segment predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg' # predict with custom model

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

Экспорт

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

Пример

from ultralytics import YOLO

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

# Export the model
model.export(format="onnx")
yolo export model=yolo11n-seg.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model

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

Формат format Аргумент Модель Метаданные Аргументы
PyTorch - yolo11n-seg.pt -
TorchScript torchscript yolo11n-seg.torchscript imgsz, half, dynamic, optimize, nms, batch, device
ONNX onnx yolo11n-seg.onnx imgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINO openvino yolo11n-seg_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRT engine yolo11n-seg.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreML coreml yolo11n-seg.mlpackage imgsz, half, int8, nms, batch, device
TF SavedModel saved_model yolo11n-seg_saved_model/ imgsz, keras, int8, nms, batch, device
TF GraphDef pb yolo11n-seg.pb imgsz, batch, device
TF Lite tflite yolo11n-seg.tflite imgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPU edgetpu yolo11n-seg_edgetpu.tflite imgsz, device
TF.js tfjs yolo11n-seg_web_model/ imgsz, half, int8, nms, batch, device
PaddlePaddle paddle yolo11n-seg_paddle_model/ imgsz, batch, device
MNN mnn yolo11n-seg.mnn imgsz, batch, int8, half, device
NCNN ncnn yolo11n-seg_ncnn_model/ imgsz, half, batch, device
IMX500 imx yolo11n-seg_imx_model/ imgsz, int8, data, fraction, device
RKNN rknn yolo11n-seg_rknn_model/ imgsz, batch, name, device

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

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

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

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

Пример

from ultralytics import YOLO

# Load a pretrained YOLO11 segment model
model = YOLO("yolo11n-seg.pt")

# Train the model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
yolo segment train data=path/to/your_dataset.yaml model=yolo11n-seg.pt epochs=100 imgsz=640

Дополнительные аргументы можно найти на странице Конфигурация.

В чем разница между обнаружением объектов и сегментацией экземпляров в YOLO11?

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

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

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

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

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

Пример

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo11n-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)
yolo segment val model=yolo11n-seg.pt

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

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

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

Пример

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo11n-seg.pt")

# Export the model to ONNX format
model.export(format="onnx")
yolo export model=yolo11n-seg.pt format=onnx

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



📅 Создано 1 год назад ✏️ Обновлено 5 месяцев назад

Комментарии