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

Экспорт моделей с 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 в различные форматы. Эти настройки имеют решающее значение для оптимизации производительности, размера и совместимости экспортируемой модели на различных платформах и в различных средах. Правильная конфигурация гарантирует, что модель готова к развертыванию в предполагаемом приложении с оптимальной эффективностью.

Аргумент Тип По умолчанию Описание
format str 'torchscript' Целевой формат для экспортируемой модели, такой как 'onnx', 'torchscript', 'engine' (TensorRT) или другие. Каждый формат обеспечивает совместимость с различными среды развертывания.
imgsz int или tuple 640 Желаемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений (например, 640 для 640×640) или кортеж (height, width) для конкретных размеров.
keras bool False Включает экспорт в формат Keras для TensorFlow SavedModel, обеспечивая совместимость с TensorFlow Serving и API.
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 opset для совместимости с различными ONNX парсерами и средами выполнения. Если не задано, используется последняя поддерживаемая версия.
workspace float или None None Устанавливает максимальный размер рабочего пространства в GiB для TensorRT оптимизации, балансируя использование памяти и производительность. Используйте None для автоматического выделения TensorRT до максимального значения устройства.
nms bool False Добавляет Non-Maximum Suppression (NMS) в экспортируемую модель, когда это поддерживается (см. Форматы экспорта), повышая эффективность постобработки обнаружения. Недоступно для end2end моделей.
batch int 1 Указывает размер пакета для инференса экспортной модели или максимальное количество изображений, которые экспортная модель будет обрабатывать одновременно в predict режим. Для экспорта Edge TPU это автоматически устанавливается в 1.
device str None Указывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps) или DLA для NVIDIA Jetson (device=dla:0 или device=dla:1). TensorRT экспортирует данные автоматически с использованием GPU.
data str 'coco8.yaml' Путь к dataset файл конфигурации (по умолчанию: 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 Edge 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 yolo11n_imx_model/ imgsz, int8, data, fraction, device
RKNN rknn yolo11n_rknn_model/ imgsz, batch, name, 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.



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

Комментарии