Ultralytics YOLO26 на NVIDIA Jetson с использованием DeepStream SDK и TensorRT#
Watch: How to use Ultralytics YOLO26 models with NVIDIA Deepstream on Jetson Orin NX 🚀
Это подробное руководство содержит пошаговые инструкции по развертыванию Ultralytics YOLO26 на устройствах NVIDIA Jetson с использованием DeepStream SDK и TensorRT. Здесь мы используем TensorRT для максимизации производительности инференса на платформе Jetson.
В этом руководстве рассмотрены конфигурация DeepStream для YOLO26, INT8-калиброка, настройка многопоточности и результаты бенчмарков.

Это руководство было протестировано на комплекте разработчика 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?#
NVIDIA's DeepStream SDK представляет собой полный набор инструментов потоковой аналитики на базе GStreamer для обработки мультисенсорных данных, видео, аудио и понимания изображений с помощью ИИ. Он идеально подходит для разработчиков систем компьютерного зрения на базе ИИ, партнеров-разработчиков программного обеспечения, стартапов и OEM-производителей, создающих приложения и сервисы IVA (интеллектуальной видеоаналитики). Теперь вы можете создавать конвейеры потоковой обработки, включающие нейронные сети и другие сложные задачи обработки, такие как трекинг, кодирование/декодирование видео и рендеринг видео. Эти конвейеры обеспечивают аналитику в реальном времени для видео, изображений и данных датчиков. Поддержка множества платформ в DeepStream дает вам более быстрый и простой способ разработки приложений и сервисов компьютерного зрения с ИИ локально, на периферии и в облаке.
Предварительные требования#
Перед тем как приступить к изучению этого руководства:
- Посетите нашу документацию, Quick Start Guide: NVIDIA Jetson with Ultralytics YOLO26, чтобы настроить ваше устройство NVIDIA Jetson для работы с Ultralytics YOLO26
- Установите DeepStream SDK в соответствии с версией JetPack
- Для JetPack 4.6.4 установите DeepStream 6.0.1
- Для JetPack 5.1.3 установите DeepStream 6.3
- Для JetPack 6.1 установите DeepStream 7.1
- Для JetPack 7.1 установите DeepStream 9.0
В этом руководстве мы использовали метод установки DeepStream SDK на устройство Jetson с помощью пакетов Debian. Вы также можете посетить страницу DeepStream SDK on Jetson (Archived) для получения доступа к устаревшим версиям DeepStream.
Настройка DeepStream для YOLO26#
Здесь мы используем репозиторий GitHub marcoslucianops/DeepStream-Yolo, который включает поддержку NVIDIA DeepStream SDK для моделей YOLO. Мы ценим вклад marcoslucianops!
-
Установи Ultralytics с необходимыми зависимостями
cd ~ pip install -U pip git clone https://github.com/ultralytics/ultralytics cd ultralytics pip install -e ".[export]" onnxslim -
Клонируй репозиторий DeepStream-Yolo
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
Скопируйте файл
export_yolo26.pyиз директорииDeepStream-Yolo/utilsв папкуultralyticscp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics cd ultralytics -
Загрузите детекционную модель Ultralytics YOLO26 (.pt) на ваш выбор из проекта YOLO26. Здесь мы используем yolo26s.pt.
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
Вы также можете использовать модель YOLO26, обученную на собственных данных.
-
Конвертируй модель в ONNX
python3 export_yolo26.py -w yolo26s.pt
Для DeepStream 5.1 удалите аргумент --dynamic и используйте opset 12 или ниже. Значение по умолчанию для opset — 17.
--opset 12Чтобы изменить размер вывода (по умолчанию: 640)
-s SIZE
--size SIZE
-s HEIGHT WIDTH
--size HEIGHT WIDTHПример для 1280:
-s 1280
or
-s 1280 1280Чтобы упростить модель ONNX (DeepStream >= 6.0)
--simplifyЧтобы использовать динамический размер пакета (DeepStream >= 6.1)
--dynamicЧтобы использовать статический размер пакета (пример для размера пакета = 4)
--batch 4-
Скопируйте сгенерированный файл модели
.onnxи файлlabels.txtв папкуDeepStream-Yolocp yolo26s.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo -
Установи версию CUDA в соответствии с установленной версией JetPack
Для JetPack 4.6.4:
export CUDA_VER=10.2Для JetPack 5.1.3:
export CUDA_VER=11.4Для JetPack 6.1:
export CUDA_VER=12.6 -
Скомпилируй библиотеку
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Отредактируйте файл
config_infer_primary_yolo26.txtв соответствии с вашей моделью (для YOLO26s с 80 классами)[property] ... onnx-file=yolo26s.onnx ... num-detected-classes=80 ... parse-bbox-func-name=NvDsInferParseYolo ...
YOLO26 изменяет размер входа с помощью центрированного дополнения и работает без NMS. Для достижения наилучшей точности добавьте следующее в секцию [property] файла config_infer_primary_yolo26.txt:
[property]
...
maintain-aspect-ratio=1
symmetric-padding=1
cluster-mode=4
...-
Отредактируйте файл
deepstream_app_config... [primary-gie] ... config-file=config_infer_primary_yolo26.txt -
Вы также можете изменить видеоисточник в файле
deepstream_app_config. Здесь загружается видеофайл по умолчанию... [source0] ... uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
Запусти вывод#
deepstream-app -c deepstream_app_config.txtДля генерации файла движка TensorRT перед началом вывода потребуется время. Пожалуйста, наберись терпения.

Если вы хотите конвертировать модель в точность FP16, просто установите model-engine-file=model_b1_gpu0_fp16.engine и network-mode=2 внутри config_infer_primary_yolo26.txt
Калибровка INT8#
Если ты хочешь использовать точность INT8 для вывода, тебе нужно выполнить следующие шаги:
В настоящее время INT8 не работает с TensorRT 10.x. Этот раздел руководства был протестирован с TensorRT 8.x, с которой все должно работать.
-
Установите переменную окружения
OPENCVexport OPENCV=1 -
Скомпилируй библиотеку
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Для датасета COCO загрузите val2017, распакуйте и переместите в папку
DeepStream-Yolo -
Создай новую директорию для изображений калибровки
mkdir calibration -
Запусти следующую команду, чтобы выбрать 1000 случайных изображений из набора данных COCO для запуска калибровки
for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do cp ${jpg} calibration/ done
NVIDIA рекомендует использовать не менее 500 изображений для достижения хорошей точности. В этом примере выбрано 1000 изображений для повышения точности (больше изображений = выше точность). Вы можете настроить это с помощью head -1000. Например, для 2000 изображений используйте head -2000. Этот процесс может занять много времени.
-
Создайте файл
calibration.txtсо всеми выбранными изображениямиrealpath calibration/*jpg > calibration.txt -
Установи переменные окружения
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1
Более высокие значения INT8_CALIB_BATCH_SIZE приведут к повышению точности и скорости калибровки. Установи значение в соответствии с объемом памяти твоего GPU.
-
Обновите файл
config_infer_primary_yolo26.txtОт
... model-engine-file=model_b1_gpu0_fp32.engine #int8-calib-file=calib.table ... network-mode=0 ...До
... model-engine-file=model_b1_gpu0_int8.engine int8-calib-file=calib.table ... network-mode=1 ...
Запуск логического вывода INT8#
Выполни ту же команду, чтобы собрать движок INT8 и начать логический вывод:
deepstream-app -c deepstream_app_config.txtНастройка нескольких потоков#
Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀
Чтобы настроить несколько потоков в рамках одного приложения DeepStream, внесите следующие изменения в файл deepstream_app_config.txt:
-
Измени количество строк и столбцов, чтобы создать сетку отображения в соответствии с количеством потоков, которые ты хочешь использовать. Например, для 4 потоков мы можем добавить 2 строки и 2 столбца.
[tiled-display] rows=2 columns=2 -
Добавьте отдельную группу
[sourceN]для каждого потока, каждая со своими собственнымиuriиnum-sources=1.[source0] enable=1 type=3 uri=file:///path/to/video1.mp4 num-sources=1 [source1] enable=1 type=3 uri=file:///path/to/video2.mp4 num-sources=1 [source2] enable=1 type=3 uri=file:///path/to/video3.mp4 num-sources=1 [source3] enable=1 type=3 uri=file:///path/to/video4.mp4 num-sources=1
Запуск многопоточного логического вывода#
Выполни ту же команду, чтобы запустить все потоки в мозаичном отображении:
deepstream-app -c deepstream_app_config.txt
Результаты тестирования производительности#
Следующие бенчмарки демонстрируют производительность моделей YOLO11 при различных уровнях точности TensorRT с размером входа 640x640 на NVIDIA Jetson Orin NX 16GB. В YOLO26 используется тот же рабочий процесс экспорта и инференса DeepStream, описанный выше.
Сравнительная диаграмма#

Подробная сравнительная таблица#
| Формат | Статус | Время вывода (мс/из) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
Благодарности#
Это руководство было изначально создано нашими друзьями из Seeed Studio, Лакшантой и Элейн.
FAQ#
Чтобы настроить Ultralytics YOLO26 на устройстве NVIDIA Jetson, вам сначала нужно установить DeepStream SDK, совместимый с вашей версией JetPack. Следуйте пошаговому руководству в нашем Quick Start Guide, чтобы настроить ваше устройство NVIDIA Jetson для развертывания YOLO26.
Использование TensorRT с YOLO26 оптимизирует модель для инференса, значительно снижая задержку и увеличивая пропускную способность на устройствах NVIDIA Jetson. TensorRT обеспечивает высокопроизводительный инференс глубокого обучения с низким временем отклика за счет слияния слоев, калибровки точности и автонастройки ядер. Это приводит к более быстрому и эффективному выполнению, что особенно полезно для приложений реального времени, таких как видеоаналитика и автономные машины.
Да, руководство по развертыванию Ultralytics YOLO26 с использованием DeepStream SDK и TensorRT совместимо со всей линейкой NVIDIA Jetson. Сюда входят такие устройства, как Jetson Orin NX 16GB с JetPack 5.1.3 и Jetson Nano 4GB с JetPack 4.6.4. Подробные шаги см. в разделе DeepStream Configuration for YOLO26.
Чтобы конвертировать модель YOLO26 в формат ONNX для развертывания с помощью DeepStream, используйте скрипт
utils/export_yolo26.pyиз репозитория DeepStream-Yolo.Вот пример команды:
python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplifyДополнительные сведения о конвертации моделей см. в нашем разделе модели экспорта.
Для запуска INT8-инференса откалибруйте модель на репрезентативном наборе изображений и переключите конфигурацию DeepStream в режим INT8. Загрузите изображения COCO val2017, выберите около 1000 калибровочных изображений, установите переменные окружения
INT8_CALIB_IMG_PATHиINT8_CALIB_BATCH_SIZE, а затем обновитеconfig_infer_primary_yolo26.txtс помощьюmodel-engine-file=model_b1_gpu0_int8.engine,int8-calib-file=calib.tableиnetwork-mode=1. Подробные инструкции см. в разделе INT8 Calibration. В настоящее время для INT8 требуется TensorRT 8.x.Чтобы обрабатывать несколько потоков в одном приложении DeepStream, отредактируйте файл
deepstream_app_config.txt, добавив сетку отображения с мозаичным расположением (tiled-display) и перечислив URI каждого источника. Установитеrowsиcolumnsв разделе[tiled-display]для построения сетки, добавьте отдельную группу[sourceN]для каждого потока со своими собстеннымиuriиnum-sources=1, а также настройте сетку в соответствии с количеством потоков. Полный пример см. в разделе MultiStream Setup.Производительность моделей YOLO11 на NVIDIA Jetson Orin NX 16GB варьируется в зависимости от уровней точности TensorRT. Например, модели YOLO11s достигают:
- Точность FP32: 14.53 мс/из., 68.8 кадров/с
- Точность FP16: 7.91 мс/из., 126 кадров/с
- Точность INT8: 6.05 мс/из., 165 кадров/с
Эти бенчмарки подчеркивают эффективность и возможности использования оптимизированных под TensorRT моделей YOLO11 на оборудовании NVIDIA Jetson. Дополнительную информацию см. в нашем разделе Benchmark Results.