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, DeepStream SDK ve TensorRT kullanarak Ultralytics YOLO26'yı NVIDIA Jetson cihazlarına dağıtmanız için ayrıntılı bir izlenecek yol sunar. Burada, Jetson platformunda çıkarım performansını en üst düzeye çıkarmak için TensorRT kullanıyoruz.

NVIDIA DeepStream SDK on Jetson platform
Not

This guide has been tested with NVIDIA Jetson Orin Nano Super Developer Kit running the latest stable JetPack release of JP6.1, Seeed Studio reComputer J4012 which is based on NVIDIA Jetson Orin NX 16GB running JetPack release of JP5.1.3 and Seeed Studio reComputer J1020 v2 which is based on NVIDIA Jetson Nano 4GB running JetPack release of JP4.6.4. It is expected to work across all the NVIDIA Jetson hardware lineup including latest and legacy.

NVIDIA DeepStream nedir?

NVIDIA'nın DeepStream SDK ürünü; yapay zeka tabanlı çoklu sensör işleme, video, ses ve görüntü anlamlandırma için GStreamer tabanlı eksiksiz bir akış analitiği araç setidir. IVA (Akıllı Video Analitiği) uygulamaları ve hizmetleri geliştiren vizyon yapay zeka geliştiricileri, yazılım ortakları, girişimler ve OEM'ler için idealdir. Artık sinir ağlarını ve takip, video kodlama/kod çözme ve video işleme gibi diğer karmaşık görevleri içeren akış işleme boru hatları oluşturabilirsin. Bu boru hatları, video, görüntü ve sensör verileri üzerinde gerçek zamanlı analitiğe olanak tanır. DeepStream'in çoklu platform desteği, yerinde, uçta ve bulutta vizyon yapay zeka uygulamaları ve hizmetleri geliştirmen için daha hızlı ve daha kolay bir yol sunar.

Ön koşullar

Bu kılavuzu takip etmeye başlamadan önce:

İpucu

Bu kılavuzda, DeepStream SDK'yı Jetson cihazına yüklemek için Debian paketi yöntemini kullandık. DeepStream'in eski sürümlerine erişmek için Jetson üzerinde DeepStream SDK (Arşivlenmiş) 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ından dolayı marcoslucianops'un çabalarını takdir ediyoruz!

  1. Gerekli bağımlılıklarla Ultralytics'i kur

    cd ~
    pip install -U pip
    git clone https://github.com/ultralytics/ultralytics
    cd ultralytics
    pip install -e ".[export]" onnxslim
  2. DeepStream-Yolo deposunu kopyala

    cd ~
    git clone https://github.com/marcoslucianops/DeepStream-Yolo
  3. Copy the export_yolo26.py file from DeepStream-Yolo/utils directory to the ultralytics folder

    cp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics
    cd ultralytics
  4. Seçtiğin bir Ultralytics YOLO26 tespit modelini (.pt) YOLO26 sürümlerinden indir. Burada yolo26s.pt kullanıyoruz.

    wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
Not

Ayrıca özel eğitilmiş bir YOLO26 modeli de kullanabilirsin.

  1. Modeli ONNX'e dönüştür

    python3 export_yolo26.py -w yolo26s.pt
Aşağıdaki argümanları yukarıdaki komuta geçir

DeepStream 5.1 için, --dynamic argümanını kaldır ve 12 veya daha düşük bir opset kullan. Varsayılan opset 17'dir.

--opset 12

Çıkarım boyutunu değiştirmek için (varsayılan: 640)

-s SIZE
--size SIZE
-s HEIGHT WIDTH
--size HEIGHT WIDTH

1280 için örnek:

-s 1280
or
-s 1280 1280

ONNX modelini basitleştirmek için (DeepStream >= 6.0)

--simplify

Dinamik yığın boyutu kullanmak için (DeepStream >= 6.1)

--dynamic

Statik yığın boyutu kullanmak için (yığın boyutu = 4 için örnek)

