YOLO Vision 2026:

NVIDIA Jetson上でDeepStream SDKとTensorRTを使用して実行するUltralytics YOLO26#



Watch: How to use Ultralytics YOLO26 models with NVIDIA Deepstream on Jetson Orin NX 🚀

この包括的なガイドでは、DeepStream SDKとTensorRTを使用して、NVIDIA JetsonデバイスにUltralytics YOLO26を展開するための詳細な手順を説明します。ここでは、Jetsonプラットフォームでの推論パフォーマンスを最大化するためにTensorRTを使用します。

このガイドでは、YOLO26のDeepStream設定INT8キャリブレーションマルチストリーム設定、およびベンチマーク結果について順に説明します。

NVIDIA DeepStream SDK on Jetson platform
注意

本ガイドは、最新の安定版 JetPack である JP6.1 を実行する NVIDIA Jetson Orin Nano Super Developer Kit、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アプリケーションやサービスをより速く、より簡単に開発できるようになります。

前提条件#

このガイドを始める前に:

ヒント

このガイドでは、JetsonデバイスにDeepStream SDKをインストールするためにDebianパッケージ方法を使用しています。レガシーバージョンのDeepStreamにアクセスするには、Jetson上のDeepStream SDK(アーカイブ済み)もご覧ください。

YOLO26のためのDeepStream設定#

ここでは、YOLOモデル向けのNVIDIA DeepStream SDKサポートを含むmarcoslucianops/DeepStream-Yolo GitHubリポジトリを使用しています。marcoslucianopsの貢献に感謝いたします!

  1. 必要な依存関係とともにUltralyticsをインストールします

    cd ~
    pip install -U pip
    git clone https://github.com/ultralytics/ultralytics
    cd ultralytics
    pip install -e ".[export]" onnxslim
  2. DeepStream-Yoloリポジトリをクローンします

    cd ~
    git clone https://github.com/marcoslucianops/DeepStream-Yolo
  3. DeepStream-Yolo/utils ディレクトリから export_yolo26.py ファイルを ultralytics フォルダにコピーします

    cp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics
    cd ultralytics
  4. YOLO26プロジェクトからお好みのUltralytics YOLO26検出モデル(.pt)をダウンロードします。ここではyolo26s.ptを使用します。

    wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
注意

カスタムトレーニングされたYOLO26モデルを使用することもできます。

  1. モデルをONNXに変換します

    python3 export_yolo26.py -w yolo26s.pt
上記のコマンドに以下の引数を渡します

DeepStream 5.1の場合は、--dynamicの引数を削除し、opsetの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
  1. 生成された.onnxモデルファイルとlabels.txtファイルをDeepStream-Yoloフォルダにコピーします。

    cp yolo26s.onnx labels.txt ~/DeepStream-Yolo
    cd ~/DeepStream-Yolo
  2. インストールされている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
  3. ライブラリをコンパイルします

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
  4. モデルに合わせてconfig_infer_primary_yolo26.txtファイルを編集します(80クラスのYOLO26sの場合)。

    [property]
    ...
    onnx-file=yolo26s.onnx
    ...
    num-detected-classes=80
    ...
    parse-bbox-func-name=NvDsInferParseYolo
    ...
YOLO26の精度設定

YOLO26 は中央パディング付きで入力をリサイズし、NMS なしで実行されます。最高の accuracy を得るには、config_infer_primary_yolo26.txt[property] セクションに以下を追加してください:

[property]
...
maintain-aspect-ratio=1
symmetric-padding=1
cluster-mode=4
...
  1. deepstream_app_configファイルを編集します。

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yolo26.txt
  2. deepstream_app_configファイルでビデオソースを変更することもできます。ここでは、デフォルトのビデオファイルが読み込まれます。

    ...
    [source0]
    ...
    uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4

推論を実行します#

deepstream-app -c deepstream_app_config.txt
注意

推論を開始する前に、TensorRTエンジンファイルの生成に時間がかかる場合があります。そのままお待ちください。

YOLO26 with deepstream
ヒント

モデルを FP16 精度に変換するには、config_infer_primary_yolo26.txt 内で model-engine-file=model_b1_gpu0_fp16.enginenetwork-mode=2 を設定するだけです

INT8キャリブレーション#

推論にINT8精度を使用する場合は、以下の手順に従う必要があります:

注意

