コンテンツにスキップ

DeepStream SDK および TensorRT を使用した NVIDIA Jetson 上の Ultralytics YOLO11



見る: Jetson Orin NXでNVIDIA DeepstreamとUltralytics YOLO11モデルを使用する方法 🚀

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

NVIDIA Jetson上のDeepStream

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

NVIDIA DeepStreamとは何ですか?

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

前提条件

このガイドに従う前に:

ヒント

このガイドでは、JetsonデバイスにDeepStream SDKをインストールするDebianパッケージメソッドを使用しました。Jetson上のDeepStream SDK(アーカイブ)にアクセスして、DeepStreamのレガシーバージョンにアクセスすることもできます。

YOLO11 のための DeepStream 構成

ここでは、marcoslucianops/DeepStream-Yolo GitHubリポジトリを使用しています。これには、YOLOモデル用のNVIDIA DeepStream SDKのサポートが含まれています。貢献してくれた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_yolo11.py ファイルは以下から。 DeepStream-Yolo/utils ディレクトリを ultralytics フォルダー

    cp ~/DeepStream-Yolo/utils/export_yolo11.py ~/ultralytics
    cd ultralytics
    
  4. YOLO11 releasesから、お好みのUltralytics YOLO11検出モデル(.pt)をダウンロードしてください。ここでは、yolo11s.ptを使用します。

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

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

  5. モデルをONNXに変換

    python3 export_yolo11.py -w yolo11s.pt
    

    上記のコマンドに以下の引数を渡してください

    DeepStream 5.1の場合は、以下を削除してください。 --dynamic arg と use 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
    
  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_yolo11.txt ファイル(80クラスのYOLO11sの場合)

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

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yolo11.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エンジンファイルの生成に時間がかかります。しばらくお待ちください。

deepstreamでのYOLO11

ヒント

モデルをFP16精度に変換する場合は、単に以下を設定してください。 model-engine-file=model_b1_gpu0_fp16.engine および network-mode=2 内部 config_infer_primary_yolo11.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とします。このプロセスには時間がかかる場合があります。

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

マルチストリーム設定



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

単一のdeepstreamアプリケーションで複数のストリームを設定するには、以下のように変更できます。 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の入力サイズでYOLO11モデルが異なるTensorRT精度レベルでどのように動作するかをまとめたものです。

比較チャート

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のLakshanthaとElaineによって作成されました。

よくある質問

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

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

NVIDIA JetsonでYOLO11とTensorRTを使用する利点は何ですか?

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

さまざまなNVIDIA JetsonハードウェアでDeepStream SDKを使用してUltralytics YOLO11を実行できますか?

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

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

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

コマンドの例を以下に示します。

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

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

NVIDIA Jetson Orin NXにおけるYOLOのパフォーマンスベンチマークは何ですか?

NVIDIA Jetson Orin NX 16GBでのYOLO11モデルのパフォーマンスは、TensorRTの精度レベルによって異なります。たとえば、YOLO11sモデルは以下を達成します。

  • 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 最適化された YOLO11 モデルを使用することの効率と能力を強調しています。詳細については、Benchmark Results セクションをご覧ください。



📅 1年前に作成 ✏️ 2か月前に更新

コメント