İçeriğe geç

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.

NVIDIA Jetson Ekosistemi

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.

  1. 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.
  2. Başka bir NVIDIA Geliştirme Kitine sahipseniz SDK Manager'ı kullanarak JetPack'i cihaza flash'lamak için bu bağlantıyı ziyaret edebilirsiniz.
  3. Seeed Studio reComputer J4012 cihazınız varsa, JetPack'i birlikte verilen SSD'ye flaşlamak için bu bağlantıyı ziyaret edebilirsiniz.
  4. 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.

  1. Paket listesini güncelleyin, pip yükleyin ve en son sürüme yükseltin

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Kurulum ultralytics isteğe bağlı bağımlılıklarla pip paketi

    pip install ultralytics[export]
    
  3. Cihazı yeniden başlatın

    sudo reboot
    

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.

  1. Şu anda yüklü olan PyTorch ve Torchvision'ı kaldırın

    pip uninstall torch torchvision
    
  2. 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
    
  3. Torchvision v0.16.2'yi PyTorch v2.1.0'a göre yükleyin

    sudo apt install -y libjpeg-dev zlib1g-dev
    git clone https://github.com/pytorch/vision torchvision
    cd torchvision
    git checkout v0.16.2
    python3 setup.py install --user
    

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')
# Export a YOLOv8n PyTorch model to TensorRT format
yolo export model=yolov8n.pt format=engine  # creates 'yolov8n.engine'

# Run inference with the exported model
yolo predict model=yolov8n.engine source='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.

NVIDIA Jetson Ekosistemi

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

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO('yolov8n.pt')

# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data='coco8.yaml', imgsz=640)
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml imgsz=640

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), ordata='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.

  1. MAX Güç Modunu Etkinleştir

    Jetson'da MAX Güç Modunu etkinleştirmek, tüm CPU, GPU çekirdeklerinin açık olduğundan emin olacaktır.

    sudo nvpmodel -m 0
    
  2. 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.

    sudo jetson_clocks
    
  3. 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.

    sudo apt update
    sudo pip install jetson-stats
    sudo reboot
    jtop
    

Jetson İstatistikleri

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)

Yorumlar