Обнаружение объектов с Ultralytics YOLO#
Обнаружение объектов — это задача, в которой определяется местоположение и класс объектов на изображении или в видеопотоке.
Результат работы детектора объектов — набор ограничивающих рамок, охватывающих объекты на изображении, а также метки классов и оценки уверенности для каждой рамки. Обнаружение объектов подходит, когда нужно выявить интересующие объекты в сцене, но точная форма объектов не важна.
Смотри: Обнаружение объектов с предварительно обученной моделью Ultralytics YOLO.
Модели YOLO26 Detect — это модели YOLO26 по умолчанию, то есть yolo26n.pt; они предварительно обучены на COCO.
Модели#
Ниже представлены модели YOLO26 Detect, предварительно обученные на датасете COCO.
Модели автоматически загружаются из последнего релиза Ultralytics при первом использовании.
| Модель | размер (пиксели) | mAPval 50-95 | mAPвалидация 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 detect val data=coco.yaml device=0. Добавьnms=False, чтобы воспроизвести данные в столбце e2e. - Скорость рассчитана как среднее значение по изображениям COCO val: ONNX на CPU и TensorRT10 на GPU NVIDIA T4.
Воспроизведи результаты с помощьюyolo detect val data=coco.yaml batch=1 device=0|cpu nms=False. - Значения Params и FLOPs указаны для объединённых моделей после свёртки Conv/BatchNorm и удаления неиспользуемой ветви обнаружения. Предварительно обученные контрольные точки сохраняют полную архитектуру обучения, поэтому их показатели могут быть выше.
Предварительные результаты обнаружения объектов на COCO см. в предварительной версии YOLO27, ещё не выпущенной.
Обучение#
Обучи YOLO26n на датасете COCO8 в течение 100 эпох с размером изображения 640. Полный список доступных аргументов см. на странице Конфигурация.
from ultralytics import YOLO
# Загрузить модель
model = YOLO("yolo26n.yaml") # создать новую модель из YAML
model = YOLO("yolo26n.pt") # загрузить предварительно обученную модель (рекомендуется для обучения)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # создать модель из YAML и перенести веса
# Обучить модель
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Полное описание режима train см. на странице Обучение. Модели обнаружения объектов также можно обучать с помощью облачного обучения на платформе Ultralytics.
Формат датасета#
Подробное описание формата датасета YOLO для обнаружения объектов приведено в руководстве по датасетам. Чтобы преобразовать существующий датасет COCO в формате JSON в формат YOLO, используй встроенную функцию convert_coco, описанную в руководстве по преобразованию COCO в YOLO. Также можно размечать датасеты для обнаружения объектов и управлять ими с помощью инструментов разметки с поддержкой ИИ на платформе Ultralytics.
Валидация#
Проверь точность обученной модели YOLO26n. Аргументы не нужны: model сохраняет параметры обучения data и аргументы как атрибуты модели; path/to/best.pt из примера Обучение выполняет проверку на COCO8. В официальных весах указан путь к датасету обучения, которого нет на твоём компьютере, поэтому вместо него используется датасет задачи по умолчанию coco8.yaml и выводится предупреждение. Передай data, чтобы проверить модель на другом датасете.
from ultralytics import YOLO
# Загрузить модель
model = YOLO("yolo26n.pt") # загрузить официальную модель
model = YOLO("path/to/best.pt") # загрузить пользовательскую модель
# Валидировать модель
metrics = model.val() # аргументы не нужны, набор данных и настройки сохранены
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # список значений mAP50-95 для каждой категории
metrics.box.image_metrics # словарь метрик для каждого изображения: precision, recall, F1, TP, FP и FNПредсказание#
Используй обученную модель YOLO26n, чтобы получить предсказания для изображений.
from ultralytics import YOLO
# Загрузить модель
model = YOLO("yolo26n.pt") # загрузить официальную модель
model = YOLO("path/to/best.pt") # загрузить пользовательскую модель
# Получи предсказания с помощью модели
results = model("https://ultralytics.com/images/bus.jpg") # получи предсказание для изображения
# Обратись к результатам
for result in results:
xywh = result.boxes.xywh # центр-x, центр-y, ширина, высота
xywhn = result.boxes.xywhn # normalized
xyxy = result.boxes.xyxy # левый верхний угол-x, левый верхний угол-y, правый нижний угол-x, правый нижний угол-y
xyxyn = result.boxes.xyxyn # normalized
names = [result.names[cls.item()] for cls in result.boxes.cls.int()] # название класса каждой рамки
confs = result.boxes.conf # оценка уверенности каждой рамкиПолное описание режима 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
# Загрузить модель
model = YOLO("yolo26n.pt") # загрузить официальную модель
model = YOLO("path/to/best.pt") # загрузить пользовательскую модель
# Экспортировать модель
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 |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, 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 |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, 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 |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
nms=None по умолчанию возвращает исходные выходные данные для внешней NMS. Укажи nms=False, чтобы выбрать доступную голову без NMS; неподдерживаемые форматы используют собственный путь вывода. Элементы nms выше обозначают форматы, в которые можно встроить NMS с помощью nms=True.
Полное описание export смотри на странице экспорта.
Часто задаваемые вопросы#
Да. В кратком руководстве по платформе Ultralytics описан рабочий процесс в браузере: разметка датасетов, обучение моделей обнаружения объектов на облачных GPU и развёртывание моделей в конечных точках инференса.
Обучение модели YOLO26 на собственном датасете состоит из нескольких шагов:
- Подготовь датасет: проверь, что датасет имеет формат YOLO. Инструкции см. в нашем руководстве по датасетам.
- Загрузи модель: используй библиотеку Ultralytics YOLO, чтобы загрузить предварительно обученную модель или создать новую модель из YAML-файла.
- Обучи модель: вызови метод
trainв Python или командуyolo detect trainв CLI.
Примерfrom ultralytics import YOLO # Загрузи предварительно обученную модель model = YOLO("yolo26n.pt") # Обучи модель на собственном датасете model.train(data="my_custom_dataset.yaml", epochs=100, imgsz=640)Подробные сведения о параметрах конфигурации см. на странице Конфигурация.
Ultralytics YOLO26 предлагает различные предварительно обученные модели для обнаружения объектов, сегментации экземпляров, семантической сегментации, оценки глубины, классификации, оценки позы и обнаружения объектов с ориентированными ограничивающими рамками. Эти модели предварительно обучены на датасете COCO, Cityscapes для семантической сегментации, смеси нескольких датасетов для оценки глубины, ImageNet для классификации или DOTAv1 для OBB. Вот некоторые из доступных моделей:
Подробный список и метрики производительности см. в разделе Модели.
Чтобы проверить точность обученной модели YOLO26, используй метод
.val()в Python или командуyolo detect valв CLI. В результате будут получены метрики, такие как mAP50-95, mAP50 и другие.Примерfrom ultralytics import YOLO # Загрузи модель model = YOLO("path/to/best.pt") # Валидировать модель metrics = model.val() print(metrics.box.map) # mAP50-95Подробности проверки см. на странице Проверка.
Ultralytics YOLO26 позволяет экспортировать модели в различные форматы, включая ONNX, TensorRT, CoreML и другие, обеспечивая совместимость с разными платформами и устройствами.
Примерfrom ultralytics import YOLO # Загрузи модель model = YOLO("yolo26n.pt") # Экспортировать модель в формат ONNX model.export(format="onnx")Полный список поддерживаемых форматов и инструкции см. на странице Экспорт.
Ultralytics YOLO26 создана для обеспечения передовой производительности при обнаружении объектов, сегментации экземпляров, семантической сегментации и оценке позы. Вот некоторые ключевые преимущества:
- Предварительно обученные модели: ускорь разработку, используя модели, предварительно обученные на популярных датасетах, таких как COCO и ImageNet.
- Высокая точность: модель демонстрирует высокие показатели mAP, обеспечивая надёжное обнаружение объектов.
- Скорость: модель оптимизирована для инференса в реальном времени и отлично подходит для приложений, требующих быстрой обработки данных.
- Гибкость: экспортируй модели в различные форматы, например ONNX и TensorRT, чтобы развёртывать их на разных платформах.
Примеры использования YOLO26 и истории успеха смотри в нашем блоге.