コンテンツへスキップ

クイックスタートガイドNVIDIAジェットソンUltralytics YOLOv8

この包括的なガイドでは、Ultralytics YOLOv8 をNVIDIA Jetsonデバイス上に展開するための詳細なウォークスルーを提供します。さらに、これらの小型で強力なデバイス上のYOLOv8 の機能を実証するためのパフォーマンスベンチマークを紹介しています。

NVIDIA Jetsonエコシステム

このガイドはNVIDIA Jetson Orin NX 16GBをベースにしたSeeed Studio reComputer J4012で、最新のJP5.1.3のJetPackリリースでテストされています。Jetson Nanoのような古いJetsonデバイス(JP4.6.4までしかサポートしていません)にこのガイドを使用しても、動作が保証されない場合があります。しかし、JP5.1.3が動作しているすべてのJetson Orin、Xavier NX、AGX Xavierデバイスでは動作する見込みです。

NVIDIA Jetsonとは?

NVIDIA Jetsonは、エッジデバイスに加速されたAI(人工知能)コンピューティングをもたらすように設計された一連の組み込みコンピューティングボードです。これらのコンパクトで強力なデバイスは、NVIDIAのGPUアーキテクチャを中心に構築されており、クラウドコンピューティングリソースに依存することなく、デバイス上で複雑なAIアルゴリズムやディープラーニングモデルを直接実行することができます。Jetsonボードは、ロボット工学、自律走行車、産業オートメーション、およびAI推論を低レイテンシかつ高効率でローカルに実行する必要があるその他のアプリケーションでよく使用される。さらに、これらのボードはARM64アーキテクチャをベースとしており、従来のGPUコンピューティングデバイスと比較して低消費電力で動作します。

NVIDIA Jetsonシリーズの比較

Jetson Orinは、NVIDIA Ampereアーキテクチャに基づくNVIDIA Jetsonファミリーの最新版で、前世代と比較してAI性能が飛躍的に向上している。下の表は、エコシステムにおけるJetsonデバイスのいくつかを比較したものである。

Jetson AGX Orin 64GB Jetson Orin NX 16GB ジェットソン・オリン・ナノ8GB ジェットソンAGXザビエル ジェットソン・ザビエルNX ジェットソン・ナノ
AIパフォーマンス 275 TOPS 100 TOPS 40 TOPs 32 TOPS 21 トップス 472 GFLOPS
GPU 2048 コア NVIDIA Ampere アーキテクチャ GPU、64Tensor コア 1024コアのNVIDIA AmpereアーキテクチャGPU、32Tensor コア 1024コアのNVIDIA AmpereアーキテクチャGPU、32Tensor コア 512コアのNVIDIA VoltaアーキテクチャGPU、64Tensor コア 384コアのNVIDIA Volta™ アーキテクチャGPU、48Tensor コア搭載 128コアのNVIDIA Maxwell™ アーキテクチャGPU
GPU最大周波数 1.3 GHz 918 MHz 625MHz 1377MHz 1100 MHz 921MHz
CPU 12コアNVIDIA Arm® Cortex A78AE v8.2 64ビットCPU 3MB L2 + 6MB L3 8コアNVIDIA Arm® Cortex A78AE v8.2 64ビットCPU 2MB L2 + 4MB L3 6コアArm® Cortex®-A78AE v8.2 64ビットCPU 1.5MB L2 + 4MB L3 8コアNVIDIA Carmel Arm®v8.2 64ビットCPU 8MB L2 + 4MB L3 6コアNVIDIA Carmel Arm®v8.2 64ビットCPU 6MB L2 + 4MB L3 クアッドコアArm® Cortex®-A57 MPCoreプロセッサ
CPU最大周波数 2.2 GHz 2.0 GHz 1.5 GHz 2.2 GHz 1.9 GHz 1.43GHz
メモリー 64GB 256ビット LPDDR5 204.8GB/秒 16GB 128ビット LPDDR5 102.4GB/秒 8GB 128ビット LPDDR5 68GB/秒 32GB 256ビット LPDDR4x 136.5GB/秒 8GB 128ビット LPDDR4x 59.7GB/秒 4GB 64ビット LPDDR4 25.6GB/秒"

より詳細な比較表については、NVIDIA Jetson公式ページの 技術仕様セクションをご覧ください。

NVIDIA JetPackとは何ですか?

Jetsonモジュールを駆動するNVIDIA JetPack SDKは、最も包括的なソリューションであり、エンドツーエンドの高速化AIアプリケーションを構築するための完全な開発環境を提供し、市場投入までの時間を短縮します。JetPackには、ブートローダ、Linuxカーネル、Ubuntuデスクトップ環境を備えたJetson Linuxと、GPUコンピューティング、マルチメディア、グラフィックス、コンピュータビジョンの高速化のためのライブラリ一式が含まれています。また、ホスト・コンピュータと開発者キットの両方に対応したサンプル、ドキュメント、開発者ツールも含まれており、ストリーミング・ビデオ解析用のDeepStream、ロボット工学用のIsaac、会話AI用のRivaなど、より高度なSDKもサポートしています。

NVIDIAジェットソンへのFlash JetPack

NVIDIA Jetsonデバイスを手に入れた後の最初のステップは、NVIDIA JetPackをデバイスにフラッシュすることです。NVIDIA Jetsonデバイスをフラッシュする方法はいくつかあります。

  1. Jetson Orin Nano Developer Kitなどの公式NVIDIA開発キットをお持ちの場合は、このリンクからイメージをダウンロードし、JetPackを入れたSDカードを用意してデバイスを起動することができます。
  2. 他のNVIDIA Development Kitをお持ちの場合は、こちらのリンクから SDK Managerを使ってJetPackをデバイスにフラッシュすることができます。
  3. Seeed Studio reComputer J4012デバイスをお持ちの場合は、このリンクからJetPackを付属のSSDにフラッシュすることができます。
  4. NVIDIA Jetsonモジュールを搭載した他のサードパーティ製デバイスをお持ちの場合は、このリンクからコマンドライン・フラッシュを実行することをお勧めします。

上記の3および4の方法については、システムをフラッシュしてデバイスを起動した後、デバイスのターミナルで "sudo apt update && sudo apt install nvidia-jetpack -y "を入力して、必要な残りのJetPackコンポーネントをすべてインストールしてください。

セットアップUltralytics

次のComputer Visionプロジェクトを構築するために、NVIDIA Jetson上でUltralytics パッケージをセットアップする方法は2つあります。どちらを使っても構いません。

Dockerで始める

Ultralytics YOLOv8 をNVIDIA Jetson上で使い始める最速の方法は、Jetson用にビルド済みのdockerイメージを使って実行することです。

以下のコマンドを実行すると、DockerコンテナがJetson上で実行されます。これは、PyTorch と Torchvision が Python3 環境に含まれるl4t-pytorchdocker イメージに基づいています。

t=ultralytics/ultralytics:latest-jetson && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t

これが完了したら、NVIDIA JetsonでTensorRT

Dockerなしで始める

Ultralytics パッケージのインストール

ここでは、Jetsonにultralyicsパッケージをインストールし、オプションの依存関係を追加して、PyTorch モデルを他の異なるフォーマットにエクスポートできるようにします。TensoRTは、Jetsonデバイスから最大限のパフォーマンスを引き出せるようにするため、主にNVIDIATensorRT エクスポートに焦点を当てます。

  1. パッケージリストの更新、pipのインストール、最新版へのアップグレード

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. インストール ultralytics pip パッケージと依存関係のあるオプション

    pip install ultralytics[export]
    
  3. デバイスを再起動する

    sudo reboot
    

PyTorch とトーチビジョンをインストールする

上記のultralytics をインストールすると、Torch と Torchvision がインストールされます。しかし、pip経由でインストールされたこれら2つのパッケージは、ARM64アーキテクチャをベースとするJetsonプラットフォーム上で動作する互換性がない。そのため、ビルド済みのPyTorch pip wheelを手動でインストールし、ソースからTorchvisionをコンパイル/インストールする必要がある。

  1. 現在インストールされているPyTorch と Torchvision をアンインストールする。

    pip uninstall torch torchvision
    
  2. JP5.1.3 に従ってPyTorch 2.1.0 をインストールする。

    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. PyTorch v2.1.0に従ってTorchvision v0.16.2をインストールしてください。

    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
    

PyTorch for Jetsonのページで、異なるJetPackのバージョンに対応したPyTorch 。PyTorch, Torchvisionの互換性についての詳細なリストは、PyTorch and Torchvision compatibilityページをご覧ください。

インストール onnxruntime-gpu

について onnxruntime-gpu PyPIでホストされているパッケージには aarch64 バイナリをインストールする必要がある。そのため、このパッケージを手動でインストールする必要がある。このパッケージはいくつかのエクスポートに必要です。

すべて異なる onnxruntime-gpu JetPack とPython の異なるバージョンに対応するパッケージがリストされている。 これ.しかし、ここでは onnxruntime-gpu 1.17.0Python3.8 このガイドで使用しているJetPackをサポートしています。

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

onnxruntime-gpu は自動的にnumpyのバージョンを最新に戻します。そのため、numpyを再インストールする必要があります。 1.23.5 を実行して問題を解決する:

pip install numpy==1.23.5

NVIDIA JetsonでTensorRT 。

Ultralytics TensorRT でサポートされているすべてのモデルエクスポートフォーマットの中で、 は、NVIDIA Jetsonデバイスで動作するときに最高の推論パフォーマンスを提供します。また、TensorRT TensorRT についての詳細なドキュメントもあります。

モデルをTensorRT に変換し、推論を実行する。

PyTorch フォーマットのYOLOv8n モデルは、エクスポートされたモデルで推論を実行するためにTensorRT に変換されます。

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'

モデルを異なるモデル形式にエクスポートする際の追加引数については、エクスポートページをご覧ください。

NVIDIA Jetson OrinYOLOv8 ベンチマーク

YOLOv8 ベンチマークは、Ultralytics チームにより、速度と精度を測定する 10 種類のモデルフォーマットで実行されました:PyTorch,TorchScript,ONNX,OpenVINO,TensorRT,TF SavedModel ,TF Graphdef ,TF ,PaddlePaddle,NCNN 。ベンチマークは、Jetson Orin NX 16GBデバイスを搭載したSeeed Studio reComputer J4012で、FP32の精度で、デフォルトの入力画像サイズ640で実行した。

比較表

すべてのエクスポートモデルがNVIDIA Jetsonで動作していますが、以下の比較表では、PyTorch 、TorchScript TensorRT、JetsonのGPUを使用し、最良の結果が得られることが保証されているため、これらのモデルのみを取り上げました。なぜなら、これらはJetsonのGPUを利用し、最高の結果を出すことが保証されているからです。他のすべてのエクスポートはCPUのみを利用し、パフォーマンスは上記の3つほど良くありません。このグラフの後のセクションで、すべてのエクスポートのベンチマークを見ることができます。

NVIDIA Jetsonエコシステム

詳細比較表

以下の表は、5つの異なるモデル(YOLOv8n,YOLOv8s,YOLOv8m,YOLOv8l,YOLOv8x)を10種類のフォーマット(PyTorch,TorchScript,ONNX,OpenVINO,TensorRT,TF SavedModel ,TF Graphdef ,TF Lite,PaddlePaddle,NCNN)でベンチマークした結果であり、各組み合わせのステータス、サイズ、mAP50-95(B)メトリック、推論時間を示している。

パフォーマンス

フォーマット ステータス ディスク上のサイズ (MB) mAP50-95(B) 推論時間(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 ライト 12.3 0.6092 349.18
PaddlePaddle 24.4 0.6030 555
NCNN 12.2 0.6092 32
フォーマット ステータス ディスク上のサイズ (MB) mAP50-95(B) 推論時間(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 ライト 42.8 0.7136 1046.64
PaddlePaddle 85.5 0.7140 1464
NCNN 42.7 0.7200 63
フォーマット ステータス ディスク上のサイズ (MB) mAP50-95(B) 推論時間(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 ライト 99 0.7280 2758.08
PaddlePaddle 197.9 0.7280 3678
NCNN 98.9 0.7260 135
フォーマット ステータス ディスク上のサイズ (MB) mAP50-95(B) 推論時間(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 ライト 166.9 0.7551 5652.37
PaddlePaddle 333.6 0.7551 7114.67
NCNN 166.8 0.7685 231.9
フォーマット ステータス ディスク上のサイズ (MB) mAP50-95(B) 推論時間(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 ライト 260.4 0.7479 8772.86
PaddlePaddle 520.8 0.7479 10619.53
NCNN 260.4 0.7646 376.38

さまざまなバージョンのNVIDIA Jetsonハードウェア上で実行されるSeeed Studioによるベンチマークの詳細については、このリンクをご覧ください。

結果を再現する

上記のUltralytics のベンチマークをすべてのエクスポートフォーマットで再現するには、以下のコードを実行してください:

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

ベンチマークの結果は、システムの正確なハードウェアとソフトウェアの構成、およびベンチマークの実行時のシステムの現在の作業負荷によって異なる可能性があることに注意してください。最も信頼性の高い結果を得るには、画像数の多いデータセットを使用します。 data='coco8.yaml' (4 val images), ordata='coco.yaml'` (5000 val images)。

NVIDIA Jetson使用時のベストプラクティス

NVIDIA Jetsonを使用する場合、YOLOv8 を実行するNVIDIA Jetsonで最大限のパフォーマンスを発揮するために、従うべきベストプラクティスがいくつかあります。

  1. MAXパワーモードを有効にする

    ジェットソンのMAXパワーモードを有効にすると、すべてのCPU、GPUコアがオンになります。

    sudo nvpmodel -m 0
    
  2. ジェットソン・クロックを有効にする

    Jetson Clocksを有効にすると、すべてのCPU、GPUコアが最大周波数で動作するようになります。

    sudo jetson_clocks
    
  3. Jetson Statsアプリケーションのインストール

    jetson statsアプリケーションを使用して、システムコンポーネントの温度を監視し、CPU、GPU、RAMの使用率の表示、電源モードの変更、最大クロックへの設定、JetPack情報の確認など、その他のシステムの詳細を確認することができます。

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

ジェットソンのスタッツ

次のステップ

NVIDIA Jetson でYOLOv8 のセットアップに成功しました!さらなる学習とサポートについては、Ultralytics YOLOv8 Docsのガイドをご覧ください!



作成 2024-04-02 更新 2024-05-08
著者Burhan-Q(2),lakshanthad(2),glenn-jocher(2)

コメント