Ultralytics YOLO27:
Get Started

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

Ultralytics YOLO instance segmentation examples

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

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



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

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

Модели#

Ниже представлены предварительно обученные на наборе данных COCO модели YOLO26 Segment.

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

Модельразмер
(пиксели)
mAPрамка
50-95(e2e)
mAPмаска
50-95(e2e)
Скорость
CPU ONNX
(мс)
Скорость
T4 TensorRT10
(мс)
параметры
(M)
FLOPs
(B)
YOLO26n-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.3
YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.5
YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.7
YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0140.1
YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8314.0
  • Значения mAPval рассчитаны для одной модели и одного масштаба на наборе данных COCO val2017.
    Воспроизвести результат можно с помощью yolo segment val data=coco.yaml device=0 nms=False
  • Скорость рассчитана как среднее значение по изображениям COCO val: ONNX на CPU и TensorRT10 на GPU NVIDIA T4.
    Воспроизведи результаты с помощью yolo segment val data=coco.yaml batch=1 device=0|cpu nms=False.
  • Значения Params и FLOPs указаны для объединённых моделей после свёртки Conv/BatchNorm и удаления неиспользуемой ветви обнаружения. Предварительно обученные контрольные точки сохраняют полную архитектуру обучения, поэтому их показатели могут быть выше.

Эти контрольные точки сегментируют 80 классов COCO. Чтобы сегментировать категории, не входящие в этот список, без повторного обучения, смотри YOLOE: модель принимает классы в виде текстового запроса, визуального примера или встроенного словаря.

Предварительные результаты по боксам и маскам COCO смотри в анонсе предстоящего YOLO27.

Обучение#

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

Пример
from ultralytics import YOLO

# Загрузить модель
model = YOLO("yolo26n-seg.yaml")  # создать новую модель из YAML
model = YOLO("yolo26n-seg.pt")  # загрузить предварительно обученную модель (рекомендуется для обучения)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt")  # создать модель из YAML и перенести веса

# Обучить модель
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

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

Формат датасета#

Подробное описание формата наборов данных для сегментации YOLO смотри в руководстве по наборам данных. Чтобы преобразовать существующий набор данных COCO JSON в формат YOLO, используй встроенную функцию convert_coco с use_segments=True, как описано в руководстве по преобразованию COCO в YOLO. Ты также можешь создавать маски сегментации с помощью инструментов-полигонов и интеллектуальной разметки на основе SAM в Ultralytics Platform.

Валидация#

Проверь точность обученной модели YOLO26n-seg. Аргументы не нужны: model сохраняет параметры обучения data и аргументы в атрибутах модели. Модель path/to/best.pt из примера на странице Train проходит валидацию на COCO8-seg. В официальных весах указан путь к обучающему набору данных, которого нет на твоем компьютере, поэтому модель переключается на набор данных задачи по умолчанию coco8-seg.yaml и выводит предупреждение. Укажи data, чтобы провести валидацию на другом наборе данных.

Пример
from ultralytics import YOLO

# Загрузить модель
model = YOLO("yolo26n-seg.pt")  # загрузить официальную модель
model = YOLO("path/to/best.pt")  # загрузить пользовательскую модель

# Валидировать модель
metrics = model.val()  # аргументы не нужны, набор данных и настройки сохранены
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # список значений mAP50-95(B) для каждой категории
metrics.box.image_metrics  # словарь метрик для каждого изображения для det с точностью, полнотой, F1, TP, FP и FN
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # список значений mAP50-95(M) для каждой категории
metrics.seg.image_metrics  # словарь метрик для каждого изображения для seg с точностью, полнотой, F1, TP, FP и FN

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

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

Пример
from ultralytics import YOLO

# Загрузить модель
model = YOLO("yolo26n-seg.pt")  # загрузить официальную модель
model = YOLO("path/to/best.pt")  # загрузить пользовательскую модель

# Получи предсказания с помощью модели
results = model("https://ultralytics.com/images/bus.jpg")  # получи предсказание для изображения

# Обратись к результатам
for result in results:
    xy = result.masks.xy  # полигоны масок в пиксельных координатах
    xyn = result.masks.xyn  # нормализованные полигоны масок
    masks = result.masks.data  # бинарные маски, форма (N,H,W), тип данных 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, специфичных для каждой задачи, см. в разделе Результаты предсказаний по задачам.

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

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

Экспорт#

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

Пример
from ultralytics import YOLO

# Загрузить модель
model = YOLO("yolo26n-seg.pt")  # загрузить официальную модель
model = YOLO("path/to/best.pt")  # загрузить пользовательскую модель

# Экспортировать модель
model.export(format="onnx")

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

Примечание

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

ФорматАргумент formatМодельМетаданныеАргументы
PyTorch-yolo26n-seg.pt✅-
TorchScripttorchscriptyolo26n-seg.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-seg.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-seg_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-seg.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-seg_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-seg.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-seg.mnn✅imgsz, 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.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-seg_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-seg_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-seg_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None по умолчанию возвращает исходные выходные данные для внешней NMS. Укажи nms=False, чтобы выбрать доступную голову без NMS; неподдерживаемые форматы используют собственный путь вывода. Элементы nms выше обозначают форматы, в которые можно встроить NMS с помощью nms=True.

Полное описание export смотри на странице экспорта.

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

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

    Пример
    from ultralytics import YOLO
    
    # Загрузи предварительно обученную модель сегментации YOLO26
    model = YOLO("yolo26n-seg.pt")
    
    # Обучить модель
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

    Другие доступные аргументы смотри на странице Configuration.

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

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

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

    Пример
    from ultralytics import YOLO
    
    # Загрузи предварительно обученную модель
    model = YOLO("yolo26n-seg.pt")
    
    # Валидировать модель
    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
    
    # Загрузи предварительно обученную модель
    model = YOLO("yolo26n-seg.pt")
    
    # Экспортировать модель в формат ONNX
    model.export(format="onnx")

    Подробности об экспорте в различные форматы смотри на странице Export.

Комментарии