NVIDIA JetsonでDeepStream SDKとTensorRTを使用するUltralytics YOLO26#
視聴: Jetson Orin NXでNVIDIA Deepstreamを使ってUltralytics YOLO26モデルを使用する方法 🚀
この包括的なガイドでは、DeepStream SDKとTensorRTを使用してNVIDIA JetsonデバイスにUltralytics YOLO26をデプロイする手順を詳しく説明します。ここでは、TensorRTを使用してJetsonプラットフォームでの推論パフォーマンスを最大化します。
このガイドでは、YOLO26向けDeepStreamの設定、INT8キャリブレーション、マルチストリームのセットアップ、ベンチマーク結果について説明します。

このガイドは、NVIDIA Jetson Orin Nano Super Developer KitでJetPackリリースのJP6.1を実行した環境、NVIDIA Jetson Orin NX 16GBをベースとしJetPackリリースのJP5.1.3を実行するSeeed Studio reComputer J4012、およびNVIDIA Jetson Nano 4GBをベースとしJetPackリリースのJP4.6.4を実行するSeeed Studio reComputer J1020 v2でテストされています。最新および旧世代を含む、すべてのNVIDIA Jetsonハードウェアで動作することが期待されます。
NVIDIA DeepStreamとは何ですか?#
NVIDIAのDeepStream SDKは、AIベースのマルチセンサー処理、動画、音声、画像の理解を実現する、GStreamerベースの包括的なストリーミング分析ツールキットです。IVA(インテリジェントビデオ分析)アプリやサービスを開発するビジョンAI開発者、ソフトウェアパートナー、スタートアップ、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をインストールします
このガイドでは、DeepStream SDKをJetsonデバイスにインストールする際に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) # 作成 '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(クラスタリングなし)を指定した場合に、同じボックスが2回描画されるのを防ぎます。推論サイズ(デフォルト: 640)を変更するにはimgsz=1280を、バッチサイズを4にするにはbatch=4を追加します(エクスポートされたバッチは固定のため、DeepStreamの設定のbatch-sizeと一致させる必要があります)。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マルチストリームのセットアップ#
視聴: Jetson OrinでNVIDIA DeepStreamを使用し、Ultralytics YOLO26によるマルチストリーム推論を実行する方法 🚀
1つのDeepStreamアプリケーションで複数のストリームを設定するには、deepstream_app_config.txtファイルに以下の変更を加えます:
-
ストリーム数に応じて、行数と列数を変更し、グリッド表示を構成します。たとえば4つのストリームの場合は、行数と列数をそれぞれ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/im) |
|---|---|---|
| TensorRT(FP32) | ✅ | 8.64 |
| TensorRT(FP16) | ✅ | 5.27 |
| TensorRT(INT8) | ✅ | 4.54 |
謝辞#
このガイドは、Seeed Studioの友人であるLakshanthaとElaineが最初に作成しました。
よくある質問#
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) # 作成 '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の環境変数を設定します。次に、config_infer_primary_yolo26.txtをmodel-engine-file=model_b1_gpu0_int8.engine、int8-calib-file=calib.table、network-mode=1で更新します。手順の詳細は、INT8キャリブレーションのセクションをご覧ください。現在、INT8にはTensorRT 8.xが必要です。1つの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モデルを使用する効率性と性能を示しています。詳細については、ベンチマーク結果セクションをご覧ください。