Перейти к содержимому

Экспорт моделей с 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', 'tensorflow', или другие, определяющие совместимость с различными средами развертывания.
imgszint или tuple640Желаемый размер изображения на входе модели. Может быть целым числом для квадратных изображений или кортежем (height, width) за конкретные размеры.
kerasboolFalseОбеспечивает экспорт в формат Keras для TensorFlow SavedModel, обеспечивая совместимость с сервисами и API TensorFlow .
optimizeboolFalseПрименяет оптимизацию для мобильных устройств при экспорте в TorchScript, потенциально уменьшая размер модели и улучшая производительность.
halfboolFalseВключает квантование FP16 (половинной точности), уменьшая размер модели и потенциально ускоряя вывод на поддерживаемом оборудовании.
int8boolFalseАктивирует квантование INT8, еще больше сжимая модель и ускоряя вывод с минимальной потерей точности, в первую очередь для краевых устройств.
dynamicboolFalseПозволяет динамически изменять размеры входных данных для экспорта ONNX, TensorRT и OpenVINO , повышая гибкость в работе с изображениями разных размеров.
simplifyboolTrueУпрощает построение графика модели для ONNX exports с помощью onnxslim, потенциально повышая производительность и совместимость.
opsetintNoneУказывает версию опенсета ONNX для совместимости с различными парсерами и режимами выполнения ONNX. Если не задано, используется последняя поддерживаемая версия.
workspacefloat4.0Устанавливает максимальный размер рабочего пространства в GiB для оптимизации TensorRT , балансируя между использованием памяти и производительностью.
nmsboolFalseДобавляет Non-Maximum Suppression (NMS) в экспорт CoreML, что необходимо для точной и эффективной постобработки детектирования.
batchint1Задает размер пакета вывода модели экспорта или максимальное количество изображений, которые экспортируемая модель будет обрабатывать одновременно в predict режим.
devicestrNoneУказывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для кремния Apple (device=mps) или DLA для NVIDIA Jetson (device=dla:0 или device=dla:1).

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

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

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

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

ВОПРОСЫ И ОТВЕТЫ

Как экспортировать модель 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 для экспорта моделей дает значительный прирост производительности. Модели YOLO11, экспортированные в TensorRT , ускоряются до 5 раз по сравнению с GPU , что делает их идеальными для приложений для выводов в реальном времени.

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

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

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

Квантование INT8 - отличный способ сжать модель и ускорить вывод, особенно на edge-устройствах. Вот как ты можешь включить квантование 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 и CoreML. Более подробную информацию можно найти в разделе "Экспорт".

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

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

Подробный список и объяснения всех аргументов экспорта ты найдешь в разделе "Аргументы экспорта".

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

Комментарии