NVIDIA Jetson에서 DeepStream SDK와 TensorRT를 활용한 Ultralytics YOLO26#
Watch: How to use Ultralytics YOLO26 models with NVIDIA Deepstream on Jetson Orin NX 🚀
이 종합 가이드는 DeepStream SDK와 TensorRT를 사용하여 NVIDIA Jetson 기기에 Ultralytics YOLO26을 배포하는 상세한 절차를 안내합니다. 여기서는 Jetson 플랫폼에서의 추론 성능을 극대화하기 위해 TensorRT를 사용합니다.
본 가이드는 DeepStream configuration for YOLO26, INT8 calibration, multi-stream setup, 그리고 benchmark results에 대해 다룹니다.

본 가이드는 최신 안정 버전인 JP6.1을 실행하는 NVIDIA Jetson Orin Nano Super Developer Kit, NVIDIA Jetson Orin NX 16GB 기반이며 JetPack JP5.1.3을 실행하는 Seeed Studio reComputer J4012, 그리고 NVIDIA Jetson Nano 4GB 기반이며 JetPack JP4.6.4을 실행하는 Seeed Studio reComputer J1020 v2에서 테스트되었습니다. 최신 및 구형 모델을 포함한 모든 NVIDIA Jetson 하드웨어 라인업에서 작동할 것으로 예상됩니다.
NVIDIA DeepStream이란 무엇입니까?#
NVIDIA's DeepStream SDK는 AI 기반 다중 센서 처리, 비디오, 오디오 및 이미지 이해를 위해 GStreamer를 기반으로 구축된 완전한 스트리밍 분석 툴킷입니다. IVA(지능형 비디오 분석) 앱과 서비스를 구축하는 비전 AI 개발자, 소프트웨어 파트너, 스타트업 및 OEM에 이상적입니다. 이제 neural networks 및 추적, 비디오 인코딩/디코딩, 비디오 렌더링과 같은 기타 복잡한 처리 작업을 통합하는 스트림 처리 파이프라인을 생성할 수 있습니다. 이러한 파이프라인은 비디오, 이미지 및 센서 데이터에 대한 실시간 분석을 가능하게 합니다. DeepStream의 멀티 플랫폼 지원은 온프레미스, 엣지, 클라우드에서 비전 AI 애플리케이션과 서비스를 더 빠르고 쉽게 개발할 수 있는 방법을 제공합니다.
사전 요구 사항#
본 가이드를 시작하기 전에:
- 문서인 Quick Start Guide: NVIDIA Jetson with Ultralytics YOLO26을 방문하여 NVIDIA Jetson 기기에 Ultralytics YOLO26을 설정하세요.
- JetPack 버전에 따라 DeepStream SDK를 설치합니다.
- 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을 설치합니다.
이 가이드에서는 Jetson 기기에 DeepStream SDK를 설치하는 방법으로 Debian 패키지 방식을 사용했습니다. 또한 DeepStream SDK on Jetson (Archived)을 방문하여 레거시 버전의 DeepStream에 접근할 수 있습니다.
YOLO26을 위한 DeepStream 구성#
여기서는 YOLO 모델에 대한 NVIDIA DeepStream SDK 지원을 포함하는 marcoslucianops/DeepStream-Yolo GitHub 저장소를 사용하고 있습니다. 기여해 주신 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 -
DeepStream-Yolo/utils디렉터리에서export_yolo26.py파일을ultralytics폴더로 복사합니다.cp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics cd ultralytics -
YOLO26 project에서 원하는 Ultralytics YOLO26 감지 모델(.pt)을 다운로드합니다. 여기서는 yolo26s.pt를 사용합니다.
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
custom-trained YOLO26 model을 사용할 수도 있습니다.
-
모델을 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 WIDTH1280에 대한 예시:
-s 1280
or
-s 1280 1280ONNX 모델 단순화 (DeepStream >= 6.0)
--simplify동적 배치 크기 사용 (DeepStream >= 6.1)
--dynamic정적 배치 크기 사용 (배치 크기 = 4에 대한 예시)
--batch 4-
생성된
.onnx모델 파일과labels.txt파일을DeepStream-Yolo폴더로 복사합니다.cp yolo26s.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo -
설치된 JetPack 버전에 따라 CUDA 버전 설정
JetPack 4.6.4의 경우:
export CUDA_VER=10.2JetPack 5.1.3의 경우:
export CUDA_VER=11.4JetPack 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파일을 편집합니다(80개 클래스의 YOLO26s용).[property] ... onnx-file=yolo26s.onnx ... num-detected-classes=80 ... parse-bbox-func-name=NvDsInferParseYolo ...
YOLO26은 중앙 패딩을 사용하여 입력을 크기 조절하고 NMS 없이 실행됩니다. 최상의 정확도를 위해 config_infer_primary_yolo26.txt의 [property] 섹션에 다음을 추가합니다:
[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 정밀도로 변환하려면 config_infer_primary_yolo26.txt 내에서 model-engine-file=model_b1_gpu0_fp16.engine과 network-mode=2을 설정하기만 하면 됩니다.
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 -
다음 명령을 실행하여 COCO 데이터세트에서 무작위 이미지 1000개를 선택하여 보정을 실행하십시오.
for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do cp ${jpg} calibration/ done
NVIDIA는 좋은 accuracy를 얻기 위해 최소 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 -
각 스트림마다 각각 고유한
uri및num-sources=1를 포함하는 별도의[sourceN]그룹을 추가합니다.[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
벤치마크 결과#
다음 benchmarks은 NVIDIA Jetson Orin NX 16GB에서 640x640 입력 크기로 서로 다른 TensorRT 정밀도 수준에서 YOLO11 모델이 수행하는 성능을 요약합니다. YOLO26은 위에서 설명한 것과 동일한 DeepStream 내보내기 및 추론 워크플로를 사용합니다.
비교 차트#

상세 비교 표#
| 형식 | 상태 | 추론 시간(ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
감사의 말#
본 가이드는 Seeed Studio의 Lakshantha와 Elaine이 초기 작성하였습니다.
FAQ#
NVIDIA Jetson 장치에서 Ultralytics YOLO26을 어떻게 설정합니까?#
NVIDIA Jetson 기기에서 Ultralytics YOLO26을 설정하려면 먼저 JetPack 버전과 호환되는 DeepStream SDK를 설치해야 합니다. Quick Start Guide에 있는 단계별 가이드에 따라 YOLO26 배포를 위해 NVIDIA Jetson을 구성하십시오.
NVIDIA Jetson에서 YOLO26과 함께 TensorRT를 사용하는 이점은 무엇입니까?#
YOLO26과 함께 TensorRT를 사용하면 추론용 모델이 최적화되어 NVIDIA Jetson 기기에서 지연 시간이 크게 줄어들고 처리량이 향상됩니다. TensorRT는 레이어 융합, 정밀도 캘리브레이션, 커널 자동 튜닝을 통해 고성능, 저지연 deep learning 추론을 제공합니다. 이는 더 빠르고 효율적인 실행으로 이어지며, 특히 비디오 분석 및 자율주행 기기와 같은 실시간 애플리케이션에 유용합니다.
서로 다른 NVIDIA Jetson 하드웨어에서 DeepStream SDK와 함께 Ultralytics YOLO26을 실행할 수 있습니까?#
네, DeepStream SDK 및 TensorRT와 함께 Ultralytics YOLO26을 배포하기 위한 가이드는 전체 NVIDIA Jetson 라인업에서 호환됩니다. 여기에는 JetPack 5.1.3이 탑재된 Jetson Orin NX 16GB 및 JetPack 4.6.4가 탑재된 Jetson Nano 4GB와 같은 기기가 포함됩니다. 자세한 단계는 DeepStream Configuration for YOLO26 섹션을 참조하십시오.
DeepStream을 위해 YOLO26 모델을 어떻게 ONNX로 변환할 수 있습니까?#
DeepStream 배포를 위해 YOLO26 모델을 ONNX 형식으로 변환하려면 DeepStream-Yolo 저장소의 utils/export_yolo26.py 스크립트를 사용합니다.
명령어 예시는 다음과 같습니다:
python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplify모델 변환에 대한 자세한 내용은 model export section을 확인하세요.
DeepStream에서 YOLO26으로 INT8 추론을 어떻게 실행합니까?#
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 Calibration) 섹션을 참고하세요. INT8은 현재 TensorRT 8.x가 필요합니다.
Jetson에서 DeepStream을 사용하여 여러 카메라 스트림을 어떻게 실행합니까?#
단일 DeepStream 애플리케이션에서 여러 스트림을 처리하려면 deepstream_app_config.txt 파일을 편집하여 타일 디스플레이 그리드를 추가하고 각 소스 URI를 나열합니다. 그리드를 빌드하기 위해 [tiled-display] 아래에 rows과 columns를 설정하고, 각 스트림마다 고유한 uri 및 num-sources=1을 가진 별도의 [sourceN] 그룹을 추가한 뒤 스트림 수에 맞게 그리드를 조정합니다. 전체 예제는 다중 스트림 설정(MultiStream Setup) 섹션을 참고하세요.
NVIDIA Jetson Orin NX에서의 YOLO 성능 벤치마크는 어떻습니까?#
NVIDIA Jetson Orin NX 16GB에서의 YOLO11 모델 성능은 TensorRT 정밀도 수준에 따라 다릅니다. 예를 들어, YOLO11s 모델은 다음을 달성합니다:
- FP32 정밀도: 14.53 ms/im, 68.8 FPS
- FP16 정밀도: 7.91 ms/im, 126 FPS
- INT8 정밀도: 6.05 ms/im, 165 FPS
이러한 벤치마크는 NVIDIA Jetson 하드웨어에서 TensorRT로 최적화된 YOLO11 모델을 사용하는 것의 효율성과 역량을 강조합니다. 자세한 내용은 Benchmark Results 섹션을 참조하세요.