DeepStream SDK および TensorRT を使用した NVIDIA Jetson 上の Ultralytics YOLO11
見る: Jetson Orin NXでNVIDIA DeepstreamとUltralytics YOLO11モデルを使用する方法 🚀
この包括的なガイドでは、DeepStream SDKおよびTensorRTを使用してNVIDIA JetsonデバイスにUltralytics YOLO11をデプロイするための詳細な手順を説明します。ここでは、TensorRTを使用してJetsonプラットフォームでの推論パフォーマンスを最大化します。
注
このガイドは、最新の安定版JetPackリリースであるJP6.1を実行しているNVIDIA Jetson Orin Nano Super Developer Kit、JetPackリリースJP5.1.3を実行しているNVIDIA Jetson Orin NX 16GBをベースにしたSeeed Studio reComputer J4012、JetPackリリースJP4.6.4を実行しているNVIDIA Jetson Nano 4GBをベースにしたSeeed Studio reComputer J1020 v2でテストされています。最新およびレガシーを含むすべてのNVIDIA Jetsonハードウェアラインナップで動作することが期待されます。
NVIDIA DeepStreamとは何ですか?
NVIDIAのDeepStream SDKは、AIベースのマルチセンサー処理、ビデオ、オーディオ、および画像の理解のためのGStreamerに基づく完全なストリーミング分析ツールキットです。ビジョンAI開発者、ソフトウェアパートナー、スタートアップ、およびIVA(インテリジェントビデオ分析)アプリとサービスを構築するOEMに最適です。 ニューラルネットワークや、トラッキング、ビデオエンコード/デコード、ビデオレンダリングなどの他の複雑な処理タスクを組み込んだストリーム処理パイプラインを作成できるようになりました。これらのパイプラインにより、ビデオ、画像、およびセンサーデータに関するリアルタイム分析が可能になります。 DeepStreamのマルチプラットフォームサポートにより、オンプレミス、エッジ、およびクラウドでビジョンAIアプリケーションとサービスをより迅速かつ簡単に開発できます。
前提条件
このガイドに従う前に:
- Ultralytics YOLO11をNVIDIA Jetsonデバイスにセットアップするには、ドキュメントのクイックスタートガイド:Ultralytics YOLO11とNVIDIA Jetsonをご覧ください。
- インストール DeepStream SDK JetPack のバージョンに応じて
- JetPack 4.6.4の場合は、DeepStream 6.0.1をインストールしてください。
- JetPack 5.1.3の場合は、DeepStream 6.3をインストールしてください。
- JetPack 6.1の場合は、DeepStream 7.1をインストールしてください。
ヒント
このガイドでは、JetsonデバイスにDeepStream SDKをインストールするDebianパッケージメソッドを使用しました。Jetson上のDeepStream SDK(アーカイブ)にアクセスして、DeepStreamのレガシーバージョンにアクセスすることもできます。
YOLO11 のための DeepStream 構成
ここでは、marcoslucianops/DeepStream-Yolo GitHubリポジトリを使用しています。これには、YOLOモデル用のNVIDIA DeepStream SDKのサポートが含まれています。貢献してくれたmarcoslucianops氏の努力に感謝します!
-
必要な依存関係とともにUltralyticsをインストール
cd ~ pip install -U pip git clone https://github.com/ultralytics/ultralytics cd ultralytics pip install -e ".[export]" onnxslim
-
DeepStream-Yoloリポジトリをクローンします
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo
-
コピー
export_yolo11.py
ファイルは以下から。DeepStream-Yolo/utils
ディレクトリをultralytics
フォルダーcp ~/DeepStream-Yolo/utils/export_yolo11.py ~/ultralytics cd ultralytics
-
YOLO11 releasesから、お好みのUltralytics YOLO11検出モデル(.pt)をダウンロードしてください。ここでは、yolo11s.ptを使用します。
wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s.pt
注
カスタムトレーニングされた YOLO11 モデルを使用することもできます。
-
モデルをONNXに変換
python3 export_yolo11.py -w yolo11s.pt
上記のコマンドに以下の引数を渡してください
DeepStream 5.1の場合は、以下を削除してください。
--dynamic
arg と useopset
12以下。デフォルトopset
は17です。--opset 12
推論サイズを変更するには(デフォルト:640)。
-s SIZE --size SIZE -s HEIGHT WIDTH --size HEIGHT WIDTH
1280の例:
-s 1280 or -s 1280 1280
ONNXモデルを簡素化するには(DeepStream >= 6.0)
--simplify
動的バッチサイズを使用するには(DeepStream >= 6.1)。
--dynamic
静的バッチサイズを使用するには(バッチサイズ= 4の例)。
--batch 4
-
生成されたものをコピー
.onnx
モデルファイルとlabels.txt
へのファイルDeepStream-Yolo
フォルダーcp yolo11s.pt.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo
-
インストールされているJetPackのバージョンに応じてCUDAバージョンを設定します
JetPack 4.6.4の場合:
export CUDA_VER=10.2
JetPack 5.1.3の場合:
export CUDA_VER=11.4
Jetpack 6.1の場合:
export CUDA_VER=12.6
-
ライブラリをコンパイルする
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
-
編集
config_infer_primary_yolo11.txt
ファイル(80クラスのYOLO11sの場合)[property] ... onnx-file=yolo11s.pt.onnx ... num-detected-classes=80 ...
-
編集
deepstream_app_config
ファイル... [primary-gie] ... config-file=config_infer_primary_yolo11.txt
-
ビデオソースを変更することもできます。
deepstream_app_config
ファイル。ここでは、デフォルトのビデオファイルがロードされます。... [source0] ... uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
推論の実行
deepstream-app -c deepstream_app_config.txt
注
推論を開始する前に、TensorRTエンジンファイルの生成に時間がかかります。しばらくお待ちください。

