コンテンツへスキップ

Ultralytics YOLO11 NVIDIA Jetson上でDeepStream SDKとTensorRT



見るんだ: Jetson Nano上でDeepStream SDKを使用して複数のストリームを実行する方法Ultralytics YOLO11

この包括的なガイドでは、DeepStream SDK およびTensorRT を使用して、NVIDIA Jetson デバイス上にUltralytics YOLO11 をデプロイするための詳細なウォークスルーを提供します。ここでは、TensorRT を使用して、Jetson プラットフォームでの推論パフォーマンスを最大化します。

NVIDIA Jetson上のDeepStream

このガイドは、NVIDIA JetsonOrin Nano Super Developer Kitで最新の安定版 JetPack リリースJP6.1 を動作させてテストしています、 Seeed Studio reComputer J4012はNVIDIA Jetson Orin NX 16GB をベースに JetPack リリースJP5.1.3を、Seeed Studio reComputer J1020 v2はNVIDIA Jetson Nano 4GB をベースに JetPack リリースJP4.6.4 を動作させています。最新およびレガシーを含む、NVIDIA Jetsonハードウェアの全ラインナップで動作する見込みです。

NVIDIA DeepStreamとは?

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

前提条件

このガイドに従う前に

チップ

このガイドでは、DeepStream SDKをJetsonデバイスにインストールする方法として、Debianパッケージを使用しています。レガシーバージョンのDeepStreamにアクセスするには、DeepStream SDK on Jetson (Archived)を参照してください。

のDeepStream構成YOLO11

ここでは、YOLO モデルのためのNVIDIA DeepStream SDK サポートを含むmarcoslucianops/DeepStream-YoloGitHub リポジトリを使用しています。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. をコピーする。 export_yoloV8.py ファイル DeepStream-Yolo/utils ディレクトリを ultralytics フォルダ

    cp ~/DeepStream-Yolo/utils/export_yoloV8.py ~/ultralytics
    cd ultralytics
    

    export_yoloV8.py YOLOv8 、YOLO11 の両モデルに対応。

  4. Ultralytics YOLO11 検出モデル (.pt) をYOLO11 リリースからお好みのものをダウンロードしてください。ここではyolo11s.pt を使用します。

    wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s.pt
    

    また、カスタムで訓練されたYOLO11 モデルを使用することもできる。

  5. モデルをONNX

    python3 export_yoloV8.py -w yolo11s.pt
    

    上記のコマンドに以下の引数を渡す

    DeepStream 6.0.1 では、オペセット 12 以下を使用します。既定のオペセットは 16 です。

    --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
    
  6. 生成された .onnx モデルファイルと labels.txt ファイルを DeepStream-Yolo フォルダ

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

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
    
  9. を編集する config_infer_primary_yoloV8.txt ファイル(80クラスを持つYOLO11の場合)。

    [property]
    ...
    onnx-file=yolo11s.pt.onnx
    ...
    num-detected-classes=80
    ...
    
  10. を編集する deepstream_app_config ファイル

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

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

推論を実行する

deepstream-app -c deepstream_app_config.txt

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

YOLO11 ディープストリーム

チップ

モデルをFP16精度に変換したい場合は、単に model-engine-file=model_b1_gpu0_fp16.engine そして network-mode=2 内部 config_infer_primary_yoloV8.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データセットについては バル2017に移動する。 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枚の画像が選ばれています(より多くの画像=より高い精度)。頭-1000から設定できます。例えば、2000枚の画像の場合、頭-2000とします。この処理には時間がかかります。

  6. を作成する。 calibration.txt 選択されたすべての画像を含むファイル

    realpath calibration/*jpg > calibration.txt
    
  7. 環境変数の設定

    export INT8_CALIB_IMG_PATH=calibration.txt
    export INT8_CALIB_BATCH_SIZE=1
    

    INT8_CALIB_BATCH_SIZE の値が大きいほど、精度が高くなり、較正速度が速くなります。GPU のメモリに合わせて設定してください。

  8. を更新する。 config_infer_primary_yoloV8.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

マルチストリームのセットアップ

1つのディープストリーム・アプリケーションで複数のストリームをセットアップするには、以下のように deepstream_app_config.txt ファイル

  1. 希望するストリーム数に応じて、行と列を変更してグリッド表示を構築する。例えば、4ストリームなら、2行2列を追加する。

    [tiled-display]
    rows=2
    columns=2
    
  2. セット num-sources=4 を追加する。 uri 4つのストリームのうち

    [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
マルチストリームのセットアップ

ベンチマーク結果

以下のベンチマークは、NVIDIA Jetson Orin NX 16GB上で、入力サイズ640x640でTensorRT の精度レベルを変えた場合のYOLO11 モデルのパフォーマンスをまとめたものです。

比較表

Jetson DeepStreamベンチマークチャート

詳細比較表

パフォーマンス

フォーマット ステータス 推論時間(ms/im)
TensorRT (FP32) 8.64
TensorRT (FP16) 5.27
TensorRT (INT8) 4.54
フォーマット ステータス 推論時間(ms/im)
TensorRT (FP32) 14.53
TensorRT (FP16) 7.91
TensorRT (INT8) 6.05
フォーマット ステータス 推論時間(ms/im)
TensorRT (FP32) 32.05
TensorRT (FP16) 15.55
TensorRT (INT8) 10.43
フォーマット ステータス 推論時間(ms/im)
TensorRT (FP32) 39.68
TensorRT (FP16) 19.88
TensorRT (INT8) 13.64
フォーマット ステータス 推論時間(ms/im)
TensorRT (FP32) 80.65
TensorRT (FP16) 39.06
TensorRT (INT8) 22.83

謝辞

このガイドは当初、Seeed Studioの友人であるラクシャンタとエレインによって作成された。

よくあるご質問

NVIDIA Jetson デバイスでUltralytics YOLO11 を設定するには?

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

NVIDIA JetsonでYOLO11 、TensorRT を使用するメリットは何ですか?

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

NVIDIA Jetsonハードウェア間で、Ultralytics YOLO11 をDeepStream SDKで実行できますか?

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

DeepStream 用のYOLO11 モデルをONNX に変換する方法を教えてください。

DeepStream での展開用にYOLO11 モデルをONNX 形式に変換するには utils/export_yoloV8.py スクリプトを ディープストリームYolo リポジトリ

以下にコマンドの例を挙げる:

python3 utils/export_yoloV8.py -w yolo11s.pt --opset 12 --simplify

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

NVIDIA Jetson Orin NX上のYOLO のパフォーマンス・ベンチマークは?

NVIDIA Jetson Orin NX 16GB上のYOLO11 モデルの性能は、TensorRT 精度レベルによって異なる。例えば、YOLO11s モデルでは、次のような結果が得られます:

  • FP32精度:14.6ms/im、68.5FPS
  • FP16精度:7.94ms/im、126 FPS
  • INT8精度:5.95ms/im、168FPS

これらのベンチマークは、NVIDIA Jetsonハードウェア上でTensorRT-最適化されたYOLO11 モデルを使用することの効率性と能力を強調するものです。詳細については、ベンチマーク結果のセクションをご覧ください。

📅作成:8ヶ月前 ✏️更新 5日前

コメント