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

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

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

Введение

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



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

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

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

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

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

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

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

Наконечник

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

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

Запусти бенчмарки 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-файлу, определяющему набор данных для бенчмарка, обычно включающий пути и настройки для валидационных данных. Пример: "coco128.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" для многопроцессорных установок.
verbose False Управляет уровнем детализации вывода логов. Булево значение; устанавливается verbose=True для подробных логов или float для пороговых ошибок.

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

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

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

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



Создано 2023-11-12, Обновлено 2024-03-01
Авторы: glenn-jocher (10), chr043416@gmail.com (1), Laughing-q (1), maianumerosky (1)

Комментарии