Тестирование производительности моделей с помощью Ultralytics YOLO#
Визуализация тестов#
Введение#
Когда твоя модель обучена и проверена, следующим логическим шагом будет оценка её производительности в различных реальных сценариях. Режим Benchmark в Ultralytics YOLO26 служит этой цели, предоставляя надежный фреймворк для оценки скорости и accuracy твоей модели в различных форматах экспорта.
Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?
Почему тестирование так важно?#
- Обоснованные решения: Получай представление о компромиссах между скоростью и точностью.
- Распределение ресурсов: Понимай, как различные форматы экспорта работают на разном оборудовании.
- Оптимизация: Узнай, какой формат экспорта обеспечивает наилучшую производительность для твоего конкретного случая использования.
- Экономическая эффективность: Эффективнее используй аппаратные ресурсы на основе результатов тестирования.
Основные метрики в режиме тестирования#
- mAP50-95: Для object detection, сегментации и оценки позы.
- accuracy_top1: Для image classification.
- Время вывода: Время, затраченное на каждое изображение, в миллисекундах.
Поддерживаемые форматы экспорта#
- 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, дают тебе гибкость для точной настройки бенчмарков под твои конкретные нужды и легкого сравнения производительности различных форматов экспорта.
| Ключ | Значение по умолчанию | Описание |
|---|---|---|
model | None | Указывает путь к файлу модели. Принимает форматы .pt и .yaml, например, "yolo26n.pt" для предобученных моделей или файлов конфигурации. |
data | None | Путь к файлу YAML датасета для бенчмаркинга, обычно включающий пути и настройки для validation data. Пример: "coco8.yaml". Для классификации вместо этого используется каталог датасета или встроенное имя датасета (например, imagenet10). |
imgsz | 640 | Размер входного изображения для модели. Должен быть одним целым числом для квадратных изображений (например, 640); benchmark() поддерживает только квадратные размеры изображений. |
quantize | None | Точность квантования: 16 (FP16) или 8 (INT8/PTQ; требуется калибровка data/fraction); 32/не задано — это FP32. Заменяет устаревшие флаги half/int8. |
device | 'cpu' | Определяет вычислительное устройство (или устройства) для бенчмаркинга, такие как "cpu" или "cuda:0". |
verbose | False | Управляет уровнем детализации в выводе логирования. Установи verbose=True для подробных логов. |
eps | 0.001 | Малое эпсилон (в миллисекундах), добавляемое к времени инференса на одно изображение перед конвертацией в FPS, для предотвращения деления на ноль. Меняется редко. |
format | '' | Тестирует только указанный формат экспорта (например, format=onnx). Оставь поле пустым, чтобы протестировать каждый поддерживаемый формат автоматически. |
Автономная функция benchmark() (from ultralytics.utils.benchmarks import benchmark) использует свои собственные значения сигнатуры по умолчанию вместо значений таблицы выше, в частности model="yolo26n.pt" и imgsz=160; передай imgsz явно, чтобы соответствовать CLI yolo benchmark.
Форматы экспорта#
Бенчмарки попытаются запуститься автоматически на всех возможных форматах экспорта, перечисленных ниже. Альтернативно ты можешь запустить бенчмарки для конкретного формата, используя аргумент format, который принимает любой из упомянутых ниже форматов.
| Формат | Аргумент 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 |
Смотри полную информацию об export на странице Экспорт.
FAQ#
Ultralytics YOLO26 предлагает режим Benchmark для оценки производительности твоей модели в различных форматах экспорта. Этот режим дает представление о ключевых метриках, таких как mean Average Precision (mAP50-95), точность и время инференса в миллисекундах. Чтобы запустить бенчмарки, ты можешь использовать Python или команды CLI. Например, для запуска бенчмарка на GPU:
Примерfrom ultralytics.utils.benchmarks import benchmark # Benchmark on GPU benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)Для получения более подробной информации об аргументах бенчмарка посети раздел Arguments.
Экспорт моделей YOLO26 в различные форматы, такие как ONNX, TensorRT и OpenVINO, позволяет оптимизировать производительность в зависимости от твоего среды развертывания. Например:
- ONNX: Обеспечивает ускорение CPU до 3 раз.
- TensorRT: Предлагает ускорение GPU до 5 раз.
- OpenVINO: Специально оптимизирован для оборудования Intel.
Эти форматы повышают как скорость, так и точность твоих моделей, делая их более эффективными для различных реальных приложений. Посети страницу Export для получения полных сведений.
Бенчмаркинг моделей YOLO26 необходим по нескольким причинам:
- Принятие взвешенных решений: Понимание баланса между скоростью и точностью.
- Распределение ресурсов: Оценка производительности на различных вариантах оборудования.
- Оптимизация: Определение формата экспорта с лучшей производительностью для конкретных случаев использования.
- Экономическая эффективность: Оптимизация использования оборудования на основе результатов бенчмарков.
Ключевые метрики, такие как mAP50-95, Top-1 accuracy и время инференса, помогают в проведении этих оценок. Обратись к разделу Key Metrics для получения дополнительной информации.
YOLO26 поддерживает множество форматов экспорта, каждый из которых адаптирован под конкретное оборудование и задачи:
- ONNX: Лучший выбор для производительности CPU.
- TensorRT: Идеально подходит для эффективности GPU.
- OpenVINO: Оптимизирован для оборудования Intel.
- CoreML & TensorFlow: Полезно для iOS и общих приложений машинного обучения.
Полный список поддерживаемых форматов и их преимуществ ты найдешь в разделе Supported Export Formats.
При запуске бенчмарков можно настроить несколько аргументов в соответствии с твоими потребностями:
- model: Путь к файлу модели (например, "yolo26n.pt").
- data: Путь к YAML-файлу датасета (например,
"coco8.yaml"); для классификации вместо этого указывается каталог датасета или встроенное имя датасета (например,imagenet10). - imgsz: Размер квадратного входного изображения в виде единого целого числа, такого как
640. Режим Benchmark использует одинаковый размер квадратного изображения в PyTorch и экспортированных форматах для честного сравнения. - quantize: Точность квантования:
16для FP16,8для INT8 (полезно для периферийных устройств);32/не задано — это FP32. - device: Указание вычислительного устройства (например, "cpu", "cuda:0").
- verbose: Управление уровнем детализации логирования.
Полный список аргументов смотри в разделе Arguments.