İçeriğe geç

Ultralytics YOLO11 DeepStream SDK kullanarak NVIDIA Jetson'da ve TensorRT



İzle: Jetson Nano üzerinde DeepStream SDK ile Birden Fazla Akış Nasıl Çalıştırılır Ultralytics YOLO11

Bu kapsamlı kılavuz, DeepStream SDK ve TensorRT kullanarak NVIDIA Jetson cihazlarında Ultralytics YOLO11 dağıtımı için ayrıntılı bir yol gösterir. Burada, Jetson platformunda çıkarım performansını en üst düzeye çıkarmak için TensorRT kullanıyoruz.

DeepStream NVIDIA Jetson'da

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'in 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ış analizi 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ını ve izleme, video kodlama/kod çözme ve video işleme gibi diğer karmaşık işleme görevlerini içeren akış işleme ardışık düzenleri oluşturabilirsiniz. Bu işlem hatları video, görüntü ve sensör verileri üzerinde gerçek zamanlı analitik 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 yüklemek için Debian paket yöntemini kullandık. DeepStream'in eski sürümlerine erişmek için DeepStream SDK on Jetson (Archived) sayfasını da ziyaret edebilirsiniz.

DeepStream Yapılandırması için YOLO11

Burada, YOLO modelleri için NVIDIA DeepStream SDK desteğini içeren marcoslucianops/DeepStream-Yolo GitHub deposunu kullanıyoruz. Katkıları için marcoslucianops'un çabalarını takdir ediyoruz!

  1. Install Ultralytics with necessary dependencies

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

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

    cp ~/DeepStream-Yolo/utils/export_yoloV8.py ~/ultralytics
    cd ultralytics
    

    Not

    export_yoloV8.py works for both YOLOv8 and YOLO11 models.

  4. Download Ultralytics YOLO11 detection model (.pt) of your choice from YOLO11 releases. Here we use yolo11s.pt.

    wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s.pt
    

    Not

    Özel eğitimli bir YOLO11 modeli de kullanabilirsiniz.

  5. Modeli şuna dönüştür ONNX

    python3 export_yoloV8.py -w yolo11s.pt
    

    Yukarıdaki komuta aşağıdaki argümanları iletin

    DeepStream 6.0.1 için opset 12 veya daha düşük bir değer kullanın. Varsayılan opset 16'dır.

    --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 parti boyutu kullanmak için (parti boyutu = 4 için örnek)

    --batch 4
    
  6. Copy the generated .onnx model file and labels.txt file to the DeepStream-Yolo klasör

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

    For Jetpack 6.1:

    export CUDA_VER=12.6
    
  8. Kütüphaneyi derleyin

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
    
  9. Düzenleyin config_infer_primary_yoloV8.txt file according to your model (for YOLO11s with 80 classes)

    [property]
    ...
    onnx-file=yolo11s.pt.onnx
    ...
    num-detected-classes=80
    ...
    
  10. Düzenleyin deepstream_app_config dosya

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yoloV8.txt
    
  11. Video kaynağını şu adresten de değiştirebilirsiniz deepstream_app_config dosya. 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

Çıkarsamaya başlamadan önce TensorRT motor dosyasının oluşturulması uzun zaman alacaktır. Bu yüzden lütfen sabırlı olun.

YOLO11 deepstream ile

İpucu

If you want to convert the model to FP16 precision, simply set model-engine-file=model_b1_gpu0_fp16.engine ve network-mode=2 içeride config_infer_primary_yoloV8.txt

INT8 Kalibrasyonu

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

Not

Currently INT8 does not work with TensorRT 10.x. This section of the guide has been tested with TensorRT 8.x which is expected to work.

  1. Set 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 val2017'ye gidin, çıkarın ve DeepStream-Yolo klasör

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

    mkdir calibration
    
  5. Kalibrasyonu çalıştırmak üzere COCO veri setinden 1000 rastgele görüntü 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 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 fazla doğruluk). Baş -1000 arasında ayarlayabilirsiniz. Örneğin, 2000 görüntü için head -2000. Bu işlem uzun sürebilir.

  6. Oluşturmak calibration.txt tüm seçili görüntüleri içeren dosya

    realpath calibration/*jpg > calibration.txt
    
  7. Ortam değişkenlerini ayarlama

    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ı ile sonuçlanacaktır. Bunu GPU belleğinize göre ayarlayın.

  8. Güncelleme config_infer_primary_yoloV8.txt dosya

    Kimden

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

    için

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

MultiStream Kurulumu

Tek bir deepstream uygulaması altında birden fazla akış kurmak için aşağıdaki değişiklikleri yapabilirsiniz deepstream_app_config.txt dosya

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

    [tiled-display]
    rows=2
    columns=2
    
  2. Set num-sources=4 ve ekle uri 4 akışın tamamının

    [source0]
    enable=1
    type=3
    uri=<path_to_video>
    uri=<path_to_video>
    uri=<path_to_video>
    uri=<path_to_video>
    num-sources=4
    

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

deepstream-app -c deepstream_app_config.txt
Çoklu akış kurulumu

Benchmark Sonuçları

The following benchmarks summarizes how YOLO11 models perform at different TensorRT precision levels with an input size of 640x640 on NVIDIA Jetson Orin NX 16GB.

Karşılaştırma Tablosu

Jetson DeepStream Benchmarks Chart

Detaylı Karşılaştırma Tablosu

Performans

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

Teşekkür

Bu rehber ilk olarak Seeed Studio'daki arkadaşlarımız Lakshantha ve Elaine tarafından hazırlanmıştır.

SSS

Bir NVIDIA Jetson cihazında Ultralytics YOLO11 adresini nasıl kurabilirim?

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

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

TensorRT 'u YOLO11 ile kullanmak, çıkarım için modeli optimize ederek gecikme süresini önemli ölçüde azaltır ve NVIDIA Jetson cihazlarında verimi artırır. TensorRT katman füzyonu, hassas kalibrasyon 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 yararlı olan daha hızlı ve daha verimli yürütme sağlar.

Ultralytics YOLO11 adresini DeepStream SDK ile farklı NVIDIA Jetson donanımlarında çalıştırabilir miyim?

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

DeepStream için bir YOLO11 modelini ONNX adresine nasıl dönüştürebilirim?

Bir YOLO11 modelini DeepStream ile dağıtmak üzere ONNX biçimine dönüştürmek için utils/export_yoloV8.py komut dosyasından DeepStream-Yolo Depo.

İşte örnek bir komut:

python3 utils/export_yoloV8.py -w yolo11s.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ın.

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

The performance of YOLO11 models on NVIDIA Jetson Orin NX 16GB varies based on TensorRT precision levels. For example, YOLO11s models achieve:

  • FP32 Precision: 14.6 ms/im, 68.5 FPS
  • FP16 Hassasiyeti: 7,94 ms/im, 126 FPS
  • INT8 Precision: 5.95 ms/im, 168 FPS

Bu kıyaslamalar, NVIDIA Jetson donanımında TensorRT için optimize edilmiş YOLO11 modellerini kullanmanın verimliliğini ve kapasitesini vurgulamaktadır. Daha fazla ayrıntı için Kıyaslama Sonuçları bölümümüze bakın.

📅 6 ay önce oluşturuldu ✏️ 1 gün önce güncellendi

Yorumlar