Ultralytics YOLO27:

Тестирование производительности моделей с Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Визуализация результатов тестирования#

Введение#

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

Смотри невыпущенный предварительный обзор YOLO27 для предварительных тестов скорости.



Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?

Почему тестирование производительности имеет решающее значение?#

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

Ключевые метрики в режиме тестирования#

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

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

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

Рекомендуемая установка

Установи Ultralytics с зависимостями экспорта перед началом тестирования, чтобы избежать отсутствия пакетов.

pip install ultralytics[export]

Запусти тесты производительности YOLO26n для всех поддерживаемых форматов экспорта (ONNX, TensorRT и др.). Полный список параметров экспорта см. в разделе «Аргументы» ниже.

Пример
from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

# Benchmark specific export format
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")

Аргументы#

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

КлючЗначение по умолчаниюОписание
modelNoneЗадает путь к файлу модели. Принимает форматы как .pt, так и .yaml, например "yolo26n.pt" для предобученных моделей или файлов конфигурации.
dataNoneПуть к YAML-файлу датасета для тестирования производительности, обычно включающий пути и настройки для данных валидации. Пример: "coco8.yaml". Для классификации вместо этого указывается каталог датасета или встроенное имя датасета (например, imagenet10).
imgsz640Размер входного изображения для модели. Должен быть одним целым числом для квадратных изображений (например, 640); benchmark() поддерживает только квадратные размеры изображений.
quantizeNoneЗапрошенная точность: 16 (FP16) или 8 (INT8; схемы PTQ требуют калибровки data/fraction, а схемы только с весами — нет); 32/не задано — это FP32, если формат его поддерживает. Формат, который не может экспортировать FP32, отклоняет явный 32 или возвращается к требуемой точности. Родная строка PyTorch не экспортируется: на нее влияет только 16, выбирающий инференс FP16, в то время как 8, 32 и значение по умолчанию выполняют инференс FP32. Каждый формат затем выполняет инференс с собственной точностью во время выполнения. Заменяет устаревшие флаги half/int8.
device'cpu'Определяет устройство (или устройства) вычислений для тестирования производительности, например "cpu" или "cuda:0".
verboseFalseУправляет уровнем детализации вывода логов. Установи verbose=True для подробных логов.
eps0.001Небольшое эпсилон-значение (в миллисекундах), добавляемое ко времени инференса для каждого изображения перед его конвертацией в FPS, что предотвращает деление на ноль. Изменяется редко.
format''Тестирует только указанный формат экспорта (например, format=onnx). Оставь это поле пустым для автоматического тестирования каждого поддерживаемого формата.
Значения по умолчанию для автономной функции `benchmark()`

Автономная функция benchmark() (from ultralytics.utils.benchmarks import benchmark) использует собственные значения по умолчанию вместо значений из таблицы выше, в частности model="yolo26n.pt" и imgsz=160; передай imgsz явно, чтобы соответствовать интерфейсу командной строки yolo benchmark.

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

Тесты попытаются запуститься автоматически для всех возможных форматов экспорта, перечисленных ниже. Альтернативно ты можешь запустить тесты для конкретного формата, используя аргумент format, который принимает любой из упомянутых ниже форматов.

ФорматАргумент formatМодельМетаданныеАргументы
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/imgsz, batch, device
MNNmnnyolo26n.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms
Apple Core AIcoreaiyolo26n.aimodelimgsz, batch, quantize

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

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

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

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

    Пример
    from ultralytics.utils.benchmarks import benchmark
    
    # Benchmark on GPU
    benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

    Для получения дополнительной информации об аргументах тестирования посети раздел Аргументы.

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

    • ONNX: Обеспечивает ускорение работы на CPU до 3 раз.
    • TensorRT: Предлагает ускорение работы на GPU до 5 раз.
    • OpenVINO: Специально оптимизирован для оборудования Intel.

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

  • Тестирование производительности твоих моделей YOLO26 необходимо по нескольким причинам:

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

    Ключевые метрики, такие как mAP50-95, точность Top-1 и время инференса, помогают в проведении этих оценок. Обратись к разделу Ключевые метрики для получения дополнительной информации.

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

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

    Полный список поддерживаемых форматов и их преимуществ ты найдешь в разделе Поддерживаемые форматы экспорта.

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

    • model: Путь к файлу модели (например, "yolo26n.pt").
    • data: Путь к YAML-файлу датасета (например, "coco8.yaml"); для классификации вместо этого указывается каталог датасета или встроенное имя датасета (например, imagenet10).
    • imgsz: Размер квадратного входного изображения в виде единого целого числа, например 640. Режим тестирования использует одинаковый размер квадратного изображения в PyTorch и экспортированных форматах для справедливого сравнения.
    • quantize: Запрошенная точность: 16 для FP16, 8 для INT8 (полезно для периферийных устройств); 32/не задано — это FP32, если формат его поддерживает. Формат, который не может экспортировать FP32, отклоняет явный 32 или возвращается к требуемой точности. Родная строка PyTorch не экспортируется: на нее влияет только 16, выбирающий инференс FP16, в то время как 8, 32 и значение по умолчанию выполняют инференс FP32. Каждый формат затем выполняет инференс с собственной точностью во время выполнения.
    • device: Укажи устройство вычислений (например, "cpu", "cuda:0").
    • verbose: Управляй уровнем детализации логов.

    Полный список аргументов смотри в разделе Аргументы.

Комментарии