İç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

Bu kılavuz, JP5.1.3 JetPack sürümünü çalıştıran NVIDIA Jetson Orin NX 16GB tabanlı Seeed Studio reComputer J4012 ve JP4.6.4 JetPack sürümünü çalıştıran NVIDIA Jetson Nano 4GB tabanlı Seeed Studio reComputer J1020 v2 ile test edilmiştir. En yeni ve eski dahil olmak üzere tüm NVIDIA Jetson donanım serisinde çalışması beklenmektedir.

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. Bağımlılıkları yükleme

    pip install cmake
    pip install onnxsim
    
  2. Aşağıdaki depoyu klonlayın

    git clone https://github.com/marcoslucianops/DeepStream-Yolo
    cd DeepStream-Yolo
    
  3. YOLO11 sürümlerinden seçtiğiniz Ultralytics YOLO11 algılama modelini (.pt) indirin. Burada yolov8s.pt kullanıyoruz.

    wget https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8s.pt
    

    Not

    Özel eğitimli bir YOLO11 modeli de kullanabilirsiniz.

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

    python3 utils/export_yoloV8.py -w yolov8s.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
    
  5. 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
    
  6. Kütüphaneyi derleyin

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
    
  7. Düzenleyin config_infer_primary_yoloV8.txt dosyası modelinize göre (80 sınıflı YOLOv8s için)

    [property]
    ...
    onnx-file=yolov8s.onnx
    ...
    num-detected-classes=80
    ...
    
  8. Düzenleyin deepstream_app_config dosya

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yoloV8.txt
    
  9. 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

Modeli FP16'ya dönüştürmek istiyorsanız hassas, basitçe ayarlayın 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

  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ı

Aşağıdaki tabloda YOLOv8s modellerinin NVIDIA Jetson Orin NX 16GB üzerinde 640x640 giriş boyutuyla farklı TensorRT hassasiyet seviyelerinde nasıl performans gösterdiği özetlenmektedir.

Model Adı Hassasiyet Çıkarım Süresi (ms/im) FPS
YOLOv8s FP32 15.63 64
FP16 7.94 126
INT8 5.53 181

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

YOLO11 modellerinin NVIDIA Jetson Orin NX 16GB üzerindeki performansı TensorRT hassasiyet seviyelerine göre değişir. Örneğin, YOLOv8s modelleri elde eder:

  • FP32 Hassasiyeti: 15,63 ms/im, 64 FPS
  • FP16 Hassasiyeti: 7,94 ms/im, 126 FPS
  • INT8 Hassasiyeti: 5,53 ms/im, 181 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.

📅5 ay önce oluşturuldu ✏️ 2 ay önce güncellendi

Yorumlar