Ultralytics YOLO11 на NVIDIA Jetson с помощью DeepStream SDK и TensorRT
Смотреть: Как запустить несколько потоков с помощью DeepStream SDK на Jetson Nano с помощью Ultralytics YOLO11
В этом подробном руководстве подробно описано развертывание Ultralytics YOLO11 на устройствах NVIDIA Jetson с помощью DeepStream SDK и TensorRT. Здесь мы используем TensorRT , чтобы максимизировать производительность вычислений на платформе Jetson.
Примечание
Это руководство было протестировано с NVIDIA Jetson Orin Nano Super Developer Kit под управлением последней стабильной версии JetPack JP6.1, Seeed Studio reComputer J4012, который основан на NVIDIA Jetson Orin NX 16GB под управлением JetPack версии JP5.1.3 и Seeed Studio reComputer J1020 v2, который основан на NVIDIA Jetson Nano 4GB под управлением JetPack версии JP4.6.4. Ожидается, что он будет работать на всех аппаратных линейках NVIDIA Jetson, включая новейшие и устаревшие.
Что такое NVIDIA DeepStream?
NVIDIADeepStream SDK - это полный набор инструментов потоковой аналитики на базе GStreamer для обработки мультисенсорных данных, видео, аудио и понимания изображений на основе ИИ. Он идеально подходит для разработчиков ИИ, партнеров по программному обеспечению, стартапов и OEM-производителей, создающих приложения и сервисы IVA (Intelligent Video Analytics). Теперь вы можете создавать конвейеры обработки потоков, включающие нейронные сети и другие сложные задачи обработки, такие как отслеживание, кодирование/декодирование видео и рендеринг видео. Такие конвейеры позволяют анализировать видео, изображения и данные датчиков в режиме реального времени. Многоплатформенная поддержка DeepStream позволяет быстрее и проще разрабатывать приложения и сервисы искусственного интеллекта видения в локальной сети, на границе и в облаке.
Пререквизиты
Прежде чем начать следовать этому руководству:
- Посетите нашу документацию " Краткое руководство пользователя: NVIDIA Jetson с Ultralytics YOLO11 для настройки вашего устройства NVIDIA Jetson с Ultralytics YOLO11
-
Установите DeepStream SDK в соответствии с версией JetPack
- Для JetPack 4.6.4 установите DeepStream 6.0.1
- Для JetPack 5.1.3 установите DeepStream 6.3
- Для JetPack 6.1 установите DeepStream 7.1
Наконечник
В этом руководстве мы использовали метод установки пакета Debian для установки DeepStream SDK на устройство Jetson. Вы также можете посетить страницу DeepStream SDK on Jetson (Archived), чтобы получить доступ к устаревшим версиям DeepStream.
Конфигурация DeepStream для YOLO11
Здесь мы используем репозиторий marcoslucianops/DeepStream-Yolo GitHub, который включает в себя NVIDIA поддержку DeepStream SDK для YOLO моделей. Мы ценим усилия marcoslucianops за его вклад!
-
Установите Ultralytics с необходимыми зависимостями
-
Клонируйте репозиторий DeepStream-Yolo .
-
Скопируйте
export_yoloV8.py
файл изDeepStream-Yolo/utils
в каталогultralytics
папкаПримечание
export_yoloV8.py
работает для моделей YOLOv8 и YOLO11 . -
Загрузите Ultralytics YOLO11 модель обнаружения (.pt) по вашему выбору из релизовYOLO11 . Здесь мы используем yolo11s.pt.
Примечание
Вы также можете использовать пользовательскую обучаемую модель YOLO11 .
-
Преобразуйте модель в ONNX
Передайте указанные ниже аргументы команде
Для DeepStream 6.0.1 используйте опсет 12 или ниже. По умолчанию используется опсет 16.
Чтобы изменить размер вывода (по умолчанию: 640)
Пример для 1280:
Для упрощения модели ONNX (DeepStream >= 6.0)
Чтобы использовать динамический размер партии (DeepStream >= 6.1)
Чтобы использовать статический размер партии (пример для размера партии = 4)
-
Скопируйте созданный
.onnx
файл модели иlabels.txt
файл вDeepStream-Yolo
папка -
Установите версию CUDA в соответствии с установленной версией JetPack.
Для JetPack 4.6.4:
Для JetPack 5.1.3:
Для Jetpack 6.1:
-
Скомпилируйте библиотеку
-
Отредактируйте
config_infer_primary_yoloV8.txt
файл в соответствии с вашей моделью (для YOLO11s с 80 классами) -
Отредактируйте
deepstream_app_config
файл -
Вы также можете изменить источник видеосигнала в
deepstream_app_config
файл. Здесь загружен видеофайл по умолчанию
Выполнить вывод
Примечание
Генерация файла движка TensorRT займет много времени, прежде чем начнется процесс вычисления. Поэтому, пожалуйста, будьте терпеливы.
Наконечник
Если вы хотите преобразовать модель в точность FP16, просто установите model-engine-file=model_b1_gpu0_fp16.engine
и network-mode=2
внутри config_infer_primary_yoloV8.txt
Калибровка INT8
Если вы хотите использовать точность INT8 для выводов, выполните следующие действия.
Примечание
В настоящее время INT8 не работает с TensorRT 10.x. Этот раздел руководства был протестирован с TensorRT 8.x, который, как ожидается, будет работать.
-
Установите
OPENCV
переменная окружения -
Скомпилируйте библиотеку
-
Для получения набора данных COCO загрузите val2017извлеките и переместите в
DeepStream-Yolo
папка -
Создайте новый каталог для калибровочных изображений
-
Выполните следующие действия, чтобы выбрать 1000 случайных изображений из набора данных COCO для проведения калибровки
Примечание
NVIDIA рекомендует не менее 500 изображений для достижения хорошей точности. В данном примере для достижения большей точности выбрано 1000 изображений (больше изображений = больше точность). Вы можете установить значение от head -1000. Например, для 2000 изображений задайте значение -2000. Этот процесс может занять много времени.
-
Создайте
calibration.txt
файл со всеми выбранными изображениями -
Установите переменные окружения
Примечание
Более высокие значения INT8_CALIB_BATCH_SIZE приведут к большей точности и скорости калибровки. Установите это значение в соответствии с вашей памятью GPU .
-
Обновить
config_infer_primary_yoloV8.txt
файлС сайта
На
Выполнить вывод
Настройка многопотокового режима
Чтобы настроить несколько потоков в одном приложении deepstream, вы можете внести следующие изменения в файл deepstream_app_config.txt
файл
-
Измените строки и столбцы, чтобы построить сетку в соответствии с количеством потоков, которые вы хотите иметь. Например, для 4 потоков мы можем добавить 2 строки и 2 столбца.
-
Установите
num-sources=4
и добавьтеuri
из всех 4 потоков
Выполнить вывод
Контрольные результаты
В следующих бенчмарках представлены результаты работы моделей YOLO11 на разных уровнях TensorRT точности при входном размере 640x640 на NVIDIA Jetson Orin NX 16GB.
Сравнительная таблица
Подробная сравнительная таблица
Производительность
Формат | Статус | Время вывода (мс/им) |
---|---|---|
TensorRT (FP32) | ✅ | 8.64 |
TensorRT (FP16) | ✅ | 5.27 |
TensorRT (INT8) | ✅ | 4.54 |
Формат | Статус | Время вывода (мс/им) |
---|---|---|
TensorRT (FP32) | ✅ | 14.53 |
TensorRT (FP16) | ✅ | 7.91 |
TensorRT (INT8) | ✅ | 6.05 |
Формат | Статус | Время вывода (мс/им) |
---|---|---|
TensorRT (FP32) | ✅ | 32.05 |
TensorRT (FP16) | ✅ | 15.55 |
TensorRT (INT8) | ✅ | 10.43 |
Формат | Статус | Время вывода (мс/им) |
---|---|---|
TensorRT (FP32) | ✅ | 39.68 |
TensorRT (FP16) | ✅ | 19.88 |
TensorRT (INT8) | ✅ | 13.64 |
Формат | Статус | Время вывода (мс/им) |
---|---|---|
TensorRT (FP32) | ✅ | 80.65 |
TensorRT (FP16) | ✅ | 39.06 |
TensorRT (INT8) | ✅ | 22.83 |
Благодарности
Это руководство изначально было создано нашими друзьями из Seeed Studio, Лакшантой и Элейн.
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Как настроить Ultralytics YOLO11 на устройстве NVIDIA Jetson?
Чтобы установить Ultralytics YOLO11 на устройство NVIDIA Jetson, сначала необходимо установить DeepStream SDK, совместимый с вашей версией JetPack. Чтобы настроить NVIDIA Jetson для развертывания YOLO11 , следуйте пошаговым инструкциям в нашем руководстве по быстрому запуску.
В чем преимущество использования TensorRT с YOLO11 на NVIDIA Jetson?
Использование TensorRT с YOLO11 оптимизирует модель для вывода, значительно снижая задержки и повышая пропускную способность на устройствах NVIDIA Jetson. TensorRT обеспечивает высокопроизводительный вывод глубокого обучения с низкой задержкой благодаря слиянию слоев, точной калибровке и автонастройке ядра. Это приводит к более быстрому и эффективному выполнению, что особенно полезно для приложений реального времени, таких как видеоаналитика и автономные машины.
Можно ли запустить Ultralytics YOLO11 с DeepStream SDK на разных аппаратных средствах NVIDIA Jetson?
Да, руководство по развертыванию Ultralytics YOLO11 с помощью DeepStream SDK и TensorRT совместимо со всей линейкой NVIDIA Jetson. Сюда входят такие устройства, как Jetson Orin NX 16GB с JetPack 5.1.3 и Jetson Nano 4GB с JetPack 4.6.4. Подробные шаги см. в разделе Конфигурация DeepStream для YOLO11.
Как преобразовать модель YOLO11 в ONNX для DeepStream?
Чтобы преобразовать модель YOLO11 в формат ONNX для развертывания с помощью DeepStream, используйте utils/export_yoloV8.py
сценарий из DeepStream -Yolo хранилище.
Вот пример команды:
Более подробную информацию о конвертации моделей вы найдете в разделе "Экспорт моделей".
Какова производительность YOLO на NVIDIA Jetson Orin NX?
Производительность моделей YOLO11 на NVIDIA Jetson Orin NX 16GB варьируется в зависимости от уровня точности TensorRT . Например, модели YOLO11s достигают:
- FP32 Precision: 14,6 мс/им, 68,5 FPS
- FP16 Precision: 7,94 мс/им, 126 FPS
- INT8 Precision: 5,95 мс/им, 168 FPS
Эти бенчмарки подчеркивают эффективность и возможности использования TensorRT-оптимизированных YOLO11 моделей на NVIDIA оборудовании Jetson. Более подробную информацию можно найти в разделе " Результаты бенчмарков ".