DeepStream SDKとTensorRTを使用したNVIDIA Jetson上のUltralytics YOLO26#
Watch: How to use Ultralytics YOLO26 models with NVIDIA Deepstream on Jetson Orin NX 🚀
この包括的なガイドでは、NVIDIA JetsonデバイスにDeepStream SDKとTensorRTを使用してUltralytics YOLO26をデプロイする手順を詳しく説明します。ここでは、Jetsonプラットフォームで推論性能を最大化するためにTensorRTを使用します。
このガイドでは、YOLO26向けDeepStream設定、INT8キャリブレーション、マルチストリーム設定、およびベンチマーク結果について説明します。

このガイドは、JP6.1の最新安定版JetPackリリースを実行するNVIDIA Jetson Orin Nano Super Developer Kit、NVIDIA Jetson Orin NX 16GBをベースとし、JP5.1.3のJetPackリリースを実行するSeeed Studio reComputer J4012、およびNVIDIA Jetson Nano 4GBをベースとし、JP4.6.4のJetPackリリースを実行するSeeed Studio reComputer J1020 v2でテストされています。最新モデルからレガシーモデルまで、すべてのNVIDIA Jetsonハードウェアシリーズで動作すると見込まれます。
NVIDIA DeepStreamとは何ですか?#
NVIDIAのDeepStream SDKは、AIベースのマルチセンサー処理、動画、音声、画像理解向けの、GStreamerを基盤とする包括的なストリーミング分析ツールキットです。ビジョンAI開発者、ソフトウェアパートナー、スタートアップ、IVA(インテリジェントビデオ分析)アプリやサービスを構築するOEMに適しています。ニューラルネットワークや、トラッキング、動画のエンコード/デコード、動画レンダリングなどの複雑な処理タスクを組み込んだストリーム処理パイプラインを作成できます。これらのパイプラインにより、動画、画像、センサーデータのリアルタイム分析が可能になります。DeepStreamのマルチプラットフォーム対応により、オンプレミス、エッジ、クラウドでビジョンAIアプリケーションとサービスを、より迅速かつ容易に開発できます。
前提条件#
このガイドを開始する前に、次の操作を行ってください。
- ドキュメントのクイックスタートガイド:NVIDIA JetsonとUltralytics YOLO26を参照して、NVIDIA JetsonデバイスをUltralytics YOLO26用にセットアップします
- JetPackのバージョンに応じてDeepStream SDKをインストールします
- JetPack 4.6.4の場合は、DeepStream 6.0.1をインストールします
- JetPack 5.1.3の場合は、DeepStream 6.3をインストールします
- JetPack 6.1の場合は、DeepStream 7.1をインストールします
- JetPack 7.1の場合は、DeepStream 9.0をインストールします
このガイドでは、JetsonデバイスへのDeepStream SDKのインストールにDebianパッケージ方式を使用しました。レガシーバージョンのDeepStreamにアクセスするには、Jetson上のDeepStream SDK(アーカイブ)も参照できます。
YOLO26向けDeepStream設定#
ここでは、YOLOモデル向けのNVIDIA DeepStream SDKサポートを含むmarcoslucianops/DeepStream-Yolo GitHubリポジトリを使用します。貢献してくださったmarcoslucianopsの尽力に感謝します。
-
必要な依存関係とともにUltralyticsをインストールします
pip install ultralytics onnx onnxslim -
DeepStream-Yoloリポジトリをクローンします
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
YOLO26プロジェクトから、任意のUltralytics YOLO26検出モデル(.pt)をダウンロードします。ここではyolo26s.ptを使用します。
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
カスタム学習したYOLO26モデルも使用できます。
-
モデルをONNXに変換し、DeepStreamがクラス名を読み込む
labels.txtファイルを作成します。from ultralytics import YOLO model = YOLO("yolo26s.pt") model.export(format="onnx", nms=False, agnostic_nms=True) # creates 'yolo26s.onnx' with open("labels.txt", "w") as f: f.write("\n".join(model.names.values()))
nms=False はNMSフリーのヘッドをエクスポートし、agnostic_nms=True は検出ごとに1つのクラスを維持するため、DeepStream設定の cluster-mode=4(クラスタリングなし)がボックスを二重に描画しません。推論サイズ(デフォルト: 640)を変更するには imgsz=1280 を、バッチサイズ4(エクスポートされたバッチは静的なため、DeepStream設定の batch-size と一致させる必要があります)にするには batch=4 を、TensorRT 8.2以前(DeepStream 6.0.1以前)にするには opset=12 を追加します。完全なリストについては、エクスポート引数を参照してください。
-
生成された
.onnxモデルファイルとlabels.txtファイルをDeepStream-Yoloフォルダーにコピーしますcp yolo26s.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo -
インストールされているJetPackのバージョンに応じてCUDAのバージョンを設定します
JetPack 4.6.4の場合:
export CUDA_VER=10.2JetPack 5.1.3の場合:
export CUDA_VER=11.4JetPack 6.1の場合:
export CUDA_VER=12.6JetPack 7.1の場合:
export CUDA_VER=13.0 -
ライブラリをコンパイルします
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
モデルに応じて
config_infer_primary_yolo26.txtファイルを編集します(80クラスのYOLO26sの場合)[property] ... onnx-file=yolo26s.onnx ... num-detected-classes=80 ... parse-bbox-func-name=NvDsInferParseYolo ...
YOLO26は入力を中央パディング付きでリサイズし、NMSなしで実行します。最高の精度を得るには、config_infer_primary_yolo26.txtの[property]セクションに次の内容を追加します。
[property]
...
maintain-aspect-ratio=1
symmetric-padding=1
cluster-mode=4
...-
deepstream_app_configファイルを編集します... [primary-gie] ... config-file=config_infer_primary_yolo26.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精度に変換する場合は、config_infer_primary_yolo26.txt内のmodel-engine-file=model_b1_gpu0_fp16.engineとnetwork-mode=2を設定するだけです
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_yolo26.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 ...
INT8推論を実行します#
同じコマンドを実行してINT8エンジンをビルドし、推論を開始します。
deepstream-app -c deepstream_app_config.txtマルチストリーム設定#
Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀
単一のDeepStreamアプリケーションで複数のストリームを設定するには、deepstream_app_config.txtファイルに次の変更を加えます。
-
使用するストリーム数に応じて行と列を変更し、グリッド表示を構築します。たとえば、4ストリームの場合は、2行2列を追加します。
[tiled-display] rows=2 columns=2 -
各ストリームに個別の
[sourceN]グループを追加し、それぞれに独自のuriとnum-sources=1を設定します。[source0] enable=1 type=3 uri=file:///path/to/video1.mp4 num-sources=1 [source1] enable=1 type=3 uri=file:///path/to/video2.mp4 num-sources=1 [source2] enable=1 type=3 uri=file:///path/to/video3.mp4 num-sources=1 [source3] enable=1 type=3 uri=file:///path/to/video4.mp4 num-sources=1
マルチストリーム推論を実行します#
同じコマンドを実行して、タイル表示ですべてのストリームを起動します。
deepstream-app -c deepstream_app_config.txt
ベンチマーク結果#
以下のベンチマークは、NVIDIA Jetson Orin NX 16GB上で入力サイズ640x640を使用した場合の、異なるTensorRT精度レベルにおけるYOLO11モデルの性能をまとめたものです。YOLO26では、上記で説明したものと同じDeepStreamのエクスポートおよび推論ワークフローを使用します。
比較グラフ#

