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.
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:
- Belgelerimizi ziyaret edin, Hızlı Başlangıç Kılavuzu: NVIDIA Jetson with Ultralytics YOLO11 ile NVIDIA Jetson cihazınızı kurmak için Ultralytics YOLO11
-
JetPack sürümüne göre DeepStream SDK 'yı yükleyin
- JetPack 4.6.4 için DeepStream 6.0.1'i yükleyin
- JetPack 5.1.3 için DeepStream 6.3'ü yükleyin
İ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!
-
Bağımlılıkları yükleme
-
Aşağıdaki depoyu klonlayın
-
YOLO11 sürümlerinden seçtiğiniz Ultralytics YOLO11 algılama modelini (.pt) indirin. Burada yolov8s.pt kullanıyoruz.
Not
Özel eğitimli bir YOLO11 modeli de kullanabilirsiniz.
-
Modeli şuna dönüştür ONNX
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.
Çıkarım boyutunu değiştirmek için (varsayılan: 640)
1280 için örnek:
ONNX modelini basitleştirmek için (DeepStream >= 6.0)
Dinamik yığın boyutu kullanmak için (DeepStream >= 6.1)
Statik parti boyutu kullanmak için (parti boyutu = 4 için örnek)
-
CUDA sürümünü kurulu JetPack sürümüne göre ayarlayın
JetPack 4.6.4 için:
JetPack 5.1.3 için:
-
Kütüphaneyi derleyin
-
Düzenleyin
config_infer_primary_yoloV8.txt
dosyası modelinize göre (80 sınıflı YOLOv8s için) -
Düzenleyin
deepstream_app_config
dosya -
Video kaynağını şu adresten de değiştirebilirsiniz
deepstream_app_config
dosya. Burada varsayılan bir video dosyası yüklenir
Çıkarım Çalıştır
Not
Çıkarsamaya başlamadan önce TensorRT motor dosyasının oluşturulması uzun zaman alacaktır. Bu yüzden lütfen sabırlı olun.
İ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
-
Set
OPENCV
ortam değişkeni -
Kütüphaneyi derleyin
-
COCO veri kümesi için val2017'ye gidin, çıkarın ve
DeepStream-Yolo
klasör -
Kalibrasyon görüntüleri için yeni bir dizin oluşturun
-
Kalibrasyonu çalıştırmak üzere COCO veri setinden 1000 rastgele görüntü seçmek için aşağıdakileri çalıştırın
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.
-
Oluşturmak
calibration.txt
tüm seçili görüntüleri içeren dosya -
Ortam değişkenlerini ayarlama
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.
-
Güncelleme
config_infer_primary_yoloV8.txt
dosyaKimden
için
Çıkarım Çalıştır
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
-
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.
-
Set
num-sources=4
ve ekleuri
4 akışın tamamının
Çıkarım Çalıştır
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:
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.