--batch 4
  1. Oluşturulan .onnx model dosyasını ve labels.txt dosyasını DeepStream-Yolo klasörüne kopyala

    cp yolo26s.pt.onnx labels.txt ~/DeepStream-Yolo
    cd ~/DeepStream-Yolo
  2. CUDA sürümünü yüklü JetPack sürümüne göre ayarla

    JetPack 4.6.4 için:

    export CUDA_VER=10.2

    JetPack 5.1.3 için:

    export CUDA_VER=11.4

    JetPack 6.1 için:

    export CUDA_VER=12.6
  3. Kütüphaneyi derle

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
  4. config_infer_primary_yolo26.txt dosyasını modeline göre düzenle (80 sınıflı YOLO26s için)

    [property]
    ...
    onnx-file=yolo26s.pt.onnx
    ...
    num-detected-classes=80
    ...
  5. deepstream_app_config dosyasını düzenle

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yolo26.txt
  6. deepstream_app_config dosyası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
Not

Çıkarıma başlamadan önce TensorRT motor dosyasını oluşturmak uzun sürecektir. Lütfen sabırlı ol.

YOLO26 with deepstream
İpucu

If you want to convert the model to FP16 precision, simply set model-engine-file=model_b1_gpu0_fp16.engine and network-mode=2 inside config_infer_primary_yolo26.txt

INT8 Kalibrasyonu

Çıkarım için INT8 hassasiyetini kullanmak istersen, aşağıdaki adımları izlemen gerekir:

Not

Ş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.

  1. OPENCV ortam değişkenini ayarla

    export OPENCV=1
  2. Kütüphaneyi derle

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
  3. COCO veri kümesi için val2017 dosyasını indir, çıkar ve DeepStream-Yolo klasörüne taşı

  4. Kalibrasyon görüntüleri için yeni bir dizin oluştur

    mkdir calibration
  5. Kalibrasyonu çalıştırmak üzere COCO veri kümesinden rastgele 1000 görüntü seçmek için aşağıdakini çalıştır

    for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do
      cp ${jpg} calibration/
    done
Not

