Ultralytics YOLOv8 NVIDIA Jetson で DeepStream SDK を使用し、 TensorRT
この包括的なガイドでは、DeepStream SDKとTensorRT を使用してNVIDIA Jetsonデバイス上でUltralytics YOLOv8 を展開するための詳細なウォークスルーを提供します。ここでは、Jetsonプラットフォーム上で推論パフォーマンスを最大化するためにTensorRT を使用します。
注
このガイドは、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アプリケーションとサービスをより迅速かつ容易に開発できます。
前提条件
このガイドに従う前に、次のことを行ってください。
- クイックスタートガイドをご覧ください:NVIDIA Jetson withUltralytics YOLOv8 をご覧ください。 Ultralytics YOLOv8
-
JetPack のバージョンに従ってDeepStream SDKをインストールします。
- JetPack 4.6.4の場合は、DeepStream 6.0.1をインストールします。
- JetPack 5.1.3の場合は、DeepStream 6.3をインストールします。
チップ
このガイドでは、DeepStream SDKをJetsonデバイスにインストールする方法として、Debianパッケージを使用しています。レガシーバージョンのDeepStreamにアクセスするには、DeepStream SDK on Jetson (Archived)を参照してください。
DeepStream の設定 YOLOv8
ここでは、YOLO モデルの NVIDIA DeepStream SDK サポートを含むmarcoslucianops/DeepStream-YoloGitHub リポジトリを使用しています。marcoslucianops氏の貢献に感謝する!
-
依存関係をインストールする
-
次のリポジトリをクローンします
-
Ultralytics YOLOv8 検出モデル (.pt) をYOLOv8 リリースからお好きなものをダウンロードしてください。ここではyolov8s.pt を使用します。
注
また、カスタムで訓練されたYOLOv8 モデルを使用することもできる。
-
モデルを ONNX
上記のコマンドに以下の引数を渡します
DeepStream 6.0.1 の場合は、opset 12 以下を使用します。デフォルトの opset は 16 です。
推論サイズを変更するには (既定値: 640)
1280 の例:
簡略化するには、 ONNX モデル (DeepStream >= 6.0)
動的バッチサイズ(DeepStream >= 6.1)を使用するには
静的なバッチ サイズを使用するには (batch-size = 4 の例)
-
インストールされているJetPackのバージョンに合わせてCUDAのバージョンを設定します
JetPack 4.6.4 の場合:
JetPack 5.1.3 の場合:
-
ライブラリをコンパイルする
-
編集
config_infer_primary_yoloV8.txt
モデルに応じたファイル( YOLOv8s 80クラス) -
編集
deepstream_app_config
ファイル -
ビデオソースを変更することもできます
deepstream_app_config
ファイル。ここでは、デフォルトのビデオファイルが読み込まれます
推論の実行
注
生成には長い時間がかかります TensorRT エンジンファイルを作成します。だからしばらくお待ちください。
チップ
モデルをFP16の精度に変換する場合は、 model-engine-file=model_b1_gpu0_fp16.engine
そして network-mode=2
中に config_infer_primary_yoloV8.txt
INT8キャリブレーション
INT8精度を推論に使用したい場合は、以下の手順を踏む必要がある。
-
セット
OPENCV
環境変数 -
ライブラリをコンパイルする
-
COCOデータセットについては バル2017に移動する。
DeepStream-Yolo
フォルダ -
キャリブレーション画像用の新しいディレクトリを作成します
-
次のコマンドを実行して、COCOデータセットから1000枚のランダムな画像を選択してキャリブレーションを実行します
注
NVIDIAは、良い精度を得るために少なくとも500枚の画像を推奨しています。この例では、より高い精度を得るために1000枚の画像が選ばれている(より多くの画像=より高い精度)。頭-1000から設定できます。例えば、2000枚の画像の場合、頭-2000とします。この処理には時間がかかります。
-
を作成します。
calibration.txt
選択したすべての画像を含むファイル -
環境変数の設定
注
INT8_CALIB_BATCH_SIZE値が高いほど、精度が高くなり、キャリブレーション速度が速くなります。GPUメモリに合わせて設定してください。
-
更新します。
config_infer_primary_yoloV8.txt
ファイルより
へ
推論の実行
マルチストリームのセットアップ
1 つのディープストリーム アプリケーションで複数のストリームを設定するには、 deepstream_app_config.txt
ファイル
-
行と列を変更して、必要なストリームの数に応じてグリッド表示を作成します。たとえば、4 つのストリームの場合、2 行と 2 列を追加できます。
-
セット
num-sources=4
そして、uri
全4ストリームの
推論の実行
ベンチマークの結果
次の表は、その方法をまとめたものです。 YOLOv8s モデルは異なる TensorRT NVIDIA Jetson Orin NX 640GBの入力サイズ640x16の精度レベル。
モデル名 | 精密 | 推論時間(ms/im) | FPS |
---|---|---|---|
YOLOv8s | FP32 | 15.63 | 64 |
FP16 | 7.94 | 126 | |
INT8 | 5.53 | 181 |
確認
このガイドは当初、Seeed Studio、Lakshantha、Elaineの友人によって作成されました。