Ultralytics YOLOv8 NVIDIA Jetson'da DeepStream SDK kullanarak ve TensorRT
Bu kapsamlı kılavuz, DeepStream SDK ve TensorRT kullanarak Ultralytics YOLOv8 adresini NVIDIA Jetson cihazlarına dağıtmak için ayrıntılı bir yol gösterir. Burada, Jetson platformunda çıkarım performansını en üst düzeye çıkarmak için TensorRT adresini 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'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ış analizi araç setidir. IVA (Akıllı Video Analizi) uygulamaları ve hizmetleri geliştiren vizyon yapay zeka geliştiricileri, yazılım ortakları, startup'lar 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 izlemeye başlamadan önce:
- Belgelerimizi ziyaret edin, Hızlı Başlangıç Kılavuzu: NVIDIA J etson cihazınızı Ultralytics YOLOv8 ile kurmak için NVIDIA Jetson Ultralytics YOLOv8
-
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.
Şunun için DeepStream Yapılandırması YOLOv8
Burada, YOLO modelleri için NVIDIA DeepStream SDK desteğini içeren marcoslucianops/DeepStream-Yolo GitHub deposunu kullanıyoruz. marcoslucianops'a katkılarından dolayı teşekkür ederiz!
-
Yükleme bağımlılıkları
-
Aşağıdaki depoyu kopyalayın
-
YOLOv8 sürümlerinden seçtiğiniz Ultralytics YOLOv8 algılama modelini (.pt) indirin. Burada yolov8s.pt kullanıyoruz.
Not
Özel eğitimli bir YOLOv8 modeli de kullanabilirsiniz.
-
Modeli şuna dönüştür ONNX
Aşağıdaki bağımsız değişkenleri yukarıdaki komuta iletin
DeepStream 6.0.1 için opset 12 veya daha düşük bir sürümü kullanın. Varsayılan işlem kümesi 16'dır.
Çıkarım boyutunu değiştirmek için (varsayılan: 640)
1280 için örnek:
Basitleştirmek için ONNX modeli (DeepStream >= 6.0)
Dinamik toplu iş boyutu kullanmak için (DeepStream >= 6.1)
Statik toplu iş boyutu kullanmak için (toplu iş boyutu = 4 için örnek)
-
CUDA sürümünü, yüklü JetPack sürümüne göre ayarlayın
JetPack 4.6.4 için:
JetPack 5.1.3 için:
-
Kitaplığı derleyin
-
Düzenleyin
config_infer_primary_yoloV8.txt
modelinize göre dosya ( YOLOv8s 80 sınıflı) -
Düzenleyin
deepstream_app_config
dosya -
Video kaynağını şuradan da değiştirebilirsiniz:
deepstream_app_config
dosya. Burada varsayılan bir video dosyası yüklenir
Çıkarımı Çalıştır
Not
Oluşturmak uzun zaman alacak TensorRT Çıkarıma başlamadan önce motor dosyası. Bu yüzden lütfen sabırlı olun.
İpucu
Modeli FP16 hassasiyetine dönüştürmek istiyorsanız, model-engine-file=model_b1_gpu0_fp16.engine
ve network-mode=2
içinde config_infer_primary_yoloV8.txt
INT8 Kalibrasyonu
Çıkarım için INT8 hassasiyetini kullanmak istiyorsanız, aşağıdaki adımları izlemeniz gerekir
-
Ayarlamak
OPENCV
ortam değişkeni -
Kitaplığı 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 kümesinden 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ştur
calibration.txt
Seçilen tüm 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. GPU belleğinize göre ayarlayın.
-
Güncelle
config_infer_primary_yoloV8.txt
dosyaKimden
için
Çıkarımı Çalıştır
MultiStream Kurulumu
Tek bir derin akış uygulaması altında birden fazla akış ayarlamak için, deepstream_app_config.txt
dosya
-
Sahip olmak istediğiniz akış sayısına göre bir ızgara görüntüsü 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.
-
Ayarlamak
num-sources=4
ve ekleuri
4 akışın tümünün
Çıkarımı Çalıştır
Benchmark Sonuçları
Aşağıdaki tabloda nasıl olduğu özetlenmektedir YOLOv8s modeller farklı performanslar sergiliyor TensorRT NVIDIA Jetson Orin NX 16 GB'ta 640x640 giriş boyutuna sahip hassasiyet seviyeleri.
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 başlangıçta Seeed Studio, Lakshantha ve Elaine'deki arkadaşlarımız tarafından oluşturuldu.