NVIDIA, iyi bir doğruluk elde etmek için en az 500 görüntü önermektedir. 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 ile ayarlayabilirsin. Örneğin, 2000 görüntü için, head -2000. Bu işlem uzun sürebilir.

  1. Seçilen tüm görüntülerle calibration.txt dosyasını oluştur

    realpath calibration/*jpg > calibration.txt
  2. Ortam değişkenlerini ayarla

    export INT8_CALIB_IMG_PATH=calibration.txt
    export INT8_CALIB_BATCH_SIZE=1
Not

Daha yüksek INT8_CALIB_BATCH_SIZE değerleri daha fazla doğruluk ve daha hızlı kalibrasyon hızı sağlayacaktır. GPU belleğine göre ayarla.

  1. config_infer_primary_yolo26.txt dosyasını güncelle

    Başlangıç

    ...
    model-engine-file=model_b1_gpu0_fp32.engine
    #int8-calib-file=calib.table
    ...
    network-mode=0
    ...

    Bitiş

    ...
    model-engine-file=model_b1_gpu0_int8.engine
    int8-calib-file=calib.table
    ...
    network-mode=1
    ...

Çıkarımı çalıştır

deepstream-app -c deepstream_app_config.txt

Çoklu Akış Kurulumu



Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀

Tek bir DeepStream uygulaması altında birden fazla akış kurmak için deepstream_app_config.txt dosyasında şu değişiklikleri yap:

  1. İstediğin akış sayısına göre bir ızgara ekranı 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
  2. num-sources=4 olarak ayarla ve dört akışın tamamı için uri girişlerini ekle.

    [source0]
    enable=1
    type=3
    uri=path/to/video1.jpg
    uri=path/to/video2.jpg
    uri=path/to/video3.jpg
    uri=path/to/video4.jpg
    num-sources=4

Çıkarımı çalıştır

deepstream-app -c deepstream_app_config.txt
DeepStream multi-camera streaming configuration

Kıyaslama Sonuçları

Aşağıdaki kıyaslamalar, YOLO26 modellerinin NVIDIA Jetson Orin NX 16GB üzerinde 640x640 giriş boyutuyla farklı TensorRT hassasiyet seviyelerinde nasıl performans gösterdiğini özetlemektedir.

Karşılaştırma Tablosu

NVIDIA Jetson DeepStream performance benchmarks

Ayrıntılı Karşılaştırma Tablosu

Performans
FormatDurumÇıkarım süresi (ms/görüntü)
TensorRT (FP32)8.64
TensorRT (FP16)5.27
TensorRT (INT8)4.54

Teşekkürler

Bu kılavuz başlangıçta Seeed Studio'dan arkadaşlarımız Lakshantha ve Elaine tarafından oluşturulmuştur.

SSS

Ultralytics YOLO26'yı bir NVIDIA Jetson cihazında nasıl kurarım?

Bir NVIDIA Jetson cihazında Ultralytics YOLO26'yı kurmak için öncelikle JetPack sürümünle uyumlu DeepStream SDK yazılımını yüklemen gerekir. NVIDIA Jetson'ını YOLO26 dağıtımı için yapılandırmak adına Hızlı Başlangıç Kılavuzumuzdaki adım adım talimatları izle.

NVIDIA Jetson üzerinde YOLO26 ile TensorRT kullanmanın faydası nedir?

YOLO26 ile TensorRT kullanmak, modeli çıkarım için optimize eder, NVIDIA Jetson cihazlarında gecikmeyi önemli ölçüde azaltır ve iş hacmini artırır. TensorRT, katman birleştirme, hassasiyet kalibrasyonu ve çekirdek otomatik ayarı yoluyla yüksek performanslı, düşük gecikmeli derin öğrenme çıkarımı sağlar. Bu, özellikle video analitiği ve otonom makineler gibi gerçek zamanlı uygulamalar için yararlı olan daha hızlı ve daha verimli bir yürütmeye yol açar.

Ultralytics YOLO26'yı DeepStream SDK ile farklı NVIDIA Jetson donanımlarında çalıştırabilir miyim?

Evet, Ultralytics YOLO26'yı DeepStream SDK ve TensorRT ile dağıtma kılavuzu, NVIDIA Jetson serisinin tamamıyla uyumludur. Buna JetPack 5.1.3 ile Jetson Orin NX 16GB ve JetPack 4.6.4 ile Jetson Nano 4GB gibi cihazlar dahildir. Ayrıntılı adımlar için YOLO26 için DeepStream Yapılandırması bölümüne bak.

Bir YOLO26 modelini DeepStream için nasıl ONNX'e dönüştürebilirim?

To convert a YOLO26 model to ONNX format for deployment with DeepStream, use the utils/export_yolo26.py script from the DeepStream-Yolo repository.

İşte örnek bir komut:

python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplify

Model dönüştürme hakkında daha fazla ayrıntı için model dışa aktarma bölümümüze göz at.

NVIDIA Jetson Orin NX üzerinde YOLO için performans kıyaslamaları nelerdir?

YOLO26 modellerinin NVIDIA Jetson Orin NX 16GB üzerindeki performansı, TensorRT hassasiyet seviyelerine bağlı olarak değişir. Örneğin, YOLO26s modelleri şunları başarır:

  • FP32 Hassasiyeti: 14.6 ms/görüntü, 68.5 FPS
  • FP16 Hassasiyeti: 7.94 ms/görüntü, 126 FPS
  • INT8 Hassasiyeti: 5.95 ms/görüntü, 168 FPS

Bu kıyaslamalar, NVIDIA Jetson donanımı üzerinde TensorRT ile optimize edilmiş YOLO26 modellerini kullanmanın verimliliğini ve yeteneğini vurgular. Daha fazla ayrıntı için Kıyaslama Sonuçları bölümümüze bak.

Yorumlar