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

Экспорт моделей с 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 он не указан, будет назначен набор данных по умолчанию.
fraction float 1.0 Указывает долю набора данных, которую следует использовать для калибровки квантования INT8. Позволяет проводить калибровку по подмножеству полного набора данных, что полезно для экспериментов или при ограниченных ресурсах. Если не задано при включенном INT8, будет использоваться полный набор данных.

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

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

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

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

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

Как экспортировать модель 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 год назад ✏️ Обновлено 2 месяца назад

Комментарии