Обнаружение объектов с помощью Ultralytics YOLO#
Обнаружение объектов — это задача, которая включает определение местоположения и класса объектов на изображении или в видеопотоке.
Результатом работы детектора объектов является набор ограничивающих рамок, охватывающих объекты на изображении, а также метки классов и оценки уверенности для каждой рамки. Обнаружение объектов подходит, когда тебе нужно идентифицировать интересующие объекты в сцене, но не требуется точно знать, где находится объект или какова его точная форма.
Watch: Object Detection with Pretrained Ultralytics YOLO Model.
Модели YOLO26 Detect — это стандартные модели YOLO26, то есть yolo26n.pt, предварительно обученные на COCO.
Модели#
Здесь представлены предварительно обученные модели YOLO26 Detect. Модели Detect, Segment и Pose предварительно обучены на наборе данных COCO, модели Semantic — на Cityscapes, а модели Classify — на наборе данных ImageNet.
Модели автоматически загружаются из последнего релиза Ultralytics при первом использовании.
| Модель | размер (пиксели) | mAPval 50-95 | mAPval 50-95(e2e) | Скорость CPU ONNX (мс) | Скорость T4 TensorRT10 (мс) | параметры (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n | 640 | 40.9 | 40.1 | 38.9 ± 0.7 | 1.7 ± 0.0 | 2.4 | 5.5 |
| YOLO26s | 640 | 48.6 | 47.8 | 87.2 ± 0.9 | 2.5 ± 0.0 | 9.5 | 20.9 |
| YOLO26m | 640 | 53.1 | 52.5 | 220.0 ± 1.4 | 4.7 ± 0.1 | 20.4 | 68.4 |
| YOLO26l | 640 | 55.0 | 54.4 | 286.2 ± 2.0 | 6.2 ± 0.2 | 24.8 | 86.8 |
| YOLO26x | 640 | 57.5 | 56.9 | 525.8 ± 4.0 | 11.8 ± 0.2 | 55.7 | 194.4 |
- mAPval значения приводятся для одной модели в одном масштабе на датасете COCO val2017.
Воспроизведи результат с помощьюyolo val detect data=coco.yaml device=0. Добавьnms=False, чтобы воспроизвести столбец e2e. - Значение скорости усреднено по изображениям COCO val с использованием экземпляра Amazon EC2 P4d.
Воспроизвести можно с помощьюyolo val detect data=coco.yaml batch=1 device=0|cpu nms=False - Значения Params и FLOPs приводятся для слитных моделей после свертки/пакетной нормализации (Conv/BatchNorm folding) и удаления неиспользуемой ветки детекции. Предварительно обученные контрольные точки сохраняют полную архитектуру обучения и могут показывать большие значения.
Смотри предварительный просмотр unreleased YOLO27 для предварительных результатов детектирования COCO.
Обучение#
Обучи YOLO26n на наборе данных COCO8 в течение 100 эпох с размером изображения 640. Полный список доступных аргументов приведён на странице Configuration.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.yaml") # build a new model from YAML
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Полное описание режима train смотри на странице Train. Модели обнаружения также можно обучать с помощью облачного обучения Ultralytics Platform.
Формат датасета#
Формат датасета детектирования YOLO подробно описан в руководстве по датасетам. Чтобы конвертировать существующий датасет COCO в формате JSON в формат YOLO, используй встроенную функцию convert_coco, описанную в руководстве по переходу от COCO к YOLO. Ты также можешь размечать датасеты детектирования и управлять ими с помощью инструментов разметки на базе ИИ на платформе Ultralytics Platform.
Val#
Проверь точность обученной модели YOLO26n на наборе данных COCO8. Аргументы не требуются, поскольку model сохраняет параметры обучения data и аргументы в качестве атрибутов модели.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.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
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # a list containing mAP50-95 for each category
metrics.box.image_metrics # per-image metrics dictionary with precision, recall, F1, TP, FP, and FNPredict#
Используй обученную модель YOLO26n для выполнения предсказаний на изображениях.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.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:
xywh = result.boxes.xywh # center-x, center-y, width, height
xywhn = result.boxes.xywhn # normalized
xyxy = result.boxes.xyxy # top-left-x, top-left-y, bottom-right-x, bottom-right-y
xyxyn = result.boxes.xyxyn # normalized
names = [result.names[cls.item()] for cls in result.boxes.cls.int()] # class name of each box
confs = result.boxes.conf # confidence score of each boxПолное описание режима predict см. на странице Predict.
Выходные данные результатов#
Обнаружение объектов возвращает один объект Results для каждого изображения. Основным полем предсказания является result.boxes, которое содержит
координаты рамок, идентификаторы классов и оценки уверенности для каждого обнаруженного объекта.
| Атрибут | Тип | Форма | Описание |
|---|---|---|---|
result.boxes | Boxes | (N) | Рамки обнаруженных объектов. |
result.boxes.data | torch.float32 | (N,6/7) | Исходный [x1,y1,x2,y2,conf,cls] и необязательный идентификатор отслеживания. |
result.boxes.xyxy | torch.float32 | (N,4) | Пиксельные рамки xyxy. |
result.boxes.conf | torch.float32 | (N,) | Оценки уверенности. |
result.boxes.cls | torch.float32 | (N,) | Идентификаторы классов; преобразуй их в int, чтобы получить имена. |
Описание специфичных для задач полей Results для всех задач см. в разделе Результаты предсказаний по задачам.
Экспорт#
Экспортируй модель YOLO26n в другой формат, например ONNX, CoreML и другие.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")Доступные форматы экспорта YOLO26 приведены в таблице ниже. Ты можешь экспортировать модель в любой формат с помощью аргумента format, например format='onnx' или format='engine'. Ты можешь выполнять предсказания или валидацию непосредственно на экспортированных моделях, например yolo predict model=yolo26n.onnx. После завершения экспорта для твоей модели будут показаны примеры использования.
| Формат | Аргумент format | Модель | Метаданные | Аргументы |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
nms=None по умолчанию выдает сырые результаты для внешнего NMS. Установи nms=False, чтобы выбрать доступный головной модуль без NMS; неподдерживаемые форматы возвращаются к своему родному пути вывода. Записи nms выше определяют форматы, которые могут встраивать NMS с помощью nms=True.
Полное описание export см. на странице Экспорт.
Часто задаваемые вопросы#
Да. В кратком руководстве по Ultralytics Platform описан рабочий процесс в браузере для разметки наборов данных, обучения моделей обнаружения на облачных GPU и их развёртывания на конечных точках инференса.
Обучение модели YOLO26 на собственном наборе данных включает несколько этапов:
- Подготовь набор данных: убедись, что твой набор данных имеет формат YOLO. Инструкции смотри в нашем руководстве по наборам данных.
- Загрузи модель: используй библиотеку Ultralytics YOLO, чтобы загрузить предварительно обученную модель или создать новую модель из YAML-файла.
- Обучи модель: выполни метод
trainв Python или командуyolo detect trainв CLI.
Примерfrom ultralytics import YOLO # Load a pretrained model model = YOLO("yolo26n.pt") # Train the model on your custom dataset model.train(data="my_custom_dataset.yaml", epochs=100, imgsz=640)Подробные параметры конфигурации смотри на странице Configuration.
Ultralytics YOLO26 предлагает различные предварительно обученные модели для обнаружения объектов, сегментации экземпляров, семантической сегментации и оценки позы. Эти модели предварительно обучены на наборе данных COCO, на Cityscapes для задач семантической сегментации или на ImageNet для задач классификации. Вот некоторые из доступных моделей:
Подробный список и метрики производительности смотри в разделе Models.
Чтобы проверить точность обученной модели YOLO26, ты можешь использовать метод
.val()в Python или командуyolo detect valв CLI. Это предоставит такие метрики, как mAP50-95, mAP50 и другие.Примерfrom ultralytics import YOLO # Load the model model = YOLO("path/to/best.pt") # Validate the model metrics = model.val() print(metrics.box.map) # mAP50-95Подробнее о валидации смотри на странице Val.
Ultralytics YOLO26 позволяет экспортировать модели в различные форматы, такие как ONNX, TensorRT, CoreML и другие, чтобы обеспечить совместимость с различными платформами и устройствами.
Примерfrom ultralytics import YOLO # Load the model model = YOLO("yolo26n.pt") # Export the model to ONNX format model.export(format="onnx")Полный список поддерживаемых форматов и инструкции смотри на странице Export.
Ultralytics YOLO26 разработан для обеспечения передовой производительности в задачах обнаружения объектов, сегментации экземпляров, семантической сегментации и оценки позы. Вот несколько ключевых преимуществ:
- Предварительно обученные модели: используй модели, предварительно обученные на популярных наборах данных, таких как COCO и ImageNet, для ускорения разработки.
- Высокая точность: модели обеспечивают впечатляющие значения mAP, гарантируя надёжное обнаружение объектов.
- Скорость: оптимизация для инференса в реальном времени делает эти модели идеальными для приложений, требующих быстрой обработки.
- Гибкость: экспортируй модели в различные форматы, такие как ONNX и TensorRT, для развёртывания на разных платформах.
Изучи наш блог, чтобы узнать о вариантах использования и историях успеха, демонстрирующих YOLO26 в работе.