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

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

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

Введение

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



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

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

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

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

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

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

Наконечник

  • Экспорт в ONNX или OpenVINO для ускорения до 3x CPU .
  • Экспорт в TensorRT для ускорения до 5x 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 в различные форматы. Эти настройки важны для оптимизации производительности, размера и совместимости экспортированной модели на различных платформах и в различных средах. Правильная настройка гарантирует, что модель будет готова к развертыванию в предполагаемом приложении с оптимальной эффективностью.

Аргумент Тип По умолчанию Описание
format str 'torchscript' Целевой формат экспортируемой модели, например 'onnx', 'torchscript', 'engine' TensorRT) и другие. Каждый формат обеспечивает совместимость с различными среды развертывания.
imgsz int или tuple 640 Желаемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений (например, 640 для 640×640) или кортеж (height, width) для получения конкретных размеров.
keras bool False Обеспечивает экспорт в формат Keras для TensorFlow SavedModel обеспечивая совместимость с сервисами и API TensorFlow .
optimize bool False Применяет оптимизацию для мобильных устройств при экспорте в TorchScript, потенциально уменьшая размер модели и улучшая производительность вывода. Не совместим с форматом NCNN или устройствами с CUDA .
half bool False Включает квантование FP16 (половина точности), уменьшая размер модели и потенциально ускоряя вывод на поддерживаемом оборудовании. Не совместимо с квантованием INT8 или экспортом CPU для ONNX.
int8 bool False Активирует квантование INT8, еще больше сжимая модель и ускоряя вывод с минимальной потерей точности, в первую очередь для устройств на границе. При использовании с TensorRT выполняет квантование после обучения (PTQ).
dynamic bool False Позволяет динамически изменять размеры входных данных при экспорте в ONNX, TensorRT и OpenVINO , что повышает гибкость при работе с изображениями разных размеров. Автоматически устанавливается на True при использовании TensorRT с INT8.
simplify bool True Упрощает граф модели для экспорта ONNX с onnxslimчто потенциально улучшает производительность и совместимость с механизмами вывода.
opset int None Указывает версию опсета ONNX для совместимости с различными ONNX парсерами и программами выполнения. Если не задано, используется последняя поддерживаемая версия.
workspace float или None None Устанавливает максимальный размер рабочей области в гигабайтах для TensorRT оптимизация, позволяющая сбалансировать использование памяти и производительность. Используйте None для автоматического распределения по адресу TensorRT до максимального значения устройства.
nms bool False Добавляет в экспортируемую модель подавление без максимума (NMS), если оно поддерживается (см. раздел "Форматы экспорта"), повышая эффективность постобработки обнаружения. Недоступно для моделей end2end.
batch int 1 Указывает размер пакетного вывода экспортной модели или максимальное количество изображений, которые экспортируемая модель будет обрабатывать одновременно в predict режим. Для экспорта Edge TPU это значение автоматически устанавливается на 1.
device str None Указывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для кремния Apple (device=mps) или DLA для NVIDIA Jetson (device=dla:0 или device=dla:1). Экспорт TensorRT автоматически использует GPU.
data str 'coco8.yaml' Путь к набор данных файл конфигурации (по умолчанию: coco8.yaml), необходимый для калибровки квантования INT8. Если при включенном INT8 он не указан, будет назначен набор данных по умолчанию.

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

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

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

Формат format Аргумент Модель Метаданные Аргументы
PyTorch - yolo11n.pt -
TorchScript torchscript yolo11n.torchscript imgsz, optimize, nms, batch
ONNX onnx yolo11n.onnx imgsz, half, dynamic, simplify, opset, nms, batch
OpenVINO openvino yolo11n_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data
TensorRT engine yolo11n.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data
CoreML coreml yolo11n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n_saved_model/ imgsz, keras, int8, nms, batch
TF GraphDef pb yolo11n.pb imgsz, batch
TF Lite tflite yolo11n.tflite imgsz, half, int8, nms, batch, data
TF Край TPU edgetpu yolo11n_edgetpu.tflite imgsz
TF.js tfjs yolo11n_web_model/ imgsz, half, int8, nms, batch
PaddlePaddle paddle yolo11n_paddle_model/ imgsz, batch
MNN mnn yolo11n.mnn imgsz, batch, int8, half
NCNN ncnn yolo11n_ncnn_model/ imgsz, half, batch
IMX500 imx yolov8n_imx_model/ imgsz, int8, data
RKNN rknn yolo11n_rknn_model/ imgsz, batch, name

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

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

Экспорт модели YOLO11 в формат ONNX легко выполняется с помощью 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 для экспорта моделей дает значительный прирост производительности. Модели, экспортированные в TensorRT с YOLO11 , ускоряются в 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. Для получения оптимальных результатов квантования обеспечьте репрезентативность набор данных используя 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, что очень полезно для краевой ИИ развертывания.

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

📅 Создано 1 год назад ✏️ Обновлено 3 дня назад

Комментарии