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

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

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

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

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



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

Наконечник

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

Модели

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

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

Модель размер
(пикселей)
mAPbox
50-95
mAPmask
50-95
Скорость
CPU ONNX
(мс)
Скорость
T4TensorRT10
(мс)
params
(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 например.
    Размножать по 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, optimize, nms, batch
ONNX onnx yolo11n-seg.onnx imgsz, half, dynamic, simplify, opset, nms, batch
OpenVINO openvino yolo11n-seg_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data
TensorRT engine yolo11n-seg.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data
CoreML coreml yolo11n-seg.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n-seg_saved_model/ imgsz, keras, int8, nms, batch
TF GraphDef pb yolo11n-seg.pb imgsz, batch
TF Lite tflite yolo11n-seg.tflite imgsz, half, int8, nms, batch, data
TF Край TPU edgetpu yolo11n-seg_edgetpu.tflite imgsz
TF.js tfjs yolo11n-seg_web_model/ imgsz, half, int8, nms, batch
PaddlePaddle paddle yolo11n-seg_paddle_model/ imgsz, batch
MNN mnn yolo11n-seg.mnn imgsz, batch, int8, half
NCNN ncnn yolo11n-seg_ncnn_model/ imgsz, half, batch
IMX500 imx yolo11n-seg_imx_model/ imgsz, int8, data
RKNN rknn yolo11n-seg_rknn_model/ imgsz, batch, name

Смотреть полностью 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 Модели сегментов проходят предварительное обучение на наборе данных 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

Эти шаги позволят вам получить такие показатели валидации, как средняя точность (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 год назад ✏️ Обновлено 4 дня назад

Комментарии