ヒント
モデルをFP16精度に変換する場合は、単に以下を設定してください。 model-engine-file=model_b1_gpu0_fp16.engine
および network-mode=2
内部 config_infer_primary_yolo11.txt
INT8キャリブレーション
推論に INT8 精度を使用する場合は、以下の手順に従ってください。
注
現在、INT8は TensorRT 10.x では動作しません。このガイドのセクションは、動作が期待される TensorRT 8.x でテストされています。
-
セット
OPENCV
環境変数export OPENCV=1
-
ライブラリをコンパイルする
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
-
COCOデータセットについては、以下をダウンロードしてください: val2017、展開し、移動します。
DeepStream-Yolo
フォルダー -
キャリブレーション画像用に新しいディレクトリを作成する
mkdir calibration
-
キャリブレーションを実行するために、COCO データセットから 1000 個のランダムな画像を選択するには、以下を実行します。
for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do cp ${jpg} calibration/ done
注
NVIDIAは、良好な精度を得るためには、少なくとも500枚の画像を使用することを推奨しています。この例では、より良い精度を得るために1000枚の画像が選択されています(画像が多いほど精度が向上します)。これは、head -1000で設定できます。たとえば、2000枚の画像の場合は、head -2000とします。このプロセスには時間がかかる場合があります。
-
以下を生成します
calibration.txt
選択されたすべての画像を含むファイルrealpath calibration/*jpg > calibration.txt
-
環境変数を設定する
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1
注
INT8_CALIB_BATCH_SIZEの値を大きくすると、精度が向上し、キャリブレーション速度が向上します。GPUメモリに応じて設定してください。
-
アップデート
config_infer_primary_yolo11.txt
ファイルから
... model-engine-file=model_b1_gpu0_fp32.engine #int8-calib-file=calib.table ... network-mode=0 ...
~
... model-engine-file=model_b1_gpu0_int8.engine int8-calib-file=calib.table ... network-mode=1 ...
推論の実行
deepstream-app -c deepstream_app_config.txt
マルチストリーム設定
見る: Ultralytics YOLO11を使用してJetson NanoでDeepStream SDKで複数のストリームを実行する方法 🎉
単一のdeepstreamアプリケーションで複数のストリームを設定するには、以下のように変更できます。 deepstream_app_config.txt
ファイル
-
必要なストリームの数に応じて、行と列を変更してグリッド表示を作成します。たとえば、4つのストリームの場合、2行と2列を追加できます。
[tiled-display] rows=2 columns=2
-
セット
num-sources=4
を追加uri
4つのストリームすべて[source0] enable=1 type=3 uri=path/to/video1.jpg uri=path/to/video2.jpg uri=path/to/video3.jpg uri=path/to/video4.jpg num-sources=4
推論の実行
deepstream-app -c deepstream_app_config.txt

ベンチマーク結果
次のベンチマークは、NVIDIA Jetson Orin NX 16GBで640x640の入力サイズでYOLO11モデルが異なるTensorRT精度レベルでどのように動作するかをまとめたものです。
比較チャート

詳細な比較表
パフォーマンス
形式 | ステータス | 推論時間 (ms/im) |
---|---|---|
TensorRT(FP32) | ✅ | 8.64 |
TensorRT(FP16) | ✅ | 5.27 |
TensorRT(INT8) | ✅ | 4.54 |
形式 | ステータス | 推論時間 (ms/im) |
---|---|---|
TensorRT(FP32) | ✅ | 14.53 |
TensorRT(FP16) | ✅ | 7.91 |
TensorRT(INT8) | ✅ | 6.05 |
形式 | ステータス | 推論時間 (ms/im) |
---|---|---|
TensorRT(FP32) | ✅ | 32.05 |
TensorRT(FP16) | ✅ | 15.55 |
TensorRT(INT8) | ✅ | 10.43 |
形式 | ステータス | 推論時間 (ms/im) |
---|---|---|
TensorRT(FP32) | ✅ | 39.68 |
TensorRT(FP16) | ✅ | 19.88 |
TensorRT(INT8) | ✅ | 13.64 |
形式 | ステータス | 推論時間 (ms/im) |
---|---|---|
TensorRT(FP32) | ✅ | 80.65 |
TensorRT(FP16) | ✅ | 39.06 |
TensorRT(INT8) | ✅ | 22.83 |
謝辞
このガイドは、当初、Seeed StudioのLakshanthaとElaineによって作成されました。
よくある質問
NVIDIA Jetson デバイスに Ultralytics YOLO11 をセットアップするにはどうすればよいですか?
NVIDIA JetsonデバイスにUltralytics YOLO11を設定するには、まずJetPackバージョンと互換性のあるDeepStream SDKをインストールする必要があります。YOLO11のデプロイメント用にNVIDIA Jetsonを構成するには、クイックスタートガイドのステップバイステップガイドに従ってください。
NVIDIA JetsonでYOLO11とTensorRTを使用する利点は何ですか?
YOLO11でTensorRTを使用すると、推論用にモデルが最適化され、NVIDIA Jetsonデバイスでのレイテンシが大幅に短縮され、スループットが向上します。TensorRTは、レイヤーの融合、精度のキャリブレーション、カーネルの自動チューニングを通じて、高性能で低レイテンシの深層学習推論を提供します。これにより、実行が高速化され、効率が向上し、ビデオ分析や自律マシンなどのリアルタイムアプリケーションに特に役立ちます。
さまざまなNVIDIA JetsonハードウェアでDeepStream SDKを使用してUltralytics YOLO11を実行できますか?
はい、DeepStream SDKとTensorRTを使用したUltralytics YOLO11のデプロイに関するガイドは、NVIDIA Jetsonの全ラインナップに対応しています。これには、JetPack 5.1.3を搭載したJetson Orin NX 16GBや、JetPack 4.6.4を搭載したJetson Nano 4GBなどのデバイスが含まれます。詳細な手順については、DeepStream Configuration for YOLO11のセクションを参照してください。
DeepStream用にYOLO11モデルをONNXに変換するにはどうすればよいですか?
DeepStreamでのデプロイ用にYOLO11モデルをONNX形式に変換するには、以下を使用します。 utils/export_yolo11.py
からのスクリプト DeepStream-Yolo リポジトリ。
コマンドの例を以下に示します。
python3 utils/export_yolo11.py -w yolo11s.pt --opset 12 --simplify
モデル変換の詳細については、モデルエクスポートセクションをご覧ください。
NVIDIA Jetson Orin NXにおけるYOLOのパフォーマンスベンチマークは何ですか?
NVIDIA Jetson Orin NX 16GBでのYOLO11モデルのパフォーマンスは、TensorRTの精度レベルによって異なります。たとえば、YOLO11sモデルは以下を達成します。
- FP32精度: 14.6 ms/im, 68.5 FPS
- FP16精度: 7.94 ms/im, 126 FPS
- INT8精度: 5.95 ms/im, 168 FPS
これらのベンチマークは、NVIDIA Jetson ハードウェア上で TensorRT 最適化された YOLO11 モデルを使用することの効率と能力を強調しています。詳細については、Benchmark Results セクションをご覧ください。