Ultralytics YOLO26 на NVIDIA Jetson с использованием DeepStream SDK и TensorRT#
Смотри: Как использовать модели Ultralytics YOLO26 с NVIDIA Deepstream на 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?#
DeepStream SDK от NVIDIA — это полноценный инструментарий потоковой аналитики на базе GStreamer для обработки данных с нескольких сенсоров с использованием ИИ, а также для анализа видео, аудио и изображений. Он идеально подходит разработчикам vision AI, партнёрам по разработке ПО, стартапам и OEM-производителям, создающим приложения и сервисы IVA (интеллектуальной видеоаналитики). Теперь ты можешь создавать конвейеры потоковой обработки с использованием нейронных сетей и других сложных задач обработки, таких как трекинг, кодирование и декодирование видео, а также рендеринг видео. Эти конвейеры обеспечивают аналитику в реальном времени на основе видео, изображений и данных с датчиков. Благодаря поддержке нескольких платформ DeepStream позволяет быстрее и проще разрабатывать приложения и сервисы vision AI локально, на периферии и в облаке.
Предварительные требования#
Перед тем как приступить к этому руководству:
- Настрой устройство NVIDIA Jetson для работы с 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 на Jetson (архив), чтобы получить доступ к устаревшим версиям DeepStream.
Настройка DeepStream для YOLO26#
Здесь мы используем репозиторий GitHub marcoslucianops/DeepStream-Yolo, который обеспечивает поддержку моделей YOLO в NVIDIA DeepStream SDK. Благодарим marcoslucianops за его вклад!
-
Установи Ultralytics со всеми необходимыми зависимостями
pip install ultralytics onnx onnxslim -
Клонируй репозиторий DeepStream-Yolo
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
Скачай подходящую модель обнаружения Ultralytics YOLO26 (.pt) из проекта YOLO26. В этом примере мы используем yolo26s.pt.
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
Также можно использовать модель YOLO26, обученную на собственных данных.
-
Преобразуй модель в ONNX и создай файл
labels.txt, из которого DeepStream считывает имена классов.from ultralytics import YOLO model = YOLO("yolo26s.pt") model.export(format="onnx", nms=False, agnostic_nms=True) # creates 'yolo26s.onnx' with open("labels.txt", "w") as f: f.write("\n".join(model.names.values()))
nms=False экспортирует голову без NMS, а agnostic_nms=True оставляет для каждого обнаруженного объекта только один класс, чтобы cluster-mode=4 (без кластеризации) в конфигурации DeepStream не рисовал рамку дважды. Добавь imgsz=1280, чтобы изменить размер изображения для инференса (по умолчанию: 640), batch=4 — для размера пакета 4 (размер экспортированного пакета фиксирован, поэтому он должен соответствовать batch-size в конфигурации DeepStream), а opset=12 — для TensorRT 8.2 или более ранней версии (DeepStream 6.0.1 и более ранние версии). Полный список см. в разделе аргументы экспорта.
-
Скопируй созданный файл модели
.onnxи файлlabels.txtв папкуDeepStream-Yolo.cp 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Для JetPack 7.1:
export CUDA_VER=13.0 -
Скомпилируй библиотеку
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, и ожидается, что он будет работать.
-
Задай переменную среды
OPENCV.export 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Настройка нескольких потоков#
Смотри: Как запускать много-потоковый инференс с Ultralytics YOLO26 с помощью NVIDIA DeepStream на 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 — Lakshantha и Elaine.
Часто задаваемые вопросы#
Чтобы настроить Ultralytics YOLO26 на устройстве NVIDIA Jetson, сначала установи DeepStream SDK, совместимый с твоей версией JetPack. Следуй пошаговым инструкциям в нашем кратком руководстве, чтобы подготовить 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 для YOLO26».
Экспортируй модель с головой без NMS с помощью экспортера Ultralytics и создай файл
labels.txt, из которого DeepStream считывает имена классов:from ultralytics import YOLO model = YOLO("yolo26s.pt") model.export(format="onnx", nms=False, agnostic_nms=True) # creates 'yolo26s.onnx' with open("labels.txt", "w") as f: f.write("\n".join(model.names.values()))Добавь
opset=12для TensorRT 8.2 или более ранней версии (DeepStream 6.0.1 и более ранние версии). Подробнее о преобразовании моделей см. в разделе экспорта моделей.Чтобы запустить инференс 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». Для INT8 в настоящее время требуется TensorRT 8.x.Чтобы обрабатывать несколько потоков в одном приложении DeepStream, отредактируй файл
deepstream_app_config.txt: добавь сетку мозаичного отображения и укажи URI каждого источника. Задайrowsиcolumnsв разделе[tiled-display], чтобы настроить сетку, добавь отдельную группу[sourceN]для каждого потока с собственнымиuriиnum-sources=1, а затем измени сетку с учётом количества потоков. Полный пример см. в разделе «Настройка нескольких потоков».Производительность моделей YOLO11 на NVIDIA Jetson Orin NX 16GB зависит от уровня точности TensorRT. Например, модели YOLO11s показывают следующие результаты:
- Точность FP32: 14,53 мс/изобр., 68,8 FPS
- Точность FP16: 7,91 мс/изобр., 126 FPS
- Точность INT8: 6,05 мс/изобр., 165 FPS
Эти результаты бенчмарков подтверждают эффективность и возможности использования оптимизированных для TensorRT моделей YOLO11 на оборудовании NVIDIA Jetson. Подробнее см. раздел Результаты бенчмарков.