Hızlı Başlangıç Kılavuzu: NVIDIA Jetson ile Ultralytics YOLOv8
Bu kapsamlı kılavuz, Ultralytics YOLOv8 adresinin NVIDIA Jetson cihazlarına dağıtılması için ayrıntılı bir yol gösterir. Ayrıca, bu küçük ve güçlü cihazlarda YOLOv8 'un yeteneklerini göstermek için performans kıyaslamalarını sergilemektedir.
Not
Bu kılavuz, JP5.1.3'ün en son kararlı JetPack sürümünü çalıştıran NVIDIA Jetson Orin NX 16GB tabanlı Seeed Studio reComputer J4012 ile test edilmiştir. Jetson Nano gibi daha eski Jetson cihazları için bu kılavuzun kullanılması (bu yalnızca JP4.6.4'e kadar destekler) çalışmayı garanti etmeyebilir. Ancak bunun JP5.1.3 çalıştıran tüm Jetson Orin, Xavier NX, AGX Xavier cihazlarında çalışması beklenmektedir.
NVIDIA Jetson nedir?
NVIDIA Jetson, uç cihazlara hızlandırılmış AI (yapay zeka) bilişimi getirmek için tasarlanmış bir dizi gömülü bilişim kartıdır. Bu kompakt ve güçlü cihazlar NVIDIA'nın GPU mimarisi üzerine inşa edilmiştir ve bulut bilişim kaynaklarına ihtiyaç duymadan karmaşık yapay zeka algoritmalarını ve derin öğrenme modellerini doğrudan cihaz üzerinde çalıştırabilir. Jetson kartları genellikle robotik, otonom araçlar, endüstriyel otomasyon ve yapay zeka çıkarımının düşük gecikme süresi ve yüksek verimlilikle yerel olarak gerçekleştirilmesi gereken diğer uygulamalarda kullanılır. Ayrıca, bu kartlar ARM64 mimarisini temel alır ve geleneksel GPU bilgi işlem cihazlarına kıyasla daha düşük güçle çalışır.
NVIDIA Jetson Serisi Karşılaştırması
Jetson Orin, NVIDIA Ampere mimarisine dayanan NVIDIA Jetson ailesinin en son yinelemesidir ve önceki nesillere kıyasla büyük ölçüde geliştirilmiş yapay zeka performansı sunar. Aşağıdaki tabloda ekosistemdeki Jetson cihazlarından birkaçı karşılaştırılmıştır.
Jetson AGX Orin 64GB | Jetson Orin NX 16GB | Jetson Orin Nano 8GB | Jetson AGX Xavier | Jetson Xavier NX | Jetson Nano | |
---|---|---|---|---|---|---|
Yapay Zeka Performansı | 275 TOPS | 100 TOPS | 40 TOP | 32 TOPS | 21 TOPS | 472 GFLOPS |
GPU | 64 Tensor Çekirdekli 2048 çekirdekli NVIDIA Ampere mimarili GPU | 32 Tensor Çekirdekli 1024 çekirdekli NVIDIA Ampere mimarili GPU | 32 Tensor Çekirdekli 1024 çekirdekli NVIDIA Ampere mimarili GPU | 64 Tensor Çekirdekli 512 çekirdekli NVIDIA Volta mimarili GPU | 48 Tensor Çekirdekli 384 çekirdekli NVIDIA Volta™ mimarili GPU | 128 çekirdekli NVIDIA Maxwell™ mimarili GPU |
GPU Maksimum Frekansı | 1,3 GHz | 918 MHz | 625 MHz | 1377 MHz | 1100 MHz | 921MHz |
CPU | 12 çekirdekli NVIDIA Arm® Cortex A78AE v8.2 64-bit CPU 3MB L2 + 6MB L3 | 8 çekirdekli NVIDIA Arm® Cortex A78AE v8.2 64-bit CPU 2MB L2 + 4MB L3 | 6 çekirdekli Arm® Cortex®-A78AE v8.2 64-bit CPU 1.5MB L2 + 4MB L3 | 8 çekirdekli NVIDIA Carmel Arm®v8.2 64-bit CPU 8MB L2 + 4MB L3 | 6 çekirdekli NVIDIA Carmel Arm®v8.2 64-bit CPU 6MB L2 + 4MB L3 | Dört Çekirdekli Arm® Cortex®-A57 MPCore işlemci |
CPU Maksimum Frekansı | 2,2 GHz | 2.0 GHz | 1,5 GHz | 2,2 GHz | 1,9 GHz | 1.43GHz |
Hafıza | 64GB 256-bit LPDDR5 204,8GB/sn | 16GB 128-bit LPDDR5 102,4GB/s | 8GB 128-bit LPDDR5 68 GB/sn | 32GB 256-bit LPDDR4x 136,5GB/s | 8GB 128-bit LPDDR4x 59,7GB/sn | 4GB 64-bit LPDDR4 25,6GB/s" |
Daha ayrıntılı bir karşılaştırma tablosu için lütfen resmi NVIDIA Jetson sayfasının Teknik Özellikler bölümünü ziyaret edin.
NVIDIA JetPack nedir?
Jetson modüllerine güç veren NVIDIA JetPack SDK, en kapsamlı çözümdür ve uçtan uca hızlandırılmış yapay zeka uygulamaları oluşturmak için tam geliştirme ortamı sağlar ve pazara sunma süresini kısaltır. JetPack, önyükleyicili Jetson Linux, Linux çekirdeği, Ubuntu masaüstü ortamı ve GPU hesaplama, multimedya, grafik ve bilgisayarla görmenin hızlandırılması için eksiksiz bir kütüphane seti içerir. Ayrıca hem ana bilgisayar hem de geliştirici kiti için örnekler, belgeler ve geliştirici araçları içerir ve video analizi akışı için DeepStream, robotik için Isaac ve konuşma yapay zekası için Riva gibi daha üst düzey SDK'ları destekler.
NVIDIA Jetson'a Flash JetPack
Bir NVIDIA Jetson cihazına sahip olduktan sonraki ilk adım, NVIDIA JetPack'i cihaza flash'lamaktır. NVIDIA Jetson cihazlarını flaşlamanın birkaç farklı yolu vardır.
- Jetson Orin Nano Geliştirici Kiti gibi resmi bir NVIDIA Geliştirme Kitine sahipseniz, bu bağlantıyı ziyaret ederek bir görüntü indirebilir ve cihazı başlatmak için JetPack ile bir SD kart hazırlayabilirsiniz.
- Başka bir NVIDIA Geliştirme Kitine sahipseniz SDK Manager'ı kullanarak JetPack'i cihaza flash'lamak için bu bağlantıyı ziyaret edebilirsiniz.
- Seeed Studio reComputer J4012 cihazınız varsa, JetPack'i birlikte verilen SSD'ye flaşlamak için bu bağlantıyı ziyaret edebilirsiniz.
- NVIDIA Jetson modülü tarafından desteklenen başka bir üçüncü taraf cihazınız varsa bu bağlantıyı ziyaret ederek komut satırı yanıp sönmesini izlemeniz önerilir.
Not
Yukarıdaki 3. ve 4. yöntemler için, sistemi flaşladıktan ve cihazı başlattıktan sonra, gerekli tüm diğer JetPack bileşenlerini yüklemek için lütfen cihaz terminaline "sudo apt update && sudo apt install nvidia-jetpack -y" yazın.
Kurulum Ultralytics
Bir sonraki Bilgisayarla Görme projenizi oluşturmak için NVIDIA Jetson'da Ultralytics paketini kurmanın iki yolu vardır. Bunlardan birini kullanabilirsiniz.
Docker ile başlayın
NVIDIA Jetson'da Ultralytics YOLOv8 kullanmaya başlamanın en hızlı yolu, Jetson için önceden oluşturulmuş docker görüntüsü ile çalıştırmaktır.
Docker konteynerini çekmek ve Jetson üzerinde çalıştırmak için aşağıdaki komutu yürütün. Bu, Python3 ortamında PyTorch ve Torchvision içeren l4t-pytorch docker görüntüsüne dayanmaktadır.
t=ultralytics/ultralytics:latest-jetson && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t
Bu işlem tamamlandıktan sonra NVIDIA Jetson üzerinde TensorRT adresini kullan bölümüne geçin.
Docker olmadan başlayın
Ultralytics Paketini Yükleyin
Burada ultralyics paketini isteğe bağlı bağımlılıklarla birlikte Jetson'a kuracağız, böylece PyTorch modellerini diğer farklı formatlara aktarabileceğiz. TensoRT, Jetson cihazlarından maksimum performansı almamızı sağlayacağı için esas olarak NVIDIA TensorRT dışa aktarımlarına odaklanacağız.
-
Paket listesini güncelleyin, pip yükleyin ve en son sürüme yükseltin
-
Kurulum
ultralytics
isteğe bağlı bağımlılıklarla pip paketi -
Cihazı yeniden başlatın
PyTorch ve Torchvision'ı yükleyin
Yukarıdaki ultralytics kurulumu Torch ve Torchvision paketlerini yükleyecektir. Ancak, pip ile yüklenen bu 2 paket ARM64 mimarisine dayanan Jetson platformunda çalışmak için uyumlu değildir. Bu nedenle, önceden oluşturulmuş PyTorch pip wheel'i manuel olarak yüklememiz ve Torchvision'ı kaynaktan derlememiz / yüklememiz gerekir.
-
Şu anda yüklü olan PyTorch ve Torchvision'ı kaldırın
-
JP5.1.3'e göre PyTorch 2.1.0'ı yükleyin
sudo apt-get install -y libopenblas-base libopenmpi-dev wget https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl -O torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl pip install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
-
Torchvision v0.16.2'yi PyTorch v2.1.0'a göre yükleyin
Farklı JetPack sürümleri için PyTorch 'un tüm farklı sürümlerine erişmek için Jetson içinPyTorch sayfasını ziyaret edin. PyTorch , Torchvision uyumluluğu hakkında daha ayrıntılı bir liste için PyTorch ve Torchvision uyumluluğu sayfasını ziyaret edin.
Kurulum onnxruntime-gpu
Bu onnxruntime-gpu PyPI'da barındırılan paketin aarch64
Jetson için ikili dosyalar. Bu yüzden bu paketi manuel olarak yüklememiz gerekiyor. Bu paket bazı dışa aktarımlar için gereklidir.
Hepsi farklı onnxruntime-gpu
Farklı JetPack ve Python sürümlerine karşılık gelen paketler listelenmiştir Burada. Ancak, burada indirip kuracağız onnxruntime-gpu 1.17.0
ile Python3.8
Bu kılavuz için kullandığımız JetPack için destek.
wget https://nvidia.box.com/shared/static/zostg6agm00fb6t5uisw51qi6kpcuwzd.whl -O onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
pip install onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
Not
onnxruntime-gpu
numpy sürümünü otomatik olarak en son sürüme geri döndürecektir. Bu yüzden numpy'yi yeniden yüklememiz gerekiyor 1.23.5
çalıştırarak bir sorunu düzeltmek için:
pip install numpy==1.23.5
NVIDIA Jetson'da TensorRT adresini kullanın
Ultralytics tarafından desteklenen tüm model dışa aktarma formatları arasında TensorRT , NVIDIA Jetson cihazlarıyla çalışırken en iyi çıkarım performansını sunar ve bizim tavsiyemiz Jetson ile TensorRT adresini kullanmanızdır. Ayrıcaburada TensorRT hakkında ayrıntılı bir belgemiz bulunmaktadır.
Modeli TensorRT 'a Dönüştürün ve Çıkarım Çalıştırın
PyTorch biçimindeki YOLOv8n modeli, dışa aktarılan modelle çıkarım yapmak için TensorRT biçimine dönüştürülür.
Örnek
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO('yolov8n.pt')
# Export the model
model.export(format='engine') # creates 'yolov8n.engine'
# Load the exported TensorRT model
trt_model = YOLO('yolov8n.engine')
# Run inference
results = trt_model('https://ultralytics.com/images/bus.jpg')
Not
Modelleri farklı model formatlarına aktarırken ek argümanlara erişmek için Dışa Aktar sayfasını ziyaret edin
NVIDIA Jetson Orin YOLOv8 Karşılaştırmalar
YOLOv8 kıyaslamalar Ultralytics ekibi tarafından hız ve doğruluğu ölçen 10 farklı model formatında çalıştırılmıştır: PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel , TF Graphdef , TF Lite, PaddlePaddle, NCNN. Benchmarklar, Jetson Orin NX 16GB cihaz tarafından desteklenen Seeed Studio reComputer J4012 üzerinde FP32 hassasiyetinde ve varsayılan giriş görüntü boyutu 640 olacak şekilde çalıştırılmıştır.
Karşılaştırma Tablosu
Tüm model dışa aktarımları NVIDIA Jetson ile çalışıyor olsa da, aşağıdaki karşılaştırma tablosuna yalnızca PyTorch, TorchScript, TensorRT adreslerini dahil ettik çünkü Jetson'daki GPU'yu kullanıyorlar ve en iyi sonuçları üretmeleri garanti ediliyor. Diğer tüm dışa aktarımlar yalnızca CPU'yu kullanır ve performans yukarıdaki üçü kadar iyi değildir. Bu tablodan sonraki bölümde tüm dışa aktarmalar için karşılaştırmalar bulabilirsiniz.
Detaylı Karşılaştırma Tablosu
Aşağıdaki tablo, beş farklı model (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) için on farklı formatta (PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel , TF Graphdef , TF Lite, PaddlePaddle, NCNN) kıyaslama sonuçlarını temsil etmekte ve bize her kombinasyon için durum, boyut, mAP50-95(B) metriği ve çıkarım süresini vermektedir.
Performans
Biçim | Durum | Disk üzerindeki boyut (MB) | mAP50-95(B) | Çıkarım süresi (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 6.2 | 0.6381 | 14.3 |
TorchScript | ✅ | 12.4 | 0.6117 | 13.3 |
ONNX | ✅ | 12.2 | 0.6092 | 70.6 |
OpenVINO | ✅ | 12.3 | 0.6092 | 104.2 |
TensorRT | ✅ | 13.6 | 0.6117 | 8.9 |
TF SavedModel | ✅ | 30.6 | 0.6092 | 141.74 |
TF GraphDef | ✅ | 12.3 | 0.6092 | 199.93 |
TF Lite | ✅ | 12.3 | 0.6092 | 349.18 |
PaddlePaddle | ✅ | 24.4 | 0.6030 | 555 |
NCNN | ✅ | 12.2 | 0.6092 | 32 |
Biçim | Durum | Disk üzerindeki boyut (MB) | mAP50-95(B) | Çıkarım süresi (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 21.5 | 0.6967 | 18 |
TorchScript | ✅ | 43.0 | 0.7136 | 23.81 |
ONNX | ✅ | 42.8 | 0.7136 | 185.55 |
OpenVINO | ✅ | 42.9 | 0.7136 | 243.97 |
TensorRT | ✅ | 44.0 | 0.7136 | 14.82 |
TF SavedModel | ✅ | 107 | 0.7136 | 260.03 |
TF GraphDef | ✅ | 42.8 | 0.7136 | 423.4 |
TF Lite | ✅ | 42.8 | 0.7136 | 1046.64 |
PaddlePaddle | ✅ | 85.5 | 0.7140 | 1464 |
NCNN | ✅ | 42.7 | 0.7200 | 63 |
Biçim | Durum | Disk üzerindeki boyut (MB) | mAP50-95(B) | Çıkarım süresi (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 49.7 | 0.7370 | 36.4 |
TorchScript | ✅ | 99.2 | 0.7285 | 53.58 |
ONNX | ✅ | 99 | 0.7280 | 452.09 |
OpenVINO | ✅ | 99.1 | 0.7280 | 544.36 |
TensorRT | ✅ | 100.3 | 0.7285 | 33.21 |
TF SavedModel | ✅ | 247.5 | 0.7280 | 543.65 |
TF GraphDef | ✅ | 99 | 0.7280 | 906.63 |
TF Lite | ✅ | 99 | 0.7280 | 2758.08 |
PaddlePaddle | ✅ | 197.9 | 0.7280 | 3678 |
NCNN | ✅ | 98.9 | 0.7260 | 135 |
Biçim | Durum | Disk üzerindeki boyut (MB) | mAP50-95(B) | Çıkarım süresi (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 83.7 | 0.7768 | 61.3 |
TorchScript | ✅ | 167.2 | 0.7554 | 87.9 |
ONNX | ✅ | 166.8 | 0.7551 | 852.29 |
OpenVINO | ✅ | 167 | 0.7551 | 1012.6 |
TensorRT | ✅ | 168.4 | 0.7554 | 51.23 |
TF SavedModel | ✅ | 417.2 | 0.7551 | 990.45 |
TF GraphDef | ✅ | 166.9 | 0.7551 | 1649.86 |
TF Lite | ✅ | 166.9 | 0.7551 | 5652.37 |
PaddlePaddle | ✅ | 333.6 | 0.7551 | 7114.67 |
NCNN | ✅ | 166.8 | 0.7685 | 231.9 |
Biçim | Durum | Disk üzerindeki boyut (MB) | mAP50-95(B) | Çıkarım süresi (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 130.5 | 0.7759 | 93 |
TorchScript | ✅ | 260.7 | 0.7472 | 135.1 |
ONNX | ✅ | 260.4 | 0.7479 | 1296.13 |
OpenVINO | ✅ | 260.6 | 0.7479 | 1502.15 |
TensorRT | ✅ | 261.8 | 0.7469 | 84.53 |
TF SavedModel | ✅ | 651.1 | 0.7479 | 1451.76 |
TF GraphDef | ✅ | 260.5 | 0.7479 | 4029.36 |
TF Lite | ✅ | 260.4 | 0.7479 | 8772.86 |
PaddlePaddle | ✅ | 520.8 | 0.7479 | 10619.53 |
NCNN | ✅ | 260.4 | 0.7646 | 376.38 |
Seeed Studio tarafından NVIDIA Jetson donanımının farklı sürümleri üzerinde gerçekleştirilen daha fazla kıyaslama çalışmasını keşfetmek için bu bağlantıyı ziyaret edin.
Sonuçlarımızı Yeniden Üretin
Yukarıdaki Ultralytics kıyaslamalarını tüm dışa aktarma biçimlerinde yeniden oluşturmak için bu kodu çalıştırın:
Örnek
Kıyaslama sonuçlarının, bir sistemin tam donanım ve yazılım yapılandırmasının yanı sıra kıyaslamaların çalıştırıldığı sırada sistemin mevcut iş yüküne bağlı olarak değişebileceğini unutmayın. En güvenilir sonuçlar için çok sayıda görüntü içeren bir veri kümesi kullanın, örn. data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 val görüntü).
NVIDIA Jetson kullanırken En İyi Uygulamalar
NVIDIA Jetson kullanırken, YOLOv8 çalıştıran NVIDIA Jetson'da maksimum performans sağlamak için izlenecek birkaç en iyi uygulama vardır.
-
MAX Güç Modunu Etkinleştir
Jetson'da MAX Güç Modunu etkinleştirmek, tüm CPU, GPU çekirdeklerinin açık olduğundan emin olacaktır.
-
Jetson Saatlerini Etkinleştir
Jetson Clocks'u etkinleştirmek tüm CPU ve GPU çekirdeklerinin maksimum frekansta çalıştığından emin olmanızı sağlar.
-
Jetson Stats Uygulamasını Yükleme
Sistem bileşenlerinin sıcaklıklarını izlemek ve CPU, GPU, RAM kullanımını görüntülemek, güç modlarını değiştirmek, maksimum saatlere ayarlamak, JetPack bilgilerini kontrol etmek gibi diğer sistem ayrıntılarını kontrol etmek için jetson stats uygulamasını kullanabiliriz.
Sonraki Adımlar
NVIDIA Jetson cihazınızda YOLOv8 kurulumunu başarıyla tamamladığınız için tebrikler! Daha fazla bilgi ve destek için Ultralytics YOLOv8 Docs adresindeki kılavuzu ziyaret edin!
Oluşturuldu 2024-04-02, Güncellendi 2024-05-08
Yazarlar: Burhan-Q (2), lakshanthad (2), glenn-jocher (2)