コンテンツへスキップ

クイックスタートガイド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コンポーネントをすべてインストールしてください。

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

Dockerなしで始める

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

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

  1. パッケージリストの更新、pipのインストール、最新版へのアップグレード
sudo apt update
sudo apt install python3-pip -y
pip install -U pip
  1. インストール ultralytics pip パッケージと依存関係のあるオプション
pip install ultralytics[export]
  1. デバイスを再起動する
sudo reboot

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

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

  1. 現在インストールされているPyTorch と Torchvision をアンインストールする。
pip uninstall torch torchvision
  1. 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
  1. 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

JetPackのバージョンに対応したPyTorch 。 PyTorch, Torchvisionの互換性に関するより詳細なリストについては、こちらをご覧ください。

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'

論争

キー 価値 説明
format 'engine' エクスポートするフォーマット
imgsz 640 スカラーまたは (h, w) リストとしての画像サイズ,すなわち (640, 480)
half False FP16量子化

NVIDIA Jetson OrinYOLOv8 ベンチマーク

YOLOv8 以下のベンチマークは、Ultralytics チームによって、速度と精度を測定する 3 つの異なるモデル形式で実行されました:PyTorch 、TorchScript 、TensorRT 。ベンチマークは、Jetson Orin NX 16GBデバイスを搭載したSeeed Studio reComputer J4012で、FP32の精度で、デフォルトの入力画像サイズ640で実行されました。

NVIDIA Jetsonエコシステム
モデル フォーマット ステータス サイズ (MB) mAP50-95(B) 推論時間(ms/im)
YOLOv8n PyTorch ✅ 6.2 0.4473 14.3
YOLOv8n TorchScript ✅ 12.4 0.4520 13.3
YOLOv8n TensorRT ✅ 13.6 0.4520 8.7
YOLOv8s PyTorch ✅ 21.5 0.5868 18
YOLOv8s TorchScript ✅ 43.0 0.5971 23.9
YOLOv8s TensorRT ✅ 44.0 0.5965 14.82
YOLOv8m PyTorch ✅ 49.7 0.6101 36.4
YOLOv8m TorchScript ✅ 99.2 0.6125 53.34
YOLOv8m TensorRT ✅ 100.3 0.6123 33.28
YOLOv8l PyTorch ✅ 83.7 0.6588 61.3
YOLOv8l TorchScript ✅ 167.2 0.6587 85.21
YOLOv8l TensorRT ✅ 168.3 0.6591 51.34
YOLOv8x PyTorch ✅ 130.5 0.6650 93
YOLOv8x TorchScript ✅ 260.7 0.6651 135.3
YOLOv8x TensorRT ✅ 261.8 0.6645 84.5

この表は、5つの異なるモデル(YOLOv8n,YOLOv8s,YOLOv8m,YOLOv8l,YOLOv8x)と3つの異なるフォーマット(PyTorch,TorchScript,TensorRT)のベンチマーク結果であり、各組み合わせのステータス、サイズ、mAP50-95(B)メトリック、推論時間を示している。

さまざまなバージョンの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 COCO128 dataset for all all export formats
results = model.benchmarks(data='coco128.yaml', imgsz=640)
# Benchmark YOLOv8n speed and accuracy on the COCO128 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco128.yaml imgsz=640

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

注

現在、PyTorch 、Torchscript 、TensorRT のみがベンチマークツールで動作しています。将来的には、他のエクスポートもサポートするように更新する予定です。

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-04-02
著者Burhan-Q(1),lakshanthad(1)

コメント