Экспорт моделей с Ultralytics YOLO
Введение
Конечная цель обучения модели — развернуть ее для реальных приложений. Режим экспорта в Ultralytics YOLO11 предлагает широкий спектр опций для экспорта обученной модели в различные форматы, что позволяет развертывать ее на различных платформах и устройствах. Это подробное руководство призвано познакомить вас с нюансами экспорта моделей, демонстрируя, как добиться максимальной совместимости и производительности.
Смотреть: Как экспортировать пользовательскую обученную модель Ultralytics YOLO и запустить логический вывод в реальном времени на веб-камере.
Почему стоит выбрать режим экспорта YOLO11?
- Универсальность: Экспорт во множество форматов, включая ONNX, TensorRT, CoreML и другие.
- Производительность: Получите до 5-кратного ускорения GPU с TensorRT и 3-кратного ускорения CPU с ONNX или OpenVINO.
- Совместимость: Сделайте свою модель универсально развертываемой в многочисленных аппаратных и программных средах.
- Простота использования: Простой CLI и Python API для быстрой и понятной экспорт модели.
Основные характеристики режима экспорта
Вот некоторые из выдающихся функциональных возможностей:
- Экспорт в один клик: Простые команды для экспорта в различные форматы.
- Пакетный экспорт: Экспорт моделей, поддерживающих пакетный вывод.
- Оптимизированный вывод: Экспортированные модели оптимизированы для более быстрого времени вывода.
- Обучающие видео: Подробные руководства и учебные пособия для упрощения процесса экспорта.
Совет
Примеры использования
Экспортируйте модель 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.