Перейти к содержимому

Бенчмаркинг моделей с Ultralytics YOLO

Ultralytics YOLO Экосистема и интеграции

Введение

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



Смотри: Ultralytics Самоучитель по режимам: Бенчмарк

Почему бенчмаркинг крайне важен?

  • Принятие обоснованных решений: Узнай о компромиссе между скоростью и точностью.
  • Распределение ресурсов: Пойми, как разные форматы экспорта работают на разном оборудовании.
  • Оптимизация: Узнай, какой формат экспорта обеспечивает наилучшую производительность для твоего конкретного случая использования.
  • Экономическая эффективность: Более эффективно используй аппаратные ресурсы, основываясь на результатах бенчмарков.

Ключевые показатели в режиме бенчмарка

  • mAP50-95: Для обнаружения объектов, сегментации и оценки позы.
  • accuracy_top5: Для классификации изображений.
  • Время вывода: время, затрачиваемое на каждое изображение, в миллисекундах.

Поддерживаемые форматы экспорта

  • ONNX: Для оптимальной работы CPU
  • TensorRT: Для максимальной эффективности GPU
  • OpenVINO: Для оптимизации аппаратного обеспечения Intel
  • CoreML, TensorFlow SavedModel , и многое другое: Для различных потребностей в развертывании.

Наконечник

  • Экспортируй в ONNX или OpenVINO , чтобы ускорить работу с CPU в 3 раза.
  • Экспортируй в TensorRT для ускорения до 5 раз GPU .

Примеры использования

Запускай бенчмарки YOLOv8n на всех поддерживаемых форматах экспорта, включая ONNX, TensorRT и другие. Полный список аргументов для экспорта смотри в разделе "Аргументы" ниже.

Пример

from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0

Аргументы

Такие аргументы, как model, data, imgsz, half, device, и verbose предоставляют пользователям гибкость, позволяющую тонко настраивать бенчмарки под свои конкретные нужды и с легкостью сравнивать производительность разных форматов экспорта.

Ключ Значение по умолчанию Описание
model None Указывает путь к файлу модели. Принимает оба варианта .pt и .yaml Форматы, например, "yolov8n.pt" для предварительно обученных моделей или конфигурационных файлов.
data None Путь к YAML-файлу, определяющему набор данных для бенчмарка, обычно включающий пути и настройки для валидационных данных. Пример: "coco8.yaml".
imgsz 640 Размер входного изображения для модели. Может быть одним целым числом для квадратных изображений или кортежем (width, height) для неквадратных, например, (640, 480).
half False Включает вычисления FP16 (с половинной точностью), что уменьшает потребление памяти и, возможно, увеличивает скорость на совместимом оборудовании. Используй half=True чтобы включить.
int8 False Активирует квантование INT8 для дальнейшей оптимизации производительности на поддерживаемых устройствах, особенно полезно для edge-устройств. Установи int8=True использовать.
device None Определяет вычислительное устройство (устройства) для бенчмарка, например "cpu", "cuda:0", или список устройств, например "cuda:0,1" для мультиGPU установок.
verbose False Управляет уровнем детализации вывода логов. Булево значение; устанавливается verbose=True для подробных логов или float для пороговых ошибок.

Форматы экспорта

Бенчмарки попытаются автоматически запуститься на всех возможных форматах экспорта, приведенных ниже.

Формат format Аргумент Модель Метаданные Аргументы
PyTorch - yolov8n.pt -
TorchScript torchscript yolov8n.torchscript imgsz, optimize, batch
ONNX onnx yolov8n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolov8n.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolov8n.pb imgsz, batch
TF Lite tflite yolov8n.tflite imgsz, half, int8, batch
TF Край TPU edgetpu yolov8n_edgetpu.tflite imgsz
TF.js tfjs yolov8n_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n_paddle_model/ imgsz, batch
NCNN ncnn yolov8n_ncnn_model/ imgsz, half, batch

Смотреть полностью export подробности в Экспорт Страница.

ВОПРОСЫ И ОТВЕТЫ

Как провести сравнительный анализ производительности моей модели YOLOv8 с помощью Ultralytics?

Ultralytics YOLOv8 предлагает режим Benchmark для оценки производительности твоей модели в разных форматах экспорта. Этот режим позволяет получить представление о таких ключевых метриках, как средняя точность (mAP50-95), точность и время вывода в миллисекундах. Чтобы запустить бенчмарки, ты можешь использовать команды Python или CLI . Например, для бенчмарка на GPU:

Пример

from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0

Подробнее об аргументах бенчмарка читай в разделе " Аргументы ".

В чем преимущества экспорта моделей YOLOv8 в разные форматы?

Экспорт моделей YOLOv8 в различные форматы, такие как ONNX, TensorRT и OpenVINO , позволяет тебе оптимизировать производительность в зависимости от среды развертывания. Например:

  • ONNX: Обеспечивает ускорение до 3х CPU .
  • TensorRT: Обеспечивает ускорение до 5x GPU .
  • OpenVINO: Специально оптимизирован для аппаратного обеспечения Intel . Эти форматы повышают как скорость, так и точность твоих моделей, делая их более эффективными для различных реальных приложений. Посети страницу экспорта для получения полной информации.

Почему бенчмаркинг крайне важен для оценки моделей YOLOv8 ?

Бенчмаркинг твоих моделей YOLOv8 необходим по нескольким причинам:

  • Принятие обоснованных решений: Пойми компромисс между скоростью и точностью.
  • Распределение ресурсов: Оцени производительность при различных вариантах аппаратного обеспечения.
  • Оптимизация: Определи, какой формат экспорта обеспечивает наилучшую производительность для конкретных случаев использования.
  • Экономическая эффективность: Оптимизируй использование аппаратного обеспечения, основываясь на результатах бенчмарков. Такие ключевые метрики, как mAP50-95, точность Top-5 и время вывода, помогают в проведении этих оценок. За дополнительной информацией обращайся к разделу " Ключевые метрики ".

Какие форматы экспорта поддерживает YOLOv8, и в чем их преимущества?

YOLOv8 поддерживает множество форматов экспорта, каждый из которых адаптирован под конкретное оборудование и случаи использования:

  • ONNX: Лучше всего подходит для производительности CPU .
  • TensorRT: Идеально подходит для GPU эффективности.
  • OpenVINO: Оптимизирован для оборудования Intel .
  • CoreML & TensorFlow: Полезен для iOS и общих ML-приложений. Полный список поддерживаемых форматов и их соответствующие преимущества ты найдешь в разделе " Поддерживаемые форматы экспорта ".

Какие аргументы я могу использовать для точной настройки бенчмарков YOLOv8 ?

При запуске бенчмарков несколько аргументов можно настроить под конкретные нужды:

  • model: Путь к файлу модели (например, "yolov8n.pt").
  • data: Путь к YAML-файлу, определяющему набор данных (например, "coco8.yaml").
  • imgsz: Размер входного изображения, либо в виде одного целого числа, либо в виде кортежа.
  • половина: Включи вывод FP16, чтобы повысить производительность.
  • int8: Активируй квантование INT8 для краевых устройств.
  • device: Укажи вычислительное устройство (например, "cpu", "cuda:0 ").
  • verbose: Управляй уровнем детализации ведения журнала. Полный список аргументов смотри в разделе " Аргументы ".


Создано 2023-11-12, Обновлено 2024-07-04
Авторы: glenn-jocher (18), Burhan-Q (3), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)

Комментарии