詳細比較表#
| 形式 | ステータス | 推論時間(ms/画像) |
|---|---|---|
| TensorRT(FP32) | ✅ | 8.64 |
| TensorRT(FP16) | ✅ | 5.27 |
| TensorRT(INT8) | ✅ | 4.54 |
謝辞#
このガイドは、当社の友人であるSeeed StudioのLakshantha氏とElaine氏によって最初に作成されました。
FAQ#
NVIDIA JetsonデバイスでUltralytics YOLO26をセットアップするには、まずJetPackのバージョンに対応するDeepStream SDKをインストールする必要があります。クイックスタートガイドの手順に従って、YOLO26のデプロイ用にNVIDIA Jetsonを設定してください。
YOLO26でTensorRTを使用すると、モデルが推論向けに最適化され、NVIDIA Jetsonデバイス上でレイテンシが大幅に低減し、スループットが向上します。TensorRTは、レイヤー融合、精度キャリブレーション、カーネルの自動チューニングにより、高性能かつ低レイテンシのディープラーニング推論を実現します。これにより、より高速で効率的な実行が可能になり、動画分析や自律型マシンなどのリアルタイムアプリケーションに特に有用です。
はい、DeepStream SDKとTensorRTを使用してUltralytics YOLO26をデプロイするためのこのガイドは、NVIDIA Jetsonシリーズ全体に対応しています。これには、JetPack 5.1.3を搭載したJetson Orin NX 16GBや、JetPack 4.6.4を搭載したJetson Nano 4GBなどのデバイスが含まれます。詳細な手順については、YOLO26向けDeepStream設定セクションを参照してください。
Ultralyticsエクスポート機能を使用してNMSフリーヘッドを持つモデルをエクスポートし、DeepStreamがクラス名を読み込む
labels.txtファイルを作成します。from ultralytics import YOLO model = YOLO("yolo26s.pt") model.export(format="onnx", nms=False, agnostic_nms=True) # creates 'yolo26s.onnx' with open("labels.txt", "w") as f: f.write("\n".join(model.names.values()))TensorRT 8.2以前(DeepStream 6.0.1以前)の場合は
opset=12を追加します。モデル変換の詳細については、モデルのエクスポートセクションをご覧ください。INT8推論を実行するには、代表的な画像セットでモデルをキャリブレーションし、DeepStreamの設定をINT8モードに切り替えます。COCOのval2017画像をダウンロードし、約1000枚のキャリブレーション画像を選択して、
INT8_CALIB_IMG_PATHとINT8_CALIB_BATCH_SIZEの環境変数を設定し、model-engine-file=model_b1_gpu0_int8.engine、int8-calib-file=calib.table、network-mode=1を指定してconfig_infer_primary_yolo26.txtを更新します。完全な手順については、INT8キャリブレーションセクションを参照してください。INT8には現在TensorRT 8.xが必要です。単一のDeepStreamアプリケーションで複数のストリームを処理するには、
deepstream_app_config.txtファイルを編集してタイル表示グリッドを追加し、各ソースURIを列挙します。[tiled-display]の下にrowsとcolumnsを設定してグリッドを構築し、ストリームごとに独立した[sourceN]グループを追加し、それぞれに独自のuriとnum-sources=1を設定して、ストリーム数に合わせてグリッドを調整します。完全な例については、マルチストリーム設定セクションを参照してください。NVIDIA Jetson Orin NX 16GB上でのYOLO11モデルの性能は、TensorRTの精度レベルによって異なります。たとえば、YOLO11sモデルでは次の結果が得られます。
- FP32精度:14.53 ms/im、68.8 FPS
- FP16精度:7.91 ms/im、126 FPS
- INT8精度:6.05 ms/im、165 FPS
これらのベンチマークは、NVIDIA Jetsonハードウェア上でTensorRTにより最適化されたYOLO11モデルを使用する効率性と性能を示しています。詳細については、ベンチマーク結果セクションを参照してください。