DeepStream SDK ve TensorRT kullanarak NVIDIA Jetson üzerinde Ultralytics YOLO11
İzle: Jetson Orin NX'te NVIDIA Deepstream ile Ultralytics YOLO11 modelleri nasıl kullanılır? 🚀
Bu kapsamlı kılavuz, DeepStream SDK ve TensorRT kullanarak Ultralytics YOLO11'i 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'yi kullanıyoruz.
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:
- Ultralytics YOLO11 ile NVIDIA Jetson cihazınızı kurmak için belgemizi ziyaret edin: Hızlı Başlangıç Kılavuzu: Ultralytics YOLO11 ile NVIDIA Jetson
- Kurulum DeepStream SDK JetPack sürümüne göre
- JetPack 4.6.4 için DeepStream 6.0.1'i kurun
- JetPack 5.1.3 için DeepStream 6.3'ü kurun
- JetPack 6.1 için DeepStream 7.1'i yükleyin
İ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.
YOLO11 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!
-
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
-
DeepStream-Yolo deposunu klonlayın
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo
-
Kopyala
export_yolo11.py
dosyası şuradan:DeepStream-Yolo/utils
dizinineultralytics
klasörcp ~/DeepStream-Yolo/utils/export_yolo11.py ~/ultralytics cd ultralytics
-
YOLO11 sürümlerinden seçtiğiniz Ultralytics YOLO11 algılama modelini (.pt) indirin. Burada yolo11s.pt'yi kullanıyoruz.
wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s.pt
Not
Ayrıca özel olarak eğitilmiş bir YOLO11 modeli de kullanabilirsiniz.
-
Modeli ONNX'e dönüştür
python3 export_yolo11.py -w yolo11s.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ınopset
12 veya daha düşük. Varsayılanopset
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
-
Oluşturulanı kopyala
.onnx
model dosyası velabels.txt
dosyasını şuna:DeepStream-Yolo
klasörcp yolo11s.pt.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo
-
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
-
Kütüphaneyi derleyin
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
-
Şunu düzenle:
config_infer_primary_yolo11.txt
modelinize göre dosya (80 sınıflı YOLO11'ler için)[property] ... onnx-file=yolo11s.pt.onnx ... num-detected-classes=80 ...
-
Şunu düzenle:
deepstream_app_config
dosyası... [primary-gie] ... config-file=config_infer_primary_yolo11.txt
-
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.

İ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_yolo11.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.
-
Ayarla
OPENCV
ortam değişkeniexport OPENCV=1
-
Kütüphaneyi derleyin
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
-
COCO veri seti için şunu indirin: val2017, ayıkla ve taşı
DeepStream-Yolo
klasör -
Kalibrasyon görüntüleri için yeni bir dizin oluşturun
mkdir calibration
-
Kalibrasyonu çalıştırmak için COCO veri kümesinden 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 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.
-
Şunu oluştur:
calibration.txt
tüm seçilen görüntüleri içeren dosyarealpath calibration/*jpg > calibration.txt
-
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.
-
Şunu Güncelle
config_infer_primary_yolo11.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 YOLO11 Kullanarak Jetson Nano'da DeepStream SDK ile Çoklu Akış Nasıl Çalıştırılır? 🎉
Tek bir deepstream uygulaması altında birden çok akış ayarlamak için, şunları değiştirebilirsiniz: deepstream_app_config.txt
dosyası
-
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
-
Ayarla
num-sources=4
ve ekleyinuri
4 akışın tamamının[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

Karşılaştırma Sonuçları
Aşağıdaki kıyaslamalar, YOLO11 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

Detaylı Karşılaştırma Tablosu
Performans
Format | Durum | Çıkarım süresi (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 8.64 |
TensorRT (FP16) | ✅ | 5.27 |
TensorRT (INT8) | ✅ | 4.54 |
Format | Durum | Çıkarım süresi (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 14.53 |
TensorRT (FP16) | ✅ | 7.91 |
TensorRT (INT8) | ✅ | 6.05 |
Format | Durum | Çıkarım süresi (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 32.05 |
TensorRT (FP16) | ✅ | 15.55 |
TensorRT (INT8) | ✅ | 10.43 |
Format | Durum | Çıkarım süresi (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 39.68 |
TensorRT (FP16) | ✅ | 19.88 |
TensorRT (INT8) | ✅ | 13.64 |
Format | Durum | Çı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 YOLO11'i nasıl kurarım?
Bir NVIDIA Jetson cihazında Ultralytics YOLO11'i kurmak için, öncelikle JetPack sürümünüzle uyumlu DeepStream SDK'yı yüklemeniz gerekir. YOLO11 dağıtımı için NVIDIA Jetson'ınızı yapılandırmak üzere Hızlı Başlangıç Kılavuzumuzdaki adım adım kılavuzu izleyin.
NVIDIA Jetson'da YOLO11 ile TensorRT kullanmanın faydası nedir?
YOLO11 ile TensorRT kullanmak, modeli çıkarım için optimize ederek gecikmeyi önemli ölçüde azaltır ve NVIDIA Jetson cihazlarında verimi artırır. TensorRT, katman birleştirme, hassasiyet kalibrasyonu ve çekirdek otomatik ayarlaması yoluyla yüksek performanslı, düşük gecikmeli derin öğrenme çıkarımı sağlar. Bu, özellikle video analitiği ve otonom makineler gibi gerçek zamanlı uygulamalar için daha hızlı ve daha verimli yürütmeye yol açar.
Farklı NVIDIA Jetson donanımlarında Ultralytics YOLO11'i DeepStream SDK ile birlikte çalıştırabilir miyim?
Evet, Ultralytics YOLO11'i DeepStream SDK ve TensorRT ile dağıtma kılavuzu, tüm NVIDIA Jetson ürün yelpazesiyle uyumludur. Buna JetPack 5.1.3'e sahip Jetson Orin NX 16GB ve JetPack 4.6.4'e sahip Jetson Nano 4GB gibi cihazlar dahildir. 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'e nasıl dönüştürebilirim?
Bir YOLO11 modelini DeepStream ile dağıtım için ONNX formatına dönüştürmek için şunu kullanın: utils/export_yolo11.py
şu komut dosyası: DeepStream-Yolo deposu.
İşte bir örnek komut:
python3 utils/export_yolo11.py -w yolo11s.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?
YOLO11 modellerinin NVIDIA Jetson Orin NX 16GB üzerindeki performansı, TensorRT hassasiyet seviyelerine göre değişir. Örneğin, YOLO11s modelleri şunları elde eder:
- 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 kıyaslamalar, NVIDIA Jetson donanımında TensorRT ile optimize edilmiş YOLO11 modellerini kullanmanın verimliliğini ve yeteneğini vurgulamaktadır. Daha fazla ayrıntı için Kıyaslama Sonuçları bölümümüze bakın.