Meet YOLO26: next-gen vision AI.

Link to this sectionNVIDIA 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
注意

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.

Link to this sectionNVIDIA DeepStreamとは何ですか?#

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

Link to this section前提条件#

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

ヒント

本ガイドでは、JetsonデバイスにDeepStream SDKをインストールするためにDebianパッケージ方式を使用しました。DeepStream SDK on Jetson (Archived)にアクセスして、以前のバージョンのDeepStreamを入手することも可能です。

Link to this sectionYOLO26のための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.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 resizes the input with center padding and runs without NMS. For the best accuracy, add the following to the [property] section of config_infer_primary_yolo26.txt:

[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

Link to this section推論を実行します#

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

Link to this sectionINT8キャリブレーション#

推論に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
    ...

Link to this sectionINT8推論の実行#

同じコマンドを実行してINT8エンジンをビルドし、推論を開始します。

deepstream-app -c deepstream_app_config.txt

Link to this sectionマルチストリーム設定#



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

Link to this sectionマルチストリーム推論の実行#

同じコマンドを実行して、すべてのストリームをタイル状のディスプレイで起動します。

deepstream-app -c deepstream_app_config.txt
DeepStream multi-camera streaming configuration

Link to this sectionベンチマーク結果#

以下のベンチマークは、NVIDIA Jetson Orin NX 16GBにおいて、640x640の入力サイズでYOLO11モデルが異なるTensorRT精度レベルでどのように動作するかをまとめたものです。YOLO26も、上記で説明したDeepStreamエクスポートおよび推論ワークフローと同じものを使用します。

Link to this section比較チャート#

NVIDIA Jetson DeepStream performance benchmarks

Link to this section詳細比較表#

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

Link to this section謝辞#

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

Link to this sectionよくある質問 (FAQ)#

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

NVIDIA Jetsonデバイス上でUltralytics YOLO26をセットアップするには、まずJetPackのバージョンと互換性のあるDeepStream SDKをインストールする必要があります。NVIDIA JetsonをYOLO26展開用に構成するには、クイックスタートガイドのステップバイステップの手順に従ってください。

Link to this sectionNVIDIA JetsonでYOLO26とともにTensorRTを使用する利点は何ですか?#

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

Link to this section異なる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設定」セクションを参照してください。

Link to this sectionDeepStream用に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

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

Link to this sectionDeepStreamで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が必要です。

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

To process multiple streams in a single DeepStream application, edit the deepstream_app_config.txt file to add a tiled-display grid and list each source URI. Set the rows and columns under [tiled-display] to build the grid, add a separate [sourceN] group per stream with its own uri and num-sources=1, and adjust the grid to fit the number of streams. See the MultiStream Setup section for a complete example.

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

コメント