İçeriğe geç

NVIDIA Jetson'da DeepStream SDK ve TensorRT kullanarak Ultralytics YOLO26



İzle: Ultralytics YOLO26 modellerini Jetson Orin NX üzerinde NVIDIA Deepstream ile nasıl kullanırım 🚀

Bu kapsamlı kılavuz, DeepStream SDK ve TensorRT kullanarak Ultralytics YOLO26'yı NVIDIA Jetson cihazlarına dağıtmak için ayrıntılı bir yol haritası sunar. Burada, Jetson platformunda çıkarım performansını en üst düzeye çıkarmak için TensorRT kullanıyoruz.

NVIDIA DeepStream SDK'sı Jetson platformunda

Not

Bu kılavuz, NVIDIA Jetson Orin Nano Süper Geliştirici Kiti ile JP6.1'in en son kararlı JetPack sürümü, NVIDIA Jetson Orin NX 16GB tabanlı Seeed Studio reComputer J4012 JP5.1.3 JetPack sürümü ve NVIDIA Jetson Nano 4GB tabanlı Seeed Studio reComputer J1020 v2 JP4.6.4 JetPack sürümü ile test edilmiştir. En yeni ve eski olanlar da dahil olmak üzere tüm NVIDIA Jetson donanım serisinde çalışması beklenmektedir.

NVIDIA DeepStream nedir?

NVIDIA'nın DeepStream SDK'sı, yapay zeka 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 vizyon yapay zeka geliştiricileri, yazılım ortakları, yeni başlayanlar ve OEM'ler için idealdir. Artık sinir ağları ve izleme, video kodlama/kod çözme ve video oluşturma gibi diğer karmaşık işleme görevlerini içeren akış işleme hatları oluşturabilirsiniz. Bu işlem hatları, video, görüntü ve sensör verileri üzerinde gerçek zamanlı analiz sağlar. DeepStream'in çoklu platform desteği, şirket içinde, uçta ve bulutta vizyon yapay zeka uygulamaları ve hizmetleri geliştirmenin daha hızlı ve kolay bir yolunu sunar.

Ön koşullar

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

İpucu

Bu kılavuzda, DeepStream SDK'yı Jetson cihazına kurmak için Debian paket yöntemini kullandık. DeepStream'in eski sürümlerine erişmek için Jetson'da DeepStream SDK (Arşivlenmiş) sayfasını da ziyaret edebilirsiniz.

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'a teşekkür ederiz!

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

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

    cd ~
    git clone https://github.com/marcoslucianops/DeepStream-Yolo
    
  3. Kopyala export_yolo26.py dosyası şuradan: DeepStream-Yolo/utils dizinine ultralytics klasör

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

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

    Not

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

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

    python3 export_yolo26.py -w yolo26s.pt
    

    Yukarıdaki komuta aşağıdaki argümanları geçirin

    DeepStream 5.1 için şunu kaldırın: --dynamic argümanını kullanın opset 12 veya daha düşük. 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 toplu iş boyutunu kullanmak için (DeepStream >= 6.1)

    --dynamic
    

    Statik toplu iş boyutunu kullanmak için (toplu iş boyutu = 4 örneği)

    --batch 4
    
  6. Oluşturulanı kopyala .onnx model dosyası ve labels.txt dosyasını şuna: DeepStream-Yolo klasör

    cp yolo26s.pt.onnx labels.txt ~/DeepStream-Yolo
    cd ~/DeepStream-Yolo
    
  7. CUDA sürümünü, kurulu JetPack sürümüne göre ayarlayın

    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
    
  8. Kütüphaneyi derleyin

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
    
  9. Şunu düzenle: config_infer_primary_yolo26.txt modelinize göre dosya (80 sınıflı YOLO26s için)

    [property]
    ...
    onnx-file=yolo26s.pt.onnx
    ...
    num-detected-classes=80
    ...
    
  10. Şunu düzenle: deepstream_app_config dosyası

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yolo26.txt
    
  11. Ayrıca video kaynağını da değiştirebilirsiniz: deepstream_app_config dosyası. 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 zaman alacaktır. Lütfen sabırlı olun.

Deepstream ile YOLO26

İpucu

Modeli FP16 hassasiyetine dönüştürmek istiyorsanız, sadece şunu ayarlayın: model-engine-file=model_b1_gpu0_fp16.engine ve network-mode=2 içinde config_infer_primary_yolo26.txt

INT8 Kalibrasyonu

Çıkarım için INT8 hassasiyetini kullanmak istiyorsanız, aşağıdaki adımları izlemeniz gerekir:

Not

Şu anda INT8, TensorRT 10.x ile çalışmamaktadır. Bu kılavuzun bu bölümü, çalışması beklenen TensorRT 8.x ile test edilmiştir.

  1. Ayarla OPENCV ortam değişkeni

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

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
    
  3. COCO veri kümesi için şunu indirin: val2017, ayıkla ve taşı DeepStream-Yolo klasör

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

    mkdir calibration
    
  5. Kalibrasyonu çalıştırmak için COCO veri kümesinden rastgele 1000 resim seçmek için aşağıdakileri çalıştırın

    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 resim önerir. Bu örnekte, daha iyi doğruluk elde etmek için 1000 resim seçilmiştir (daha fazla resim = daha fazla doğruluk). Bunu head -1000 komutuyla ayarlayabilirsiniz. Örneğin, 2000 resim için head -2000 komutunu kullanın. Bu işlem uzun zaman alabilir.

  6. Şunu oluştur: calibration.txt tüm seçilen görüntüleri içeren dosya

    realpath calibration/*jpg > calibration.txt
    
  7. 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ğinize göre ayarlayın.

  8. Şunu Güncelle config_infer_primary_yolo26.txt dosyası

    Şuradan:

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

    Şunu

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



İzle: Ultralytics YOLO26 kullanarak Jetson Nano üzerinde DeepStream SDK ile Birden Fazla Akışı Çalıştırma 🎉

Tek bir DeepStream uygulaması altında birden çok akış ayarlamak için, deepstream_app_config.txt dosyası:

  1. Sahip olmak istediğiniz akış sayısına göre satırları ve sütunları değiştirerek bir ızgara ekranı oluşturun. Örneğin, 4 akış için 2 satır ve 2 sütun ekleyebiliriz.

    [tiled-display]
    rows=2
    columns=2
    
  2. Ayarla num-sources=4 ve şunu ekleyin: uri dört akışın tümü için girişler.

    [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 çoklu kamera akış yapılandırması

Karşılaştırma Sonuçları

Aşağıdaki karşılaştırmalar, 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 performans karşılaştırmaları

Detaylı Karşılaştırma Tablosu

Performans

FormatDurumÇıkarım süresi (ms/im)
TensorRT (FP32)8.64
TensorRT (FP16)5.27
TensorRT (INT8)4.54
FormatDurumÇıkarım süresi (ms/im)
TensorRT (FP32)14.53
TensorRT (FP16)7.91
TensorRT (INT8)6.05
FormatDurumÇıkarım süresi (ms/im)
TensorRT (FP32)32.05
TensorRT (FP16)15.55
TensorRT (INT8)10.43
FormatDurumÇıkarım süresi (ms/im)
TensorRT (FP32)39.68
TensorRT (FP16)19.88
TensorRT (INT8)13.64
FormatDurumÇıkarım süresi (ms/im)
TensorRT (FP32)80.65
TensorRT (FP16)39.06
TensorRT (INT8)22.83

Teşekkür

Bu kılavuz ilk olarak Seeed Studio'daki arkadaşlarımız Lakshantha ve Elaine tarafından oluşturulmuştur.

SSS

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

Ultralytics YOLO26'yı bir NVIDIA Jetson cihazına kurmak için öncelikle JetPack sürümünüzle uyumlu DeepStream SDK'yı yüklemeniz gerekir. NVIDIA Jetson'ınızı YOLO26 dağıtımı için yapılandırmak üzere Hızlı Başlangıç Kılavuzumuzdaki adım adım talimatları izleyin.

NVIDIA Jetson'da YOLO26 ile TensorRT kullanmanın faydası nedir?

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

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

Evet, Ultralytics YOLO26'yı DeepStream SDK ve TensorRT ile dağıtma kılavuzu, tüm NVIDIA Jetson ürün yelpazesiyle uyumludur. Buna JetPack 5.1.3 yüklü Jetson Orin NX 16GB ve JetPack 4.6.4 yüklü 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ın.

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

Bir YOLO26 modelini DeepStream ile dağıtım için ONNX formatına dönüştürmek için şunu kullanın: utils/export_yolo26.py şu komut dosyası: DeepStream-Yolo deposu.

İşte bir örnek komut:

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

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

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

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

  • FP32 Hassasiyeti: 14.6 ms/im, 68.5 FPS
  • FP16 Hassasiyeti: 7.94 ms/im, 126 FPS
  • INT8 Hassasiyeti: 5,95 ms/im, 168 FPS

Bu karşılaştırmalar, TensorRT optimize edilmiş YOLO26 modellerinin NVIDIA Jetson donanımında kullanımının verimliliğini ve yeteneğini vurgulamaktadır. Daha fazla ayrıntı için Karşılaştırma Sonuçları bölümümüze bakın.



📅 1 yıl önce oluşturuldu ✏️ 1 ay önce güncellendi
glenn-jocherRizwanMunawarlakshanthadpderrengermiles-deans-ultralyticsY-T-GUltralyticsAssistantMatthewNoyce

Yorumlar