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を使用します。

NVIDIA DeepStream SDK on Jetson platform
注意

This guide has been tested with NVIDIA Jetson Orin Nano Super Developer Kit running the latest stable JetPack release of JP6.1, Seeed Studio reComputer J4012 which is based on NVIDIA Jetson Orin NX 16GB running JetPack release of JP5.1.3 and Seeed Studio reComputer J1020 v2 which is based on NVIDIA Jetson Nano 4GB running JetPack release of JP4.6.4. It is expected to work across all the NVIDIA Jetson hardware lineup including latest and legacy.

NVIDIA DeepStreamとは何ですか?

NVIDIAのDeepStream SDKは、GStreamerに基づいたAIベースのマルチセンサー処理、ビデオ、オーディオ、画像理解のための完全なストリーミング分析ツールキットです。これは、IVA(インテリジェントビデオ分析)アプリやサービスを構築するビジョンAI開発者、ソフトウェアパートナー、スタートアップ、OEMに最適です。ニューラルネットワークや、トラッキング、ビデオのエンコード/デコード、ビデオレンダリングといった複雑な処理タスクを組み込んだストリーム処理パイプラインを作成できます。これらのパイプラインにより、ビデオ、画像、センサーデータに対するリアルタイム分析が可能になります。DeepStreamのマルチプラットフォームサポートにより、オンプレミス、エッジ、クラウド上でビジョンAIアプリケーションやサービスをより迅速かつ簡単に開発できます。

前提条件

本ガイドを始める前に:

ヒント

本ガイドでは、JetsonデバイスへのDeepStream SDKインストールにDebianパッケージ方式を使用しています。旧バージョンのDeepStreamについては、DeepStream SDK on Jetson (Archived)をご覧ください。

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. Copy the export_yolo26.py file from DeepStream-Yolo/utils directory to the ultralytics folder

    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.pt.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.pt.onnx
    ...
    num-detected-classes=80
    ...
  5. deepstream_app_configファイルを編集します

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yolo26.txt
  6. 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
ヒント

If you want to convert the model to FP16 precision, simply set model-engine-file=model_b1_gpu0_fp16.engine and network-mode=2 inside config_infer_primary_yolo26.txt

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
    ...

推論を実行します

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. num-sources=4を設定し、4つのストリームすべてに対してuriエントリを追加します。

    [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
DeepStream multi-camera streaming configuration

ベンチマーク結果

以下のベンチマークは、NVIDIA Jetson Orin NX 16GBにおいて、640x640の入力サイズでYOLO26モデルが各TensorRT精度レベルでどのように動作するかをまとめたものです。

比較チャート

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をセットアップするにはどうすればよいですか?

To set up Ultralytics YOLO26 on an NVIDIA Jetson device, you first need to install the DeepStream SDK compatible with your JetPack version. Follow the step-by-step guide in our Quick Start Guide to configure your NVIDIA Jetson for YOLO26 deployment.

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に変換するにはどうすればよいですか?

To convert a YOLO26 model to ONNX format for deployment with DeepStream, use the utils/export_yolo26.py script from the DeepStream-Yolo repository.

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

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

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

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

NVIDIA Jetson Orin NX 16GBにおけるYOLO26モデルのパフォーマンスは、TensorRTの精度レベルによって異なります。例えば、YOLO26sモデルでは以下のような結果が得られます:

  • 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最適化されたYOLO26モデルを使用することの効率性と能力を裏付けています。詳細については、ベンチマーク結果のセクションをご覧ください。

コメント