コンテンツへスキップ

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

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は、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. Install Ultralytics with necessary dependencies

    cd ~
    pip install -U pip
    git clone https://github.com/ultralytics/ultralytics
    cd ultralytics
    pip install -e ".[export]" onnxslim
    
  2. Clone the DeepStream-Yolo repository

    cd ~
    git clone https://github.com/marcoslucianops/DeepStream-Yolo
    
  3. Copy the export_yoloV8.py file from DeepStream-Yolo/utils directory to the ultralytics フォルダ

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

    export_yoloV8.py works for both YOLOv8 and YOLO11 models.

  4. Download Ultralytics YOLO11 detection model (.pt) of your choice from YOLO11 releases. Here we use 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. Copy the generated .onnx model file and labels.txt file to the 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
    

    For 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 file according to your model (for YOLO11s with 80 classes)

    [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 ディープストリーム

チップ

If you want to convert the model to FP16 precision, simply set model-engine-file=model_b1_gpu0_fp16.engine そして network-mode=2 内部 config_infer_primary_yoloV8.txt

INT8キャリブレーション

INT8精度を推論に使用したい場合は、以下の手順を踏む必要がある。

Currently INT8 does not work with TensorRT 10.x. This section of the guide has been tested with TensorRT 8.x which is expected to work.

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

ベンチマーク結果

The following benchmarks summarizes how YOLO11 models perform at different TensorRT precision levels with an input size of 640x640 on NVIDIA Jetson Orin NX 16GB.

比較表

Jetson DeepStream Benchmarks Chart

詳細比較表

パフォーマンス

フォーマット ステータス 推論時間(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 のパフォーマンス・ベンチマークは?

The performance of YOLO11 models on NVIDIA Jetson Orin NX 16GB varies based on TensorRT precision levels. For example, YOLO11s models achieve:

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

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

📅作成:6ヶ月前 ✏️更新 3日前

コメント