現在、INT8はTensorRT 10.xでは動作しません。このガイドのセクションはTensorRT 8.xでテストされており、動作する想定です。

  1. OPENCV環境変数を設定します。

    export OPENCV=1
  2. ライブラリをコンパイルします

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
  3. COCOデータセットの場合は、val2017をダウンロードし、展開して、DeepStream-Yoloフォルダに移動します。

  4. キャリブレーション画像用の新しいディレクトリを作成します

    mkdir calibration
  5. 以下を実行して、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です。このプロセスには時間がかかる場合があります。

  1. 選択したすべての画像を使用してcalibration.txtファイルを作成します。

    realpath calibration/*jpg > calibration.txt
  2. 環境変数を設定します

    export INT8_CALIB_IMG_PATH=calibration.txt
    export INT8_CALIB_BATCH_SIZE=1
注意

INT8_CALIB_BATCH_SIZEの値が大きいほど、精度が向上し、キャリブレーション速度も速くなります。GPUメモリに合わせて設定してください。

  1. 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ファイルに以下の変更を加えます。

  1. 必要なストリーム数に合わせてグリッド表示の行数と列数を変更します。例えば、4ストリームの場合は2行2列を追加できます。

    [tiled-display]
    rows=2
    columns=2
  2. 各ストリームに対して個別の[sourceN]グループを追加し、それぞれに独自のurinum-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
DeepStream multi-camera streaming configuration

ベンチマーク結果#

以下のベンチマークは、NVIDIA Jetson Orin NX 16GB上で640x640の入力サイズを使用した場合の、さまざまなTensorRT精度レベルにおけるYOLO11モデルのパフォーマンスを要約しています。YOLO26は、上記で説明した同じDeepStreamエクスポートおよび推論ワークフローを使用します。

比較チャート#

NVIDIA Jetson DeepStream performance benchmarks

詳細比較表#

性能
形式ステータス推論時間 (ms/im)
TensorRT (FP32)8.64
TensorRT (FP16)5.27
TensorRT (INT8)4.54

謝辞#

このガイドは、Seeed Studioの友人であるLakshantha氏とElaine氏によって作成されました。

よくある質問 (FAQ)#

NVIDIA JetsonデバイスでUltralytics YOLO26をセットアップするにはどうすればよいですか?#

NVIDIA JetsonデバイスでUltralytics YOLO26を設定するには、まずJetPackバージョンと互換性のあるDeepStream SDKをインストールする必要があります。クイックスタートガイドのステップバイステップガイドに従って、YOLO26のデプロイメント用にNVIDIA Jetsonを設定してください。

NVIDIA JetsonでYOLO26とともにTensorRTを使用する利点は何ですか?#

YOLO26でTensorRTを使用すると、推論用にモデルが最適化され、NVIDIA Jetsonデバイスでのレイテンシが大幅に短縮され、スループットが向上します。TensorRTは、レイヤー融合、精度キャリブレーション、カーネル自動チューニングを通じて、高性能で低レイテンシのディープラーニング推論を提供します。これにより、より高速で効率的な実行が可能になり、ビデオ分析や自律型マシンなどのリアルタイムアプリケーションに特に役立ちます。

異なるNVIDIA JetsonハードウェアでDeepStream SDKを使用してUltralytics YOLO26を実行できますか?#

はい、DeepStream SDKおよびTensorRTを使用してUltralytics YOLO26を展開するためのガイドは、NVIDIA Jetsonの全ラインナップで互換性があります。これには、JetPack 5.1.3を搭載したJetson Orin NX 16GBや、JetPack 4.6.4を搭載したJetson Nano 4GBなどのデバイスが含まれます。詳細な手順については、YOLO26のDeepStream設定のセクションを参照してください。

DeepStream用にYOLO26モデルをONNXに変換するにはどうすればよいですか?#

DeepStream でのデプロイ用に YOLO26 モデルを ONNX 形式に変換するには、DeepStream-Yolo リポジトリの utils/export_yolo26.py スクリプトを使用します。

コマンド例は以下の通りです:

python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplify

モデル変換の詳細については、モデルエクスポートセクションをご確認ください。

DeepStreamでYOLO26を使用してINT8推論を実行するにはどうすればよいですか?#

INT8推論を実行するには、代表的な画像セットでモデルをキャリブレーションし、DeepStreamの構成をINT8モードに切り替えます。COCO val2017画像をダウンロードし、約1000枚のキャリブレーション画像を選択し、INT8_CALIB_IMG_PATHおよびINT8_CALIB_BATCH_SIZE環境変数を設定し、その後config_infer_primary_yolo26.txtmodel-engine-file=model_b1_gpu0_int8.engineint8-calib-file=calib.table、およびnetwork-mode=1で更新します。全手順については、INT8キャリブレーションのセクションを参照してください。INT8には現在TensorRT 8.xが必要です。

Jetson上のDeepStreamで複数のカメラストリームを実行するにはどうすればよいですか?#

単一の DeepStream アプリケーションで複数のストリームを処理するには、deepstream_app_config.txt ファイルを編集してタイル表示グリッドを追加し、各ソース URI をリストします。グリッドを構築するには [tiled-display] の下に rowscolumns を設定し、ストリームごとに独自の [sourceN]uri および num-sources=1 を持つ個別のグループを追加し、ストリームの数に合わせてグリッドを調整します。完全な例については、MultiStream Setup セクションを参照してください。

NVIDIA Jetson Orin NXでのYOLOのパフォーマンスベンチマークはどうなっていますか?#

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モデルを使用する効率性と能力を強調しています。詳細については、ベンチマーク結果のセクションを参照してください。

コメント