コンテンツへスキップ

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

このガイドは、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(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. 依存関係をインストールする

    pip install cmake
    pip install onnxsim
    
  2. 以下のリポジトリをクローンする

    git clone https://github.com/marcoslucianops/DeepStream-Yolo
    cd DeepStream-Yolo
    
  3. Ultralytics YOLO11 検出モデル (.pt) をYOLO11 リリースからお好きなものをダウンロードしてください。ここではyolov8s.pt を使用します。

    wget https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8s.pt
    

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

  4. モデルをONNX

    python3 utils/export_yoloV8.py -w yolov8s.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
    
  5. インストールされているJetPackのバージョンに応じてCUDA 。

    JetPack 4.6.4用:

    export CUDA_VER=10.2
    

    JetPack 5.1.3用:

    export CUDA_VER=11.4
    
  6. ライブラリをコンパイルする

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
    
  7. を編集する config_infer_primary_yoloV8.txt ファイルを作成します (80クラスを持つYOLOv8s の場合)。

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

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yoloV8.txt
    
  9. でビデオソースを変更することもできます。 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精度を推論に使用したい場合は、以下の手順を踏む必要がある。

  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_video>
    uri=<path_to_video>
    uri=<path_to_video>
    uri=<path_to_video>
    num-sources=4
    

推論を実行する

deepstream-app -c deepstream_app_config.txt
マルチストリームのセットアップ

ベンチマーク結果

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

モデル名 精密 推論時間(ms/im) FPS
YOLOv8s FP32 15.63 64
FP16 7.94 126
INT8 5.53 181

謝辞

このガイドは当初、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 yolov8s.pt --opset 12 --simplify

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

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

NVIDIA Jetson Orin NX 16GB上のYOLO11 モデルの性能は、TensorRT 精度レベルによって異なります。たとえば、YOLOv8s モデルでは、次のようになります:

  • FP32精度:15.63ms/im、64FPS
  • FP16精度:7.94ms/im、126 FPS
  • INT8精度:5.53ms/im、181FPS

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

📅作成:5ヶ月前 ✏️更新しました 2ヶ月前

コメント