Deepstream-Yolo
NVIDIA Deepstream SDK 7.1 / 7.0 / 6.4 / 6.3 / 6.2 / 6.1.1 / 6.1 / 6.0.1 / 6.0 / 5.1ヨーロモデルの構成
とりあえず、私はいくつかの更新のために制限されています。理解していただきありがとうございます。
Yolo-Pose:https://github.com/marcoslucianops/deepstream-yolo-pose
Yolo-seg:https://github.com/marcoslucianops/deepstream-yolo-seg
Yolo-Face:https://github.com/marcoslucianops/deepstream-yolo-face
重要:新しいエクスポートファイルを使用してONNXモデルをエクスポートし、更新されたファイルでTensorrtエンジンを再び生成し、モデルに従って新しいconfig_infer_primaryファイルを使用してください
このリポジトリの改善
- INT8キャリブレーションのサポート
- 非正方形モデルのサポート
- モデルベンチマーク
- CFGを使用したDarkNetモデル(Yolov4など)のサポートとGPUポストプロセッシングとの重量変換
- RT-DERT、CO-DERT(MMDETECTION)、YOLO-NAS、PPYOLOE+、PPYOLOE、DAMO-YOLO、GOLD-YOLO、RTMDET(Mmyolo、Yolor、Yolov9、Yolov8、Yolov7、Yolov6およびYolov5のサポート
- GPU BBOXパーサー
- カスタムonnxモデルパーサー
- 動的バッチサイズ
- DarkNetおよびONNXエクスポートモデルのINT8キャリブレーション(PTQ)
はじめる
- 要件
- サポートされているモデル
- ベンチマーク
- DGPUのインストール
- 基本的な使用法
- Dockerの使用
- NMS構成
- メモ
- INT8キャリブレーション
- Yolov5の使用
- Yolov6の使用
- Yolov7の使用
- Yolov8の使用
- Yolov9の使用
- ヨラーの使用
- Yoloxの使用
- rtmdet(mmyolo)使用法
- ゴールドヨーロの使用
- ダモヨーロの使用
- pp-yoloe / pp-yoloe+使用法
- Yolo-nasの使用
- Co-Detr(MMDETECTION)使用法
- rt-detr pytorchの使用
- rt-detrパドルの使用
- RT-DERT Ultralyticsの使用
- カスタムモデルを使用します
- 複数のヨーロギー
要件
x86プラットフォーム上のディープストリーム7.1
- Ubuntu 22.04
- CUDA 12.6アップデート2
- Tensorrt 10.3 GA(10.3.0.26)
- NVIDIAドライバー535.183.06(データセンター /テスラシリーズ) / 560.35.03(Titan、GeForce RTX / GTXシリーズおよびRTX / Quadroシリーズ)
- Nvidia Deepstream SDK 7.1
- GStreamer 1.20.3
- Deepstream-Yolo
x86プラットフォーム上のディープストリーム7.0
- Ubuntu 22.04
- CUDA 12.2アップデート2
- TENSORRT 8.6 GA(8.6.1.6)
- nvidiaドライバー535(> = 535.161.08)
- Nvidia Deepstream SDK 7.0
- GStreamer 1.20.3
- Deepstream-Yolo
x86プラットフォーム上のディープストリーム6.4
- Ubuntu 22.04
- CUDA 12.2アップデート2
- TENSORRT 8.6 GA(8.6.1.6)
- nvidiaドライバー535(> = 535.104.12)
- Nvidia Deepstream SDK 6.4
- GStreamer 1.20.3
- Deepstream-Yolo
x86プラットフォーム上のディープストリーム6.3
- Ubuntu 20.04
- CUDA 12.1アップデート1
- Tensorrt 8.5 GAアップデート2(8.5.3.1)
- nvidiaドライバー525(> = 525.125.06)
- Nvidia Deepstream SDK 6.3
- GSTREAMER 1.16.3
- Deepstream-Yolo
x86プラットフォーム上のディープストリーム6.2
- Ubuntu 20.04
- CUDA 11.8
- Tensorrt 8.5 Gaアップデート1(8.5.2.2)
- nvidiaドライバー525(> = 525.85.12)
- Nvidia Deepstream SDK 6.2
- GSTREAMER 1.16.3
- Deepstream-Yolo
x86プラットフォーム上のディープストリーム6.1.1
- Ubuntu 20.04
- CUDA 11.7アップデート1
- Tensorrt 8.4 Ga(8.4.1.5)
- Nvidiaドライバー515.65.01
- Nvidia Deepstream SDK 6.1.1
- GStreamer 1.16.2
- Deepstream-Yolo
x86プラットフォーム上のディープストリーム6.1
- Ubuntu 20.04
- CUDA 11.6アップデート1
- Tensorrt 8.2 Gaアップデート4(8.2.5.1)
- Nvidiaドライバー510.47.03
- Nvidia Deepstream SDK 6.1
- GStreamer 1.16.2
- Deepstream-Yolo
x86プラットフォーム上のディープストリーム6.0.1 / 6.0
- Ubuntu 18.04
- CUDA 11.4アップデート1
- Tensorrt 8.0 Ga(8.0.1)
- Nvidiaドライバー470.63.01
- Nvidia Deepstream SDK 6.0.1 / 6.0
- GStreamer 1.14.5
- Deepstream-Yolo
x86プラットフォームのディープストリーム5.1
- Ubuntu 18.04
- CUDA 11.1
- Tensorrt 7.2.2
- Nvidiaドライバー460.32.03
- Nvidia Deepstream SDK 5.1
- GStreamer 1.14.5
- Deepstream-Yolo
Jetsonプラットフォーム上のDeepstream 7.1
- Jetpack 6.1
- Nvidia Deepstream SDK 7.1
- Deepstream-Yolo
JetsonプラットフォームのDeepstream 7.0
- Jetpack 6.0
- Nvidia Deepstream SDK 7.0
- Deepstream-Yolo
JetsonプラットフォームのDeepstream 6.4
- Jetpack 6.0 dp
- Nvidia Deepstream SDK 6.4
- Deepstream-Yolo
Jetsonプラットフォーム上のDeepstream 6.3
- Jetpack 5.1.3 / 5.1.2
- Nvidia Deepstream SDK 6.3
- Deepstream-Yolo
JetsonプラットフォームのDeepstream 6.2
- JetPack 5.1.3 / 5.1.2 / 5.1.1 / 5.1
- Nvidia Deepstream SDK 6.2
- Deepstream-Yolo
Jetsonプラットフォーム上のDeepstream 6.1.1
- Jetpack 5.0.2
- Nvidia Deepstream SDK 6.1.1
- Deepstream-Yolo
Jetsonプラットフォーム上のDeepstream 6.1
- Jetpack 5.0.1 dp
- Nvidia Deepstream SDK 6.1
- Deepstream-Yolo
Jetsonプラットフォーム上のDeepstream 6.0.1 / 6.0
- ジェットパック4.6.4
- Nvidia Deepstream SDK 6.0.1 / 6.0
- Deepstream-Yolo
Jetsonプラットフォーム上のDeepstream 5.1
- Jetpack 4.5.1
- Nvidia Deepstream SDK 5.1
- Deepstream-Yolo
サポートされているモデル
- darknet
- Mobilenet-Yolo
- ヨーロファースト
- Yolov5
- Yolov6
- Yolov7
- Yolov8
- Yolov9
- ヨラー
- ヨロックス
- rtmdet(mmyolo)
- ゴールドヨーロ
- ダモヨーロ
- pp-yoloe / pp-yoloe+
- ヨロナス
- Co-Detr(mmdeTection)
- rt-detr
基本的な使用法
1.レポをダウンロードします
git clone https://github.com/marcoslucianops/DeepStream-Yolo.git
cd DeepStream-Yolo
2。Darknet RepoからDeepstream-Yoloフォルダーにcfgおよびweightsファイルをダウンロードします
3。Libをコンパイルします
3.1。 deepstreamバージョンに従ってCUDA_VERを設定します
x86プラットフォーム
DeepStream 7.1 = 12.6
DeepStream 7.0 / 6.4 = 12.2
DeepStream 6.3 = 12.1
DeepStream 6.2 = 11.8
DeepStream 6.1.1 = 11.7
DeepStream 6.1 = 11.6
DeepStream 6.0.1 / 6.0 = 11.4
DeepStream 5.1 = 11.1
ジェットソンプラットフォーム
DeepStream 7.1 = 12.6
DeepStream 7.0 / 6.4 = 12.2
DeepStream 6.3 / 6.2 / 6.1.1 / 6.1 = 11.4
DeepStream 6.0.1 / 6.0 / 5.1 = 10.2
3.2。 libを作ります
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
4。モデルに従ってconfig_infer_primary.txtファイルを編集します(yolov4の例)
[property]
...
custom-network-config=yolov4.cfg
model-file=yolov4.weights
...
注: DarkNetモデルの場合、デフォルトでは、動的バッチサイズが設定されています。静的バッチサイズを使用するには、ラインを除外します
...
force-implicit-batch-dim=1
...
5。実行します
deepstream-app -c deepstream_app_config.txt
注:Tensortertエンジンファイルは、生成に非常に長い時間がかかる場合があります(時には10分以上)。
注:Yolov2またはYolov2-Tinyモデルを使用する場合は、実行する前にdeepstream_app_config.txtファイルを変更します
...
[primary-gie]
...
config-file=config_infer_primary_yoloV2.txt
...
Dockerの使用
x86プラットフォーム
nvcr.io/nvidia/deepstream:7.1-gc-triton-devel
nvcr.io/nvidia/deepstream:7.1-triton-multiarch
ジェットソンプラットフォーム
nvcr.io/nvidia/deepstream:7.1-triton-multiarch
注: nvdsinfer_custom_impl_Yoloをコンパイルするには、コンテナ内にg ++をインストールする必要があります
apt-get install build-essential
注:Deepstream 7.1を使用すると、Dockerコンテナは、オーディオデータの解析、CPUデコード、CPUエンコードなどの特定のマルチメディア操作に必要なライブラリをパッケージ化しません。この変更は、オーディオトラックを含むMP4のような特定のビデオストリーム/ファイルの処理に影響を与える可能性があります。 Docker画像内の以下のスクリプトを実行して、すべてのDeepStreamSDK機能を使用するために必要な追加のパッケージをインストールしてください。
/opt/nvidia/deepstream/deepstream/user_additional_install.sh
NMS構成
nms-iou-threshold 、 pre-cluster-threshold 、およびtopk値を変更するには、config_inferファイルを変更します
[class-attrs-all]
nms-iou-threshold=0.45
pre-cluster-threshold=0.25
topk=300
注:config_inferファイルでcluster-mode=2必ず設定してください。
メモ
GSTREAMERパイプラインまたはサンプルアプリを実行しているときに、ユーザーはエラーに遭遇する可能性があります。Glib GLib (gthread-posix.c): Unexpected error from C library during 'pthread_setspecific': Invalid argument. Aborting. 。この問題は、デフォルトでUbuntu 22.04に付属のglib 2.0-2.72バージョンのバグが原因で発生します。この問題はglib 2.76で対処されており、そのインストールは問題を修正するために必要です(https://github.com/gnome/glib/tree/2.76.6)。
RTSPストリームを使用すると、アプリケーションがEOSに到達することで立ち往生する場合があります。これは、rtpjitterbufferコンポーネントの問題が原因です。この問題を修正するために、gstrtpmanagerライブラリを更新するために必要な詳細が記載されています。
/opt/nvidia/deepstream/deepstream/update_rtpmanager.sh
メタデータを抽出します
PythonとC/C ++を使用して、Deepstreamからメタデータを取得できます。 C/C ++の場合、 deepstream-appまたはdeepstream-testコードを編集できます。 Pythonの場合、deepstream_python_appsをインストールして編集できます。
基本的に、BBOXのラベル、位置などを取得するには、 NvDsObjectMeta (Python / C / C ++) and NvDsFrameMeta (Python / C / C ++)を操作する必要があります。
私のプロジェクト:https://www.youtube.com/marcoslucianotv