Экспорт моделей с Ultralytics YOLO
Введение
Конечной целью обучения модели является ее использование в реальных приложениях. Режим экспорта в Ultralytics YOLO11 предлагает широкий спектр возможностей для экспорта обученной модели в различные форматы, что делает ее пригодной для использования на различных платформах и устройствах. Это подробное руководство поможет вам разобраться в тонкостях экспорта моделей и покажет, как добиться максимальной совместимости и производительности.
Смотреть: Как экспортировать обученную модель Ultralytics YOLO и запустить ее в реальном времени на веб-камере.
Почему стоит выбрать режим экспорта YOLO11?
- Универсальность: Экспорт в различные форматы, включая ONNX, TensorRT, CoreMLи многое другое.
- Производительность: Ускорение до 5 раз GPU с помощью TensorRT и до 3 раз на CPU с помощью ONNX или OpenVINO.
- Совместимость: Сделайте свою модель универсальной для развертывания в различных аппаратных и программных средах.
- Простота использования: простые CLI и Python API для быстрого и удобного экспорта моделей.
Ключевые особенности режима экспорта
Вот некоторые из наиболее ярких функциональных возможностей:
- Экспорт в один клик: Простые команды для экспорта в различные форматы.
- Пакетный экспорт: Экспорт моделей, поддерживающих пакетный анализ.
- Оптимизированный вывод: Экспортируемые модели оптимизированы для ускорения вывода.
- Обучающие видеоролики: Подробные руководства и учебные пособия для беспроблемного экспорта.
Наконечник
Примеры использования
Экспортируйте модель YOLO11n в другой формат, например ONNX или TensorRT. Полный список аргументов экспорта см. в разделе "Аргументы" ниже.
Пример
Аргументы
В этой таблице подробно описаны конфигурации и опции, доступные для экспорта моделей 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 для экспорта моделей.
Пример
Более подробную информацию о процессе, включая дополнительные опции, такие как обработка различных размеров входных данных, см. в руководстве по интеграцииONNX .
Каковы преимущества использования TensorRT для экспорта моделей?
Использование TensorRT для экспорта моделей дает значительный прирост производительности. Модели, экспортированные в TensorRT с YOLO11 , ускоряются в 5 раз по сравнению с GPU , что делает их идеальными для приложений, работающих с выводами в реальном времени.
- Универсальность: Оптимизируйте модели под конкретную аппаратную конфигурацию.
- Скорость: Достигайте более быстрого вывода благодаря расширенным оптимизациям.
- Совместимость: Легко интегрируется с оборудованием NVIDIA .
Чтобы узнать больше об интеграции TensorRT, обратитесь к руководству по интеграцииTensorRT .
Как включить квантование INT8 при экспорте модели YOLO11 ?
Квантование INT8 - отличный способ сжать модель и ускорить вывод, особенно на граничных устройствах. Вот как можно включить квантование INT8:
Пример
Квантование INT8 может быть применено к различным форматам, таким как TensorRT, OpenVINO, и CoreML. Для получения оптимальных результатов квантования обеспечьте репрезентативность набор данных используя data
параметр.
Почему при экспорте моделей важен размер динамического ввода?
Динамический размер входных данных позволяет экспортируемой модели работать с изображениями разных размеров, обеспечивая гибкость и оптимизируя эффективность обработки для различных случаев использования. При экспорте в такие форматы, как ONNX или TensorRTвключение динамического размера входных данных гарантирует, что модель сможет легко адаптироваться к различным формам входных данных.
Чтобы включить эту функцию, используйте dynamic=True
флаг при экспорте:
Пример
Динамическое изменение размеров входных данных особенно полезно в приложениях, где размеры входных данных могут меняться, например, при обработке видео или изображений из разных источников.
Какие ключевые экспортные аргументы следует учитывать для оптимизации работы модели?
Понимание и настройка аргументов экспорта очень важны для оптимизации работы модели:
format:
Целевой формат экспортируемой модели (например,onnx
,torchscript
,tensorflow
).imgsz:
Желаемый размер изображения для входных данных модели (например,640
или(height, width)
).half:
Включает квантование FP16, уменьшая размер модели и потенциально ускоряя вывод.optimize:
Применяет специальные оптимизации для мобильных или ограниченных сред.int8:
Включает квантование INT8, что очень полезно для краевой ИИ развертывания.
Для развертывания на конкретных аппаратных платформах используйте специализированные форматы экспорта, например TensorRT для графических процессоров NVIDIA , CoreML для устройств Apple или Edge TPU для устройств Google Coral.