Сегментация экземпляров
Сегментация экземпляров идет на шаг дальше обнаружения объектов и включает в себя идентификацию отдельных объектов на изображении и их сегментацию от остальной части изображения.
Выходные данные модели сегментации экземпляров представляют собой набор масок или контуров, которые очерчивают каждый объект на изображении, а также метки классов и оценки достоверности для каждого объекта. Сегментация экземпляров полезна, когда вам нужно знать не только то, где находятся объекты на изображении, но и то, какова их точная форма.
Смотреть: Запустите сегментацию с помощью предварительно обученной модели 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
Для получения более подробной информации об экспорте в различные форматы обратитесь к странице Экспорт.