コンテンツへスキップ

クイックスタートガイドNVIDIA Jetson withUltralytics YOLOv8

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



見るんだ: NVIDIA Jetsonとセットアップする方法Ultralytics YOLOv8

NVIDIA ジェットソン・エコシステム

このガイドは、NVIDIA Jetson Orin NX 16GB ベースのSeeed Studio reComputer J4012と、NVIDIA Jetson Nano 4GB ベースのSeeed Studio reComputer J1020 v2の両方でテストされており、JP 5.1.3の JetPack リリースが動作します。最新およびレガシーを含むすべてのNVIDIA Jetsonハードウェアラインアップで動作する見込みです。

NVIDIA ジェットソンとは?

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

NVIDIA ジェットソンシリーズ比較

Jetson Orinは、NVIDIA Jetsonファミリーの最新版で、NVIDIA Ampereアーキテクチャをベースとしており、前世代と比較して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 アンペア・アーキテクチャ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とは?

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

NVIDIA JetsonへのFlash JetPack

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

  1. Jetson Orin Nano Developer Kitのような公式NVIDIA 開発キットをお持ちの場合は、イメージをダウンロードし、デバイスを起動するためにJetPackでSDカードを準備することができます。
  2. 他のNVIDIA 開発キットをお持ちの場合は、SDK Managerを使用してJetPackをデバイスにフラッシュすることができます。
  3. Seeed Studio reComputer J4012 デバイスをお持ちの場合、JetPack を付属の SSD にフラッシュすることができ、Seeed Studio reComputer J1020 v2 デバイスをお持ちの場合、JetPack を eMMC/ SSD にフラッシュすることができます。
  4. NVIDIA Jetsonモジュールで駆動する他のサードパーティ製デバイスを所有している場合は、コマンドラインのフラッシュに従うことを推奨する。

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

JetPack 5.x で実行

Jetson Xavier NX、AGX Xavier、AGX Orin、Orin Nano、Orin NXをお持ちで、JetPack 5.xをサポートしている場合は、このガイドを続けてください。ただし、Jetson Nanoのようなレガシーデバイスをお持ちの場合は、JetPack 4.xでの実行まで読み飛ばしてください。

セットアップUltralytics

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

Dockerで始める

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

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

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

これが終わったら、 NVIDIA JetsonでTensorRT

Dockerなしで始める

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

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

  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

について オンヌクスランタイム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

JetPack 4.x で実行

ここでは、実行をサポートします Ultralytics Jetson Nano などのレガシー ハードウェアで。現在、これを実現するためにDockerを使用しています。

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

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

NVIDIA JetsonでTensorRT 。

Ultralytics でサポートされているすべてのモデルエクスポートフォーマットの中で、TensorRT は、NVIDIA Jetsonデバイスで作業するときに最高の推論パフォーマンスを提供します。TensorRT をJetsonで使用することをお勧めします。また、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 を利用しており、最良の結果が得られることが保証されているからです。他のすべてのエクスポートはCPU を利用するだけであり、パフォーマンスは上記の3つほど良くありません。このグラフの後のセクションで、すべてのエクスポートのベンチマークを見ることができます。

NVIDIA ジェットソン・エコシステム

詳細比較表

以下の表は、5つの異なるモデル(YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) を 10 種類のフォーマット (PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel, TF GraphDef, TF ライト、 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パワーモードを有効にする

    JetsonのMAX Power Modeを有効にすると、すべての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のガイドをご覧ください!

よくあるご質問

NVIDIA Jetson デバイスにUltralytics YOLOv8 をデプロイするには?

NVIDIA JetsonデバイスにUltralytics YOLOv8 をデプロイするのは簡単なプロセスです。まず、NVIDIA JetPack SDKでJetsonデバイスをフラッシュする。次に、ビルド済みのDockerイメージを使用して素早くセットアップするか、必要なパッケージを手動でインストールします。各アプローチの詳細な手順は、「Dockerで始める」と「Dockerなしで始める」のセクションにあります。

NVIDIA Jetsonデバイス上のYOLOv8 モデルには、どのようなパフォーマンスベンチマークが期待できますか?

YOLOv8 モデルを様々なNVIDIA Jetsonデバイスでベンチマークしたところ、大幅な性能向上が見られた。例えば、TensorRT フォーマットは最高の推論性能を発揮します。詳細比較表」セクションの表は、さまざまなモデル・フォーマットにおけるmAP50-95や推論時間などのパフォーマンス・メトリクスの包括的なビューを提供します。

NVIDIA JetsonにYOLOv8 をデプロイするのに、なぜTensorRT を使う必要があるのですか?

TensorRT は、NVIDIA Jetson 上でYOLOv8 モデルを展開する際に、その最適なパフォーマンスにより強く推奨されます。Jetson のGPU 機能を活用することで推論を加速し、最大限の効率とスピードを保証します。TensorRT に変換して推論を実行する方法については、 NVIDIA Jetson上でTensorRT を使用するセクションを参照してください。

NVIDIA JetsonにPyTorch 、Torchvisionをインストールするには?

NVIDIA JetsonにPyTorch 、Torchvisionをインストールするには、まずpip経由でインストールされた既存のバージョンをアンインストールしてください。次に、JetsonのARM64アーキテクチャに対応するPyTorch とTorchvisionのバージョンを手動でインストールします。このプロセスの詳細な手順は、 PyTorch と Torchvision のインストールのセクションに記載されています。

NVIDIA JetsonでYOLOv8 、パフォーマンスを最大化するためのベストプラクティスは?

YOLOv8 でNVIDIA Jetson のパフォーマンスを最大化するには、以下のベストプラクティスに従ってください:

  1. MAXパワーモードを有効にして、すべてのCPU 、GPU コアを利用する。
  2. Jetson Clocksを有効にして、すべてのコアを最大周波数で動作させる。
  3. システム・メトリクスを監視するためのJetson Statsアプリケーションをインストールします。

コマンドやその他の詳細については、 NVIDIA Jetsonを使用する際のベストプラクティスのセクションを参照してください。



作成日: 2024-04-02 更新日: 2024-07-05
作成者:Glenn-jocher(9),RizwanMunawar(1),lakshanthad(3),Ahelsamahy(1),Burhan-Q(2)

コメント