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

Экспорт TensorRT для моделей YOLO11

Развертывание моделей компьютерного зрения в высокопроизводительных средах может потребовать формат, который максимизирует скорость и эффективность. Это особенно актуально при развертывании модели на NVIDIA GPU.

Используя формат экспорта TensorRT, вы можете улучшить свои модели Ultralytics YOLO11 для быстрого и эффективного логического вывода на оборудовании NVIDIA. Это руководство предоставит вам простые в использовании шаги для процесса преобразования и поможет вам максимально использовать передовые технологии NVIDIA в ваших проектах глубокого обучения.

TensorRT

Обзор TensorRT

TensorRT, разработанный NVIDIA, — это передовой комплект для разработки программного обеспечения (SDK), предназначенный для высокоскоростного инференса глубокого обучения. Он хорошо подходит для приложений реального времени, таких как обнаружение объектов.

Этот инструментарий оптимизирует модели глубокого обучения для NVIDIA GPU и обеспечивает более быструю и эффективную работу. Модели TensorRT проходят оптимизацию TensorRT, которая включает в себя такие методы, как слияние слоев, калибровка точности (INT8 и FP16), динамическое управление памятью тензоров и автоматическая настройка ядра. Преобразование моделей глубокого обучения в формат TensorRT позволяет разработчикам в полной мере реализовать потенциал NVIDIA GPU.

TensorRT известен своей совместимостью с различными форматами моделей, включая TensorFlow, PyTorch и ONNX, предоставляя разработчикам гибкое решение для интеграции и оптимизации моделей из разных фреймворков. Эта универсальность обеспечивает эффективное развертывание моделей в различных аппаратных и программных средах.

Ключевые особенности моделей TensorRT

Модели TensorRT предлагают ряд ключевых функций, которые способствуют их эффективности и результативности при высокоскоростном инференсе глубокого обучения:

  • Калибровка точности: TensorRT поддерживает калибровку точности, позволяя точно настраивать модели для соответствия конкретным требованиям к точности. Это включает поддержку форматов с пониженной точностью, таких как INT8 и FP16, которые могут еще больше повысить скорость логического вывода, сохраняя при этом приемлемый уровень точности.

  • Слияние слоев: Процесс оптимизации TensorRT включает слияние слоев, при котором несколько слоев нейронной сети объединяются в одну операцию. Это снижает вычислительные издержки и повышает скорость инференса за счет минимизации доступа к памяти и вычислений.

Слияние слоев TensorRT

  • Динамическое управление памятью тензоров: TensorRT эффективно управляет использованием памяти тензоров во время логического вывода, снижая накладные расходы на память и оптимизируя распределение памяти. Это приводит к более эффективному использованию памяти GPU.

  • Автоматическая настройка ядра: TensorRT применяет автоматическую настройку ядра для выбора наиболее оптимизированного GPU-ядра для каждого слоя модели. Этот адаптивный подход гарантирует, что модель в полной мере использует вычислительную мощность GPU.

Варианты развертывания в TensorRT

Прежде чем мы рассмотрим код для экспорта моделей YOLO11 в формат TensorRT, давайте разберемся, где обычно используются модели TensorRT.

TensorRT предлагает несколько вариантов развертывания, и каждый вариант по-разному сочетает простоту интеграции, оптимизацию производительности и гибкость:

  • Развертывание в TensorFlow: Этот метод интегрирует TensorRT в TensorFlow, позволяя оптимизированным моделям работать в привычной среде TensorFlow. Это полезно для моделей со смесью поддерживаемых и неподдерживаемых слоев, поскольку TF-TRT может эффективно обрабатывать их.

Обзор TensorRT

  • Автономный TensorRT Runtime API: Предлагает детальный контроль, идеально подходит для критически важных для производительности приложений. Он более сложный, но позволяет реализовать пользовательскую реализацию неподдерживаемых операторов.

  • NVIDIA Triton Inference Server: Опция, поддерживающая модели из различных фреймворков. Особенно подходит для облачного или периферийного вывода, она предоставляет такие функции, как одновременное выполнение моделей и анализ моделей.

Экспорт моделей YOLO11 в TensorRT

Вы можете повысить эффективность выполнения и оптимизировать производительность, преобразовав модели YOLO11 в формат TensorRT.

Установка

Чтобы установить необходимый пакет, выполните:

Установка

# Install the required package for YOLO11
pip install ultralytics

Подробные инструкции и рекомендации по процессу установки см. в нашем руководстве по установке YOLO11. Если во время установки необходимых пакетов для YOLO11 у вас возникнут какие-либо трудности, обратитесь к нашему руководству по распространенным проблемам для поиска решений и советов.

Использование

Прежде чем углубляться в инструкции по использованию, обязательно ознакомьтесь с ассортиментом моделей YOLO11, предлагаемых Ultralytics. Это поможет вам выбрать наиболее подходящую модель для требований вашего проекта.

Использование

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to TensorRT format
model.export(format="engine")  # creates 'yolo11n.engine'

# Load the exported TensorRT model
tensorrt_model = YOLO("yolo11n.engine")

# Run inference
results = tensorrt_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to TensorRT format
yolo export model=yolo11n.pt format=engine # creates 'yolo11n.engine''

# Run inference with the exported model
yolo predict model=yolo11n.engine source='https://ultralytics.com/images/bus.jpg'

Аргументы экспорта

Аргумент Тип По умолчанию Описание
format str 'engine' Целевой формат для экспортируемой модели, определяющий совместимость с различными средами развертывания.
imgsz int или tuple 640 Желаемый размер изображения для ввода модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для конкретных размеров.
half bool False Включает квантование FP16 (полуточной точности), уменьшая размер модели и потенциально ускоряя вывод на поддерживаемом оборудовании.
int8 bool False Активирует квантование INT8, дополнительно сжимая модель и ускоряя вывод с минимальной потерей точности, в основном для периферийных устройств.
dynamic bool False Обеспечивает динамические размеры входных данных, повышая гибкость при обработке различных размеров изображений.
simplify bool True Упрощает граф модели с onnxslim, потенциально улучшая производительность и совместимость.
workspace float или None None Устанавливает максимальный размер рабочего пространства в GiB для оптимизаций TensorRT, балансируя использование памяти и производительность; используйте None для автоматического выделения TensorRT до максимального значения устройства.
nms bool False Добавляет Non-Maximum Suppression (NMS), необходимую для точной и эффективной постобработки обнаружения.
batch int 1 Указывает размер пакета для модели экспорта или максимальное количество изображений, которые экспортируемая модель будет обрабатывать одновременно в режиме predict режиме.
data str 'coco8.yaml' Путь к dataset файл конфигурации (по умолчанию: coco8.yaml), необходимые для квантования.
fraction float 1.0 Указывает долю набора данных, используемую для калибровки квантования INT8. Позволяет проводить калибровку на подмножестве полного набора данных, что полезно для экспериментов или при ограниченности ресурсов. Если не указано при включенном INT8, будет использован полный набор данных.
device str None Указывает устройство для экспорта: GPU (device=0), DLA для NVIDIA Jetson (device=dla:0 или device=dla:1).

Совет

Пожалуйста, убедитесь, что вы используете GPU с поддержкой CUDA при экспорте в TensorRT.

Для получения более подробной информации о процессе экспорта посетите страницу документации Ultralytics по экспорту.

Экспорт TensorRT с квантованием INT8

Экспорт моделей Ultralytics YOLO с использованием TensorRT с точностью INT8 выполняет квантование после обучения (PTQ). TensorRT использует калибровку для PTQ, которая измеряет распределение активаций внутри каждого тензора активации, когда модель YOLO обрабатывает вывод на репрезентативных входных данных, а затем использует это распределение для оценки значений масштаба для каждого тензора. Каждый тензор активации, являющийся кандидатом на квантование, имеет связанный масштаб, который выводится процессом калибровки.

При обработке неявно квантованных сетей TensorRT использует INT8 оппортунистически для оптимизации времени выполнения слоя. Если слой работает быстрее в INT8 и имеет назначенные шкалы квантования на своих входных и выходных данных, то этому слою назначается ядро с точностью INT8, в противном случае TensorRT выбирает точность FP32 или FP16 для ядра в зависимости от того, что приводит к более быстрому времени выполнения для этого слоя.

Совет

Критически важно убедиться, что то же самое устройство, которое будет использовать веса модели TensorRT для развертывания, используется для экспорта с точностью INT8, поскольку результаты калибровки могут различаться на разных устройствах.

Настройка экспорта INT8

Аргументы, предоставленные при использовании export для модели Ultralytics YOLO будет значительно влияют на производительность экспортируемой модели. Их также необходимо будет выбирать в зависимости от доступных ресурсов устройства, однако аргументы по умолчанию должен работают для большинства Дискретные GPU NVIDIA Ampere (или более новые). Используемый алгоритм калибровки — "MINMAX_CALIBRATION" и вы можете прочитать более подробную информацию о доступных опциях в TensorRT Developer GuideUltralytics провела тесты, которые показали, что "MINMAX_CALIBRATION" был лучшим выбором, и экспорт фиксируется с использованием этого алгоритма.

  • workspace : Управляет размером (в GiB) выделения памяти устройства при преобразовании весов модели.

    • Отрегулируйте workspace value в соответствии с вашими потребностями в калибровке и доступностью ресурсов. В то время как большее workspace может увеличить время калибровки, это позволяет TensorRT изучить более широкий спектр тактик оптимизации, потенциально улучшая производительность модели и точность. И наоборот, меньший workspace может сократить время калибровки, но может ограничить стратегии оптимизации, что повлияет на качество квантованной модели.

    • По умолчанию: workspace=None, что позволит TensorRT автоматически выделять память. При ручной настройке это значение может потребоваться увеличить, если калибровка завершается сбоем (завершается без предупреждения).

    • TensorRT сообщит UNSUPPORTED_STATE во время экспорта, если значение для workspace больше объема памяти, доступной устройству, что означает, что значение для workspace должен быть снижен или установлен на None.

    • Если workspace установлено максимальное значение, и калибровка завершается сбоем/аварийно завершается, рассмотрите возможность использования None для автоматического выделения или путем уменьшения значений для imgsz и batch чтобы уменьшить требования к памяти.

    • Помните, что калибровка для INT8 специфична для каждого устройства, использование "высокопроизводительной" GPU для калибровки может привести к низкой производительности при запуске inference на другом устройстве.

  • batch : Максимальный размер пакета, который будет использоваться для инференса. Во время инференса можно использовать пакеты меньшего размера, но инференс не будет принимать пакеты больше указанного размера.

Примечание

Во время калибровки, в два раза больше batch будет использован указанный размер. Использование небольших пакетов может привести к неточной масштабированию во время калибровки. Это связано с тем, что процесс корректируется на основе видимых данных. Небольшие пакеты могут не охватывать весь диапазон значений, что приведет к проблемам с окончательной калибровкой, поэтому batch размер автоматически удваивается. Если нет размер пакета указано batch=1, калибровка будет запущена в batch=1 * 2 чтобы уменьшить ошибки масштабирования калибровки.

Эксперименты, проведенные NVIDIA, привели их к рекомендации использовать не менее 500 калибровочных изображений, репрезентативных для данных вашей модели, с калибровкой INT8 quantization. Это руководство, а не сложный требование, и вам нужно будет поэкспериментировать с тем, что требуется для хорошей работы с вашим набором данных. Поскольку данные калибровки необходимы для калибровки INT8 с помощью TensorRT, обязательно используйте data аргумент, когда int8=True для TensorRT и использования data="my_dataset.yaml", который будет использовать изображения из валидация для калибровки. Если значение для data при экспорте в TensorRT с квантованием INT8 по умолчанию будет использоваться один из "маленькие" примеры наборов данных, основанные на задаче модели вместо выдачи ошибки.

Пример

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(
    format="engine",
    dynamic=True,  # (1)!
    batch=8,  # (2)!
    workspace=4,  # (3)!
    int8=True,
    data="coco.yaml",  # (4)!
)

# Load the exported TensorRT INT8 model
model = YOLO("yolov8n.engine", task="detect")

# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
  1. Экспорт с динамическими осями, это будет включено по умолчанию при экспорте с int8=True даже если это не задано явно. Смотрите аргументы экспорта для получения дополнительной информации.
  2. Устанавливает максимальный размер пакета 8 для экспортируемой модели, которая калибруется с batch = 2 * 8 чтобы избежать ошибок масштабирования во время калибровки.
  3. Выделяет 4 ГиБ памяти вместо выделения всего устройства для процесса преобразования.
  4. Использует набор данных COCO для калибровки, в частности изображения, используемые для валидации (всего 5000).
# Export a YOLO11n PyTorch model to TensorRT format with INT8 quantization
yolo export model=yolo11n.pt format=engine batch=8 workspace=4 int8=True data=coco.yaml # creates 'yolov8n.engine''

# Run inference with the exported TensorRT quantized model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'
Кэш калибровки

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

Преимущества использования YOLO с TensorRT INT8

  • Уменьшенный размер модели: Квантование из FP32 в INT8 может уменьшить размер модели в 4 раза (на диске или в памяти), что приводит к более быстрому времени загрузки, снижению требований к хранилищу и уменьшению объема памяти при развертывании модели.

  • Пониженное энергопотребление: Операции с уменьшенной точностью для экспортированных моделей YOLO в формате INT8 могут потреблять меньше энергии по сравнению с моделями FP32, особенно для устройств с батарейным питанием.

  • Улучшенная скорость inference: TensorRT оптимизирует модель для целевого оборудования, что потенциально приводит к более высокой скорости inference на GPU, встроенных устройствах и ускорителях.

Замечание о скорости инференса

Первые несколько вызовов инференса с моделью, экспортированной в TensorRT INT8, могут потребовать больше времени, чем обычно, на предварительную обработку, инференс и/или постобработку. Это также может произойти при изменении imgsz во время инференса, особенно когда imgsz не совпадает с тем, что было указано во время экспорта (экспорт imgsz установлен как "оптимальный" профиль TensorRT).

Недостатки использования YOLO с TensorRT INT8

  • Уменьшение метрик оценки: Использование более низкой точности будет означать, что mAP, Precision, Recall или любой другая метрика, используемая для оценки производительности модели скорее всего, будет несколько хуже. Смотрите Раздел результатов производительности чтобы сравнить различия в mAP50 и mAP50-95 при экспорте с INT8 на небольшом образце различных устройств.

  • Увеличение времени разработки: Поиск «оптимальных» настроек для калибровки INT8 для набора данных и устройства может потребовать значительного количества тестов.

  • Аппаратная зависимость: Калибровка и прирост производительности могут сильно зависеть от оборудования, а веса модели менее переносимы.

Производительность экспорта Ultralytics YOLO TensorRT

NVIDIA A100

Производительность

Протестировано с Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

Примеры использования этих моделей, обученных на COCO, которые включают 80 предварительно обученных классов, см. в документации по обнаружению.

Примечание

Время инференса показано для mean, min (самый быстрый) и max (самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n.engine

Точность Тест оценки среднее
(мс)
мин | макс
(мс)
mAPval
50(B)
mAPval
50-95(B)
batch размер
(пиксели)
FP32 Прогнозирование 0.52 0.51 | 0.56 8 640
FP32 COCOval 0.52 0.52 0.37 1 640
FP16 Прогнозирование 0.34 0.34 | 0.41 8 640
FP16 COCOval 0.33 0.52 0.37 1 640
INT8 Прогнозирование 0.28 0.27 | 0.31 8 640
INT8 COCOval 0.29 0.47 0.33 1 640

Примеры использования этих моделей, обученных на COCO, которые включают 80 предварительно обученных классов, см. в документации по сегментации.

Примечание

Время инференса показано для mean, min (самый быстрый) и max (самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n-seg.engine

Точность Тест оценки среднее
(мс)
мин | макс
(мс)
mAPval
50(B)
mAPval
50-95(B)
mAPval
50(M)
mAPval
50-95(M)
batch размер
(пиксели)
FP32 Прогнозирование 0.62 0.61 | 0.68 8 640
FP32 COCOval 0.63 0.52 0.36 0.49 0.31 1 640
FP16 Прогнозирование 0.40 0.39 | 0.44 8 640
FP16 COCOval 0.43 0.52 0.36 0.49 0.30 1 640
INT8 Прогнозирование 0.34 0.33 | 0.37 8 640
INT8 COCOval 0.36 0.46 0.32 0.43 0.27 1 640

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

Примечание

Время инференса показано для mean, min (самый быстрый) и max (самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n-cls.engine

Точность Тест оценки среднее
(мс)
мин | макс
(мс)
top-1 top-5 batch размер
(пиксели)
FP32 Прогнозирование 0.26 0.25 | 0.28 8 640
FP32 ImageNetval 0.26 0.35 0.61 1 640
FP16 Прогнозирование 0.18 0.17 | 0.19 8 640
FP16 ImageNetval 0.18 0.35 0.61 1 640
INT8 Прогнозирование 0.16 0.15 | 0.57 8 640
INT8 ImageNetval 0.15 0.32 0.59 1 640

Примеры использования этих моделей, обученных на COCO и включающих 1 предварительно обученный класс, "person", см. в документации по оценке позы.

Примечание

Время инференса показано для mean, min (самый быстрый) и max (самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n-pose.engine

Точность Тест оценки среднее
(мс)
мин | макс
(мс)
mAPval
50(B)
mAPval
50-95(B)
mAPval
50(P)
mAPval
50-95(P)
batch размер
(пиксели)
FP32 Прогнозирование 0.54 0.53 | 0.58 8 640
FP32 COCOval 0.55 0.91 0.69 0.80 0.51 1 640
FP16 Прогнозирование 0.37 0.35 | 0.41 8 640
FP16 COCOval 0.36 0.91 0.69 0.80 0.51 1 640
INT8 Прогнозирование 0.29 0.28 | 0.33 8 640
INT8 COCOval 0.30 0.90 0.68 0.78 0.47 1 640

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

Примечание

Время инференса показано для mean, min (самый быстрый) и max (самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n-obb.engine

Точность Тест оценки среднее
(мс)
мин | макс
(мс)
mAPval
50(B)
mAPval
50-95(B)
batch размер
(пиксели)
FP32 Прогнозирование 0.52 0.51 | 0.59 8 640
FP32 DOTAv1val 0.76 0.50 0.36 1 640
FP16 Прогнозирование 0.34 0.33 | 0.42 8 640
FP16 DOTAv1val 0.59 0.50 0.36 1 640
INT8 Прогнозирование 0.29 0.28 | 0.33 8 640
INT8 DOTAv1val 0.32 0.45 0.32 1 640

Потребительские GPU

Производительность обнаружения (COCO)

Протестировано с Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6

Примечание

Время инференса показано для mean, min (самый быстрый) и max (самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n.engine

Точность Тест оценки среднее
(мс)
мин | макс
(мс)
mAPval
50(B)
mAPval
50-95(B)
batch размер
(пиксели)
FP32 Прогнозирование 1.06 0.75 | 1.88 8 640
FP32 COCOval 1.37 0.52 0.37 1 640
FP16 Прогнозирование 0.62 0.75 | 1.13 8 640
FP16 COCOval 0.85 0.52 0.37 1 640
INT8 Прогнозирование 0.52 0.38 | 1.00 8 640
INT8 COCOval 0.74 0.47 0.33 1 640

Протестировано с Windows 10.0.22631, python 3.11.9, ultralytics==8.2.4, tensorrt==10.0.1

Примечание

Время инференса показано для mean, min (самый быстрый) и max (самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n.engine

Точность Тест оценки среднее
(мс)
мин | макс
(мс)
mAPval
50(B)
mAPval
50-95(B)
batch размер
(пиксели)
FP32 Прогнозирование 1.76 1.69 | 1.87 8 640
FP32 COCOval 1.94 0.52 0.37 1 640
FP16 Прогнозирование 0.86 0.75 | 1.00 8 640
FP16 COCOval 1.43 0.52 0.37 1 640
INT8 Прогнозирование 0.80 0.75 | 1.00 8 640
INT8 COCOval 1.35 0.47 0.33 1 640

Протестировано с Pop!_OS 22.04 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

Примечание

Время инференса показано для mean, min (самый быстрый) и max (самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n.engine

Точность Тест оценки среднее
(мс)
мин | макс
(мс)
mAPval
50(B)
mAPval
50-95(B)
batch размер
(пиксели)
FP32 Прогнозирование 2.84 2.84 | 2.85 8 640
FP32 COCOval 2.94 0.52 0.37 1 640
FP16 Прогнозирование 1.09 1.09 | 1.10 8 640
FP16 COCOval 1.20 0.52 0.37 1 640
INT8 Прогнозирование 0.75 0.74 | 0.75 8 640
INT8 COCOval 0.76 0.47 0.33 1 640

Встраиваемые устройства

Производительность обнаружения (COCO)

Протестировано с JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS, python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1

Примечание

Время инференса показано для mean, min (самый быстрый) и max (самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n.engine

Точность Тест оценки среднее
(мс)
мин | макс
(мс)
mAPval
50(B)
mAPval
50-95(B)
batch размер
(пиксели)
FP32 Прогнозирование 6.11 6.10 | 6.29 8 640
FP32 COCOval 6.17 0.52 0.37 1 640
FP16 Прогнозирование 3.18 3.18 | 3.20 8 640
FP16 COCOval 3.19 0.52 0.37 1 640
INT8 Прогнозирование 2.30 2.29 | 2.35 8 640
INT8 COCOval 2.32 0.46 0.32 1 640

Информация

Чтобы узнать больше о настройке и конфигурации, ознакомьтесь с нашим кратким руководством по NVIDIA Jetson с Ultralytics YOLO.

Методы оценки

Разверните разделы ниже, чтобы получить информацию о том, как эти модели были экспортированы и протестированы.

Конфигурации экспорта

Подробнее об аргументах конфигурации экспорта см. в разделе режим экспорта.

from ultralytics import YOLO

model = YOLO("yolov8n.pt")

# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)

# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, half=True)

# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
    format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, int8=True, data="coco8.yaml"
)
Цикл predict

Для получения дополнительной информации см. режим прогнозирования.

import cv2

from ultralytics import YOLO

model = YOLO("yolov8n.engine")
img = cv2.imread("path/to/image.jpg")

for _ in range(100):
    result = model.predict(
        [img] * 8,  # batch=8 of the same image
        verbose=False,
        device="cuda",
    )
Конфигурация валидации

См. val режим Чтобы узнать больше об аргументах конфигурации валидации.

from ultralytics import YOLO

model = YOLO("yolov8n.engine")
results = model.val(
    data="data.yaml",  # COCO, ImageNet, or DOTAv1 for appropriate model task
    batch=1,
    imgsz=640,
    verbose=False,
    device="cuda",
)

Развертывание экспортированных моделей YOLO11 TensorRT

После успешного экспорта ваших моделей Ultralytics YOLO11 в формат TensorRT, вы готовы к их развертыванию. Подробные инструкции по развертыванию моделей TensorRT в различных условиях см. в следующих ресурсах:

Обзор

В этом руководстве мы сосредоточились на преобразовании моделей Ultralytics YOLO11 в формат модели TensorRT от NVIDIA. Этот шаг преобразования имеет решающее значение для повышения эффективности и скорости моделей YOLO11, что делает их более эффективными и подходящими для различных сред развертывания.

Для получения дополнительной информации о деталях использования ознакомьтесь с официальной документацией TensorRT.

Если вам интересно узнать о дополнительных интеграциях Ultralytics YOLO11, наша страница руководства по интеграции предоставляет широкий выбор информативных ресурсов и идей.

Часто задаваемые вопросы

Как преобразовать модели YOLO11 в формат TensorRT?

Чтобы преобразовать ваши модели Ultralytics YOLO11 в формат TensorRT для оптимизированного вывода на NVIDIA GPU, выполните следующие действия:

  1. Установите необходимый пакет:

    pip install ultralytics
    
  2. Экспортируйте свою модель YOLO11:

    from ultralytics import YOLO
    
    model = YOLO("yolo11n.pt")
    model.export(format="engine")  # creates 'yolo11n.engine'
    
    # Run inference
    model = YOLO("yolo11n.engine")
    results = model("https://ultralytics.com/images/bus.jpg")
    

Для получения более подробной информации посетите руководство по установке YOLO11 и документацию по экспорту.

Каковы преимущества использования TensorRT для моделей YOLO11?

Использование TensorRT для оптимизации моделей YOLO11 предоставляет несколько преимуществ:

  • Более высокая скорость вывода: TensorRT оптимизирует слои модели и использует калибровку точности (INT8 и FP16) для ускорения вывода без значительной потери точности.
  • Эффективность использования памяти: TensorRT динамически управляет памятью тензоров, снижая накладные расходы и повышая эффективность использования памяти GPU.
  • Слияние слоев: Объединяет несколько слоев в отдельные операции, уменьшая вычислительную сложность.
  • Автоматическая настройка ядра: Автоматически выбирает оптимизированные ядра GPU для каждого слоя модели, обеспечивая максимальную производительность.

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

Могу ли я использовать INT8 квантование с TensorRT для моделей YOLO11?

Да, вы можете экспортировать модели YOLO11 с использованием TensorRT с квантованием INT8. Этот процесс включает в себя квантование после обучения (PTQ) и калибровку:

  1. Экспорт с INT8:

    from ultralytics import YOLO
    
    model = YOLO("yolov8n.pt")
    model.export(format="engine", batch=8, workspace=4, int8=True, data="coco.yaml")
    
  2. Запуск инференса:

    from ultralytics import YOLO
    
    model = YOLO("yolov8n.engine", task="detect")
    result = model.predict("https://ultralytics.com/images/bus.jpg")
    

Для получения более подробной информации обратитесь к разделу экспорта TensorRT с квантованием INT8.

Как развернуть модели YOLO11 TensorRT на сервере NVIDIA Triton Inference Server?

Развертывание моделей YOLO11 TensorRT на NVIDIA Triton Inference Server можно выполнить, используя следующие ресурсы:

Эти руководства помогут вам эффективно интегрировать модели YOLOv8 в различные среды развертывания.

Какие улучшения производительности наблюдаются у моделей YOLOv8, экспортированных в TensorRT?

Повышение производительности с помощью TensorRT может варьироваться в зависимости от используемого оборудования. Вот некоторые типичные тесты:

  • NVIDIA A100:

    • FP32 Inference: ~0.52 мс / изображение
    • FP16 Inference: ~0.34 мс / изображение
    • INT8 Inference: ~0,28 мс / изображение
    • Небольшое снижение mAP с точностью INT8, но значительное улучшение скорости.
  • Потребительские GPU (например, RTX 3080):

    • FP32 Inference: ~1.06 мс / изображение
    • FP16 Inference: ~0.62 мс / изображение
    • INT8 Inference: ~0,52 мс / изображение

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

Для более глубокого понимания производительности TensorRT обратитесь к документации Ultralytics и нашим отчетам об анализе производительности.



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

Комментарии