DeepStream SDK ve TensorRT kullanarak NVIDIA Jetson üzerinde Ultralytics YOLO26#
Watch: How to use Ultralytics YOLO26 models with NVIDIA Deepstream on Jetson Orin NX 🚀
Bu kapsamlı kılavuz, NVIDIA Jetson cihazlarında DeepStream SDK ve TensorRT kullanarak Ultralytics YOLO26 dağıtımını ayrıntılı şekilde ele alır. Burada, Jetson platformunda çıkarım performansını en üst düzeye çıkarmak için TensorRT kullanıyoruz.
Bu kılavuzda YOLO26 için DeepStream yapılandırması, INT8 kalibrasyonu, çoklu akış kurulumu ve karşılaştırma sonuçları adım adım açıklanır.

Bu kılavuz, JP6.1 sürümünün en güncel kararlı JetPack sürümünü çalıştıran NVIDIA Jetson Orin Nano Super Developer Kit, NVIDIA Jetson Orin NX 16GB tabanlı ve JP5.1.3 JetPack sürümünü çalıştıran Seeed Studio reComputer J4012 ve NVIDIA Jetson Nano 4GB tabanlı, JP4.6.4 JetPack sürümünü çalıştıran Seeed Studio reComputer J1020 v2 ile test edilmiştir. En yeni ve eski modeller dâhil olmak üzere tüm NVIDIA Jetson donanım serisinde çalışması beklenir.
NVIDIA DeepStream nedir?#
NVIDIA DeepStream SDK, yapay zekâ tabanlı çoklu sensör işleme, video, ses ve görüntü anlama için GStreamer tabanlı eksiksiz bir akış analitiği araç setidir. IVA (Akıllı Video Analitiği) uygulamaları ve hizmetleri geliştiren görüntü yapay zekâsı geliştiricileri, yazılım iş ortakları, girişimler ve OEM'ler için idealdir. Artık sinir ağlarını izleme, video kodlama/kod çözme ve video işleme gibi diğer karmaşık görevlerle birleştiren akış işleme işlem hatları oluşturabilirsin. Bu işlem hatları video, görüntü ve sensör verileri üzerinde gerçek zamanlı analitik yapılmasını sağlar. DeepStream'in çoklu platform desteği, görüntü yapay zekâsı uygulamalarını ve hizmetlerini şirket içinde, uçta ve bulutta daha hızlı ve kolay geliştirmeni sağlar.
Ön koşullar#
Bu kılavuzu uygulamaya başlamadan önce:
- NVIDIA Jetson cihazını Ultralytics YOLO26 ile kurmak için belgelerimizdeki Hızlı Başlangıç Kılavuzu: NVIDIA Jetson ile Ultralytics YOLO26 sayfasını ziyaret et
- DeepStream SDK kurulumunu JetPack sürümüne göre yap
- JetPack 4.6.4 için DeepStream 6.0.1 kur
- JetPack 5.1.3 için DeepStream 6.3 kur
- JetPack 6.1 için DeepStream 7.1 kur
- JetPack 7.1 için DeepStream 9.0 kur
Bu kılavuzda DeepStream SDK'yı Jetson cihazına kurmak için Debian paketi yöntemini kullandık. DeepStream'in eski sürümlerine erişmek için Jetson üzerinde DeepStream SDK (Arşiv) sayfasını da ziyaret edebilirsin.
YOLO26 için DeepStream Yapılandırması#
Burada, YOLO modelleri için NVIDIA DeepStream SDK desteği içeren marcoslucianops/DeepStream-Yolo GitHub deposunu kullanıyoruz. Katkıları için marcoslucianops'un çabalarını takdir ediyoruz!
-
Ultralytics'i gerekli bağımlılıklarla kur
pip install ultralytics onnx onnxslim -
DeepStream-Yolo deposunu klonla
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
YOLO26 projesinden istediğin bir Ultralytics YOLO26 algılama modelini (.pt) indir. Burada yolo26s.pt kullanıyoruz.
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
Ayrıca özel olarak eğitilmiş bir YOLO26 modeli de kullanabilirsin.
-
Modeli ONNX formatına denüştür ve DeepStream'in sınıf adlarını okuduğu
labels.txtdosyasını yazfrom 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 içermeyen kafayı dışa aktarır ve agnostic_nms=True, algılama başına tek bir sınıf tutar; böylece DeepStream yapılandırmasındaki cluster-mode=4 (kümeleme yok) bir kutuyu iki kez çizmez. Çıkarım boyutunu (varsayılan: 640) değiştirmek için imgsz=1280, 4'lük bir yığın boyutu için batch=4 (dışa aktarılan yığın statiktir, bu nedenle DeepStream yapılandırmasındaki batch-size ile eşleşmelidir) ve TensorRT 8.2 veya daha eski sürümler (DeepStream 6.0.1 ve öncesi) için opset=12 ekle. Tam liste için dışa aktarma argümanları bölümüne göz at.
-
Oluşturulan
.onnxmodel dosyasını velabels.txtdosyasınıDeepStream-Yoloklasörüne kopyalacp yolo26s.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo -
CUDA sürümünü kurulu JetPack sürümüne göre ayarla
JetPack 4.6.4 için:
export CUDA_VER=10.2JetPack 5.1.3 için:
export CUDA_VER=11.4JetPack 6.1 için:
export CUDA_VER=12.6JetPack 7.1 için:
export CUDA_VER=13.0 -
Kitaplığı derle
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
config_infer_primary_yolo26.txtdosyasını modeline göre düzenle (80 sınıflı YOLO26s için)[property] ... onnx-file=yolo26s.onnx ... num-detected-classes=80 ... parse-bbox-func-name=NvDsInferParseYolo ...
YOLO26, girdiyi merkezden doldurma ile yeniden boyutlandırır ve NMS olmadan çalışır. En iyi doğruluk için config_infer_primary_yolo26.txt dosyasının [property] bölümüne aşağıdakini ekle:
[property]
...
maintain-aspect-ratio=1
symmetric-padding=1
cluster-mode=4
...-
deepstream_app_configdosyasını düzenle... [primary-gie] ... config-file=config_infer_primary_yolo26.txt -
deepstream_app_configdosyasındaki video kaynağını da değiştirebilirsin. Burada varsayılan bir video dosyası yüklenir... [source0] ... uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
Çıkarımı çalıştır#
deepstream-app -c deepstream_app_config.txtÇıkarım başlamadan önce TensorRT motor dosyasının oluşturulması uzun sürecektir. Bu yüzden lütfen sabırlı ol.

Modeli FP16 hassasiyetine dönüştürmek istiyorsan config_infer_primary_yolo26.txt içinde yalnızca model-engine-file=model_b1_gpu0_fp16.engine ve network-mode=2 değerlerini ayarla
INT8 Kalibrasyonu#
Çıkarım için INT8 hassasiyetini kullanmak istiyorsan aşağıdaki adımları uygulaman gerekir:
Şu anda INT8, TensorRT 10.x ile çalışmıyor. Kılavuzun bu bölümü, çalışması beklenen TensorRT 8.x ile test edilmiştir.
-
OPENCVortam değişkenini ayarlaexport OPENCV=1 -
Kitaplığı derle
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
COCO veri kümesi için val2017 dosyasını indir, çıkart ve
DeepStream-Yoloklasörüne taşı -
Kalibrasyon görüntüleri için yeni bir dizin oluştur
mkdir calibration -
COCO veri kümesinden kalibrasyon çalıştırmak üzere rastgele 1000 görüntü seçmek için aşağıdaki komutu çalıştır
for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do cp ${jpg} calibration/ done
NVIDIA, iyi bir doğruluk elde etmek için en az 500 görüntü önerir. Bu örnekte daha iyi doğruluk elde etmek için 1000 görüntü seçilmiştir (daha fazla görüntü = daha yüksek doğruluk). Bunu head -1000 değerinden ayarlayabilirsin. Örneğin 2000 görüntü için head -2000 kullan. Bu işlem uzun sürebilir.
-
Seçilen tüm görüntülerle
calibration.txtdosyasını oluşturrealpath calibration/*jpg > calibration.txt -
Ortam değişkenlerini ayarla
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1
Daha yüksek INT8_CALIB_BATCH_SIZE değerleri daha yüksek doğruluk ve daha hızlı kalibrasyon sağlar. Değeri GPU belleğine göre ayarla.
-
config_infer_primary_yolo26.txtdosyasını güncelleŞundan
... model-engine-file=model_b1_gpu0_fp32.engine #int8-calib-file=calib.table ... network-mode=0 ...Şuna
... model-engine-file=model_b1_gpu0_int8.engine int8-calib-file=calib.table ... network-mode=1 ...
INT8 Çıkarımını Çalıştır#
INT8 motorunu oluşturmak ve çıkarımı başlatmak için aynı komutu çalıştır:
deepstream-app -c deepstream_app_config.txtMultiStream Kurulumu#
Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀
Tek bir DeepStream uygulamasında birden fazla akış ayarlamak için deepstream_app_config.txt dosyasında aşağıdaki değişiklikleri yap:
-
Sahip olmak istediğin akış sayısına göre ızgara görünümü oluşturmak için satır ve sütunları değiştir. Örneğin 4 akış için 2 satır ve 2 sütun ekleyebiliriz.
[tiled-display] rows=2 columns=2 -
Her akış için, kendine ait
urivenum-sources=1değerlerini içeren ayrı bir[sourceN]grubu ekle.[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
Çoklu Akış Çıkarımını Çalıştır#
Tüm akışları döşeli görünümde başlatmak için aynı komutu çalıştır:
deepstream-app -c deepstream_app_config.txt
Karşılaştırma Sonuçları#
Aşağıdaki karşılaştırmalar, NVIDIA Jetson Orin NX 16GB üzerinde 640x640 giriş boyutuyla farklı TensorRT hassasiyet düzeylerinde YOLO11 modellerinin performansını özetler. YOLO26, yukarıda açıklanan aynı DeepStream dışa aktarma ve çıkarım iş akışını kullanır.
Karşılaştırma Grafiği#

Ayrıntılı Karşılaştırma Tablosu#
| Biçim | Durum | Çıkarım süresi (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
Teşekkürler#
Bu kılavuz ilk olarak Seeed Studio'daki arkadaşlarımız Lakshantha ve Elaine tarafından oluşturulmuştur.
SSS#
Ultralytics YOLO26'yı bir NVIDIA Jetson cihazında kurmak için önce JetPack sürümünle uyumlu DeepStream SDK'yı yüklemen gerekir. NVIDIA Jetson'ını YOLO26 dağıtımı için yapılandırmak üzere Hızlı Başlangıç Kılavuzumuzdaki adım adım talimatları izle.
TensorRT'yi YOLO26 ile kullanmak modeli çıkarım için optimize eder, NVIDIA Jetson cihazlarında gecikmeyi önemli ölçüde azaltır ve işlem hacmini artırır. TensorRT; katman birleştirme, hassasiyet kalibrasyonu ve çekirdek otomatik ayarlama sayesinde yüksek performanslı, düşük gecikmeli derin öğrenme çıkarımı sağlar. Bu, özellikle video analitiği ve otonom makineler gibi gerçek zamanlı uygulamalarda daha hızlı ve verimli çalışmayla sonuçlanır.
Evet, Ultralytics YOLO26'yı DeepStream SDK ve TensorRT ile dağıtmaya yönelik bu kılavuz, tüm NVIDIA Jetson serisiyle uyumludur. Buna JetPack 5.1.3 kullanan Jetson Orin NX 16GB ve JetPack 4.6.4 kullanan Jetson Nano 4GB gibi cihazlar da dâhildir. Ayrıntılı adımlar için YOLO26 için DeepStream Yapılandırması bölümüne bak.
Ultralytics dışa aktarıcısını kullanarak modeli NMS içermeyen kafayla dışa aktar ve DeepStream'in sınıf adlarını okuduğu
labels.txtdosyasını yaz: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()))TensorRT 8.2 veya daha eski sürümler (DeepStream 6.0.1 ve öncesi) için
opset=12ekle. Model dönüşümü hakkında daha fazla ayrıntı için model dışa aktarma bölümü kısmına göz at.INT8 çıkarımını çalıştırmak için modeli temsili bir görüntü kümesiyle kalibre et ve DeepStream yapılandırmasını INT8 moduna geçir. COCO val2017 görüntülerini indir, yaklaşık 1000 kalibrasyon görüntüsü seç,
INT8_CALIB_IMG_PATHveINT8_CALIB_BATCH_SIZEortam değişkenlerini ayarla, ardındanconfig_infer_primary_yolo26.txtdosyasınımodel-engine-file=model_b1_gpu0_int8.engine,int8-calib-file=calib.tablevenetwork-mode=1ile güncelle. Tüm adımlar için INT8 Kalibrasyonu bölümüne bak. INT8 şu anda TensorRT 8.x gerektirir.Tek bir DeepStream uygulamasında birden fazla akışı işlemek için döşeli görünüm ızgarası eklemek ve her kaynak URI'sini listelemek üzere
deepstream_app_config.txtdosyasını düzenle. Izgarayı oluşturmak için[tiled-display]altındarowsvecolumnsdeğerlerini ayarla; her akış için kendine aiturivenum-sources=1değerlerine sahip ayrı bir[sourceN]grubu ekle ve ızgarayı akış sayısına uyacak şekilde düzenle. Eksiksiz bir örnek için MultiStream Kurulumu bölümüne bak.NVIDIA Jetson Orin NX 16GB üzerindeki YOLO11 modellerinin performansı, TensorRT hassasiyet düzeylerine göre değişir. Örneğin YOLO11s modelleri şu sonuçları elde eder:
- FP32 Hassasiyeti: 14.53 ms/im, 68.8 FPS
- FP16 Hassasiyeti: 7.91 ms/im, 126 FPS
- INT8 Hassasiyeti: 6.05 ms/im, 165 FPS
Bu karşılaştırmalar, TensorRT ile optimize edilmiş YOLO11 modellerinin NVIDIA Jetson donanımındaki verimliliğini ve yeteneklerini ortaya koyar. Daha fazla ayrıntı için Karşılaştırma Sonuçları bölümümüze bak.