Перейти к содержанию

Экспорт моделей с Ultralytics YOLO

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

Введение

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



Смотреть: Как экспортировать пользовательскую обученную модель Ultralytics YOLO и запустить логический вывод в реальном времени на веб-камере.

Почему стоит выбрать режим экспорта YOLO11?

  • Универсальность: Экспорт во множество форматов, включая ONNX, TensorRT, CoreML и другие.
  • Производительность: Получите до 5-кратного ускорения GPU с TensorRT и 3-кратного ускорения CPU с ONNX или OpenVINO.
  • Совместимость: Сделайте свою модель универсально развертываемой в многочисленных аппаратных и программных средах.
  • Простота использования: Простой CLI и Python API для быстрой и понятной экспорт модели.

Основные характеристики режима экспорта

Вот некоторые из выдающихся функциональных возможностей:

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

Совет

  • Экспортируйте в ONNX или OpenVINO для 3-кратного ускорения CPU.
  • Экспортируйте в TensorRT для 5-кратного ускорения GPU.

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

Экспортируйте модель YOLO11n в другой формат, например ONNX или TensorRT. Полный список аргументов экспорта см. в разделе «Аргументы» ниже.

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo11n.pt format=onnx      # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model

Аргументы

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

АргументТипПо умолчаниюОписание
formatstr'torchscript'Целевой формат для экспортируемой модели, такой как 'onnx', 'torchscript', 'engine' (TensorRT) или другие. Каждый формат обеспечивает совместимость с различными среды развертывания.
imgszint или tuple640Желаемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений (например, 640 для 640×640) или кортеж (height, width) для конкретных размеров.
kerasboolFalseВключает экспорт в формат Keras для TensorFlow SavedModel, обеспечивая совместимость с TensorFlow Serving и API.
optimizeboolFalseПрименяет оптимизацию для мобильных устройств при экспорте в TorchScript, что потенциально снижает размер модели и повышает производительность инференса. Не совместимо с форматом NCNN или устройствами CUDA.
halfboolFalseВключает квантование FP16 (половина точности), уменьшая размер модели и потенциально ускоряя вывод на поддерживаемом оборудовании. Не совместимо с квантованием INT8 или экспортом CPU. Доступно только для некоторых форматов, например ONNX (см. ниже).
int8boolFalseАктивирует квантование INT8, дополнительно сжимая модель и ускоряя логический вывод с минимальной потерей точности, в основном для периферийных устройств. При использовании с TensorRT выполняет квантование после обучения (PTQ).
dynamicboolFalseПозволяет динамически изменять размеры входных данных при экспорте в ONNX, TensorRT и OpenVINO , что повышает гибкость при работе с изображениями разных размеров. Автоматически устанавливается на True при использовании TensorRT с INT8.
simplifyboolTrueУпрощает граф модели для экспорта ONNX с помощью onnxslim, потенциально улучшая производительность и совместимость с механизмами логического вывода.
opsetintNoneУказывает версию ONNX opset для совместимости с различными ONNX парсерами и средами выполнения. Если не задано, используется последняя поддерживаемая версия.
workspacefloat или NoneNoneУстанавливает максимальный размер рабочего пространства в GiB для TensorRT оптимизации, балансируя использование памяти и производительность. Используйте None для автоматического выделения TensorRT до максимального значения устройства.
nmsboolFalseДобавляет Non-Maximum Suppression (NMS) в экспортируемую модель, когда это поддерживается (см. Форматы экспорта), повышая эффективность постобработки обнаружения. Недоступно для end2end моделей.
batchint1Указывает размер пакета для инференса экспортной модели или максимальное количество изображений, которые экспортная модель будет обрабатывать одновременно в predict режим. Для экспорта Edge TPU это автоматически устанавливается в 1.
devicestrNoneУказывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps) или DLA для NVIDIA Jetson (device=dla:0 или device=dla:1). TensorRT экспортирует данные автоматически с использованием GPU.
datastr'coco8.yaml'Путь к dataset файл конфигурации (по умолчанию: coco8.yaml), необходимые для калибровки квантования INT8. Если не указан с включенным INT8, будет назначен набор данных по умолчанию.
fractionfloat1.0Указывает долю набора данных, используемую для калибровки квантования INT8. Позволяет проводить калибровку на подмножестве полного набора данных, что полезно для экспериментов или при ограниченности ресурсов. Если не указано при включенном INT8, будет использован полный набор данных.

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

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

Доступные форматы экспорта YOLO11 указаны в таблице ниже. Вы можете экспортировать в любой формат, используя format аргумент, например: format='onnx' или format='engine'. Вы можете прогнозировать или проверять непосредственно на экспортированных моделях, например: yolo predict model=yolo11n.onnx. Примеры использования отображаются для вашей модели после завершения экспорта.

Форматformat АргументМодельМетаданныеАргументы
PyTorch-yolo11n.pt-
TorchScripttorchscriptyolo11n.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo11n.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo11n_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo11n.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo11n.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo11n_saved_model/imgsz, keras, int8, nms, batch, device
TF GraphDefpbyolo11n.pbimgsz, batch, device
TF Litetfliteyolo11n.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo11n_edgetpu.tfliteimgsz, device
TF.jstfjsyolo11n_web_model/imgsz, half, int8, nms, batch, device
PaddlePaddlepaddleyolo11n_paddle_model/imgsz, batch, device
MNNmnnyolo11n.mnnimgsz, batch, int8, half, device
NCNNncnnyolo11n_ncnn_model/imgsz, half, batch, device
IMX500imxyolo11n_imx_model/imgsz, int8, data, fraction, device
RKNNrknnyolo11n_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo11n_executorch_model/imgsz, device

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

Как экспортировать модель YOLO11 в формат ONNX?

Экспорт модели YOLO11 в формат ONNX с помощью Ultralytics — простая задача. Ultralytics предоставляет методы python и CLI для экспорта моделей.

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo11n.pt format=onnx      # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model

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

Каковы преимущества использования TensorRT для экспорта моделей?

Использование TensorRT для экспорта модели обеспечивает значительное повышение производительности. Модели YOLO11, экспортированные в TensorRT, могут достигать 5-кратного ускорения на GPU, что делает его идеальным для приложений логического вывода в реальном времени.

  • Универсальность: Оптимизируйте модели для конкретной аппаратной конфигурации.
  • Скорость: Добейтесь более быстрого логического вывода благодаря расширенным оптимизациям.
  • Совместимость: Обеспечьте плавную интеграцию с оборудованием NVIDIA.

Чтобы узнать больше об интеграции TensorRT, см. руководство по интеграции TensorRT.

Как включить квантование INT8 при экспорте моей модели YOLO11?

Квантование INT8 — отличный способ сжать модель и ускорить логический вывод, особенно на периферийных устройствах. Вот как можно включить квантование INT8:

Пример

from ultralytics import YOLO

model = YOLO("yolo11n.pt")  # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo11n.pt format=engine int8=True # export TensorRT model with INT8 quantization

Квантование INT8 может быть применено к различным форматам, таким как TensorRT, OpenVINOи CoreML. Для достижения оптимальных результатов квантования предоставьте репрезентативный dataset использование data параметр.

Почему динамический размер входных данных важен при экспорте моделей?

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

Чтобы включить эту функцию, используйте флаг dynamic=True во время экспорта:

Пример

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolo11n.pt format=onnx dynamic=True

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

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

Понимание и настройка аргументов экспорта имеют решающее значение для оптимизации производительности модели:

  • format: Целевой формат для экспортируемой модели (например, onnx, torchscript, tensorflow).
  • imgsz: Желаемый размер изображения для ввода модели (например, 640 или (height, width)).
  • half: Включает квантование FP16, уменьшая размер модели и потенциально ускоряя логический вывод.
  • optimize: Применяет специальные оптимизации для мобильных или ограниченных сред.
  • int8: Включает квантование INT8, что очень полезно для периферийный AI развертывания.

Для развертывания на конкретных аппаратных платформах рассмотрите возможность использования специализированных форматов экспорта, таких как TensorRT для NVIDIA GPU, CoreML для устройств Apple или Edge TPU для устройств Google Coral.



📅 Создано 2 года назад ✏️ Обновлено 8 месяцев назад
glenn-jocherBurhan-QUltralyticsAssistantambitious-octopusKayzwerY-T-Gjk4eMatthewNoyceRizwanMunawar

Комментарии