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 Konfiguration für YOLO -Modelle
Im Moment bin ich für einige Updates begrenzt. Vielen Dank für das Verständnis.
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
Wichtig: Bitte exportieren Sie das ONNX -Modell mit der neuen Exportdatei, generieren Sie die Tensorrt -Engine erneut mit den aktualisierten Dateien und verwenden Sie die neue Datei config_infer_primary nach Ihrem Modell
Verbesserungen zu diesem Repository
- Unterstützung für die INT8 -Kalibrierung
- Unterstützung für nicht quadratische Modelle
- Models Benchmarks
- Unterstützung für DarkNET-Modelle (Yolov4 usw.) unter Verwendung von CFG- und Gewichtsumwandlung mit GPU-Nachbearbeitung
- Unterstützung für RT-DETRT, Co-DETRT (mmdetektion), yolo-nas, ppyoloe+, ppyoloe, damo-yolo, gold-yolo, rtmdet (mmyolo), yolox, yolor, yolov9, yolov8, yolov7, yolov6 und yolov5 mit Onnx-Conversion mit GPU mit GPU mit GPU-Reversion mit GPU-Reversion mit GPU-Reversion mit GPU-Posting mit Yolov5 und Yolov5 und YOLOV5-Konvert.
- GPU BBox -Parser
- Benutzerdefinierte Onnx -Modellparser
- Dynamische Chargengröße
- INT8 -Kalibrierung (PTQ) für exportierte Modelle von DarkNet und ONNX
Erste Schritte
- Anforderungen
- Unterstützte Modelle
- Benchmarks
- DGPU -Installation
- Grundnutzung
- Docker -Nutzung
- NMS -Konfiguration
- Notizen
- INT8 -Kalibrierung
- Yolov5 Verwendung
- Yolov6 Verwendung
- Yolov7 Verwendung
- Yolov8 Verwendung
- Yolov9 Verwendung
- Yolor -Nutzung
- Yolox -Verwendung
- RTMDET (MMYOLO) Nutzung
- Gold-Yolo-Verwendung
- Damo-Yolo-Verwendung
- Pp-yoloe / pp-Yoloe+ Verwendung
- Yolo-Nas Nutzung
- CO-DETRT (MMDETECTICE)
- RT-Detr Pytorch-Verwendung
- RT-DETRT-Paddelverbrauch
- RT-DETRT URMERTICS-Nutzung
- Verwenden Sie Ihr benutzerdefiniertes Modell
- Mehrere Yolo -Gies
Anforderungen
Deepstream 7.1 auf der X86 -Plattform
- Ubuntu 22.04
- CUDA 12.6 Update 2
- Tensorrt 10.3 Ga (10.3.0.26)
- NVIDIA -Treiber 535.183.06 (Rechenzentrum / Tesla -Serie) / 560.35.03 (Titan, Geforce RTX / GTX -Serie und RTX / Quadro -Serie)
- Nvidia Deepstream SDK 7.1
- Gstreamer 1.20.3
- Deepstream-Yolo
Deepstream 7.0 auf der X86 -Plattform
- Ubuntu 22.04
- CUDA 12.2 Update 2
- Tensorrt 8.6 Ga (8.6.1.6)
- NVIDIA -Treiber 535 (> = 535,161.08)
- Nvidia Deepstream SDK 7.0
- Gstreamer 1.20.3
- Deepstream-Yolo
Deepstream 6.4 auf der X86 -Plattform
- Ubuntu 22.04
- CUDA 12.2 Update 2
- Tensorrt 8.6 Ga (8.6.1.6)
- NVIDIA -Treiber 535 (> = 535.104.12)
- Nvidia Deepstream SDK 6.4
- Gstreamer 1.20.3
- Deepstream-Yolo
Deepstream 6.3 auf der X86 -Plattform
- Ubuntu 20.04
- CUDA 12.1 Update 1
- Tensorrt 8.5 Ga Update 2 (8.5.3.1)
- NVIDIA -Treiber 525 (> = 525.125.06)
- Nvidia Deepstream SDK 6.3
- Gstreamer 1.16.3
- Deepstream-Yolo
Deepstream 6.2 auf der X86 -Plattform
- Ubuntu 20.04
- CUDA 11.8
- Tensorrt 8.5 Ga Update 1 (8.5.2.2)
- NVIDIA -Treiber 525 (> = 525,85.12)
- Nvidia Deepstream SDK 6.2
- Gstreamer 1.16.3
- Deepstream-Yolo
Deepstream 6.1.1 auf der X86 -Plattform
- Ubuntu 20.04
- CUDA 11.7 Update 1
- Tensorrt 8.4 Ga (8.4.1.5)
- NVIDIA DRIVER 515.65.01
- Nvidia Deepstream SDK 6.1.1
- Gstreamer 1.16.2
- Deepstream-Yolo
Deepstream 6.1 auf der X86 -Plattform
- Ubuntu 20.04
- CUDA 11.6 UPDATE 1
- Tensorrt 8.2 Ga Update 4 (8.2.5.1)
- NVIDIA -Treiber 510.47.03
- Nvidia Deepstream SDK 6.1
- Gstreamer 1.16.2
- Deepstream-Yolo
Deepstream 6.0.1 / 6.0 auf der X86 -Plattform
- Ubuntu 18.04
- CUDA 11.4 Update 1
- Tensorrt 8.0 Ga (8.0.1)
- NVIDIA DRANDER 470.63.01
- Nvidia Deepstream SDK 6.0.1 / 6.0
- Gstreamer 1.14.5
- Deepstream-Yolo
Deepstream 5.1 auf der X86 -Plattform
- Ubuntu 18.04
- CUDA 11.1
- Tensorrt 7.2.2
- NVIDIA -Treiber 460.32.03
- Nvidia Deepstream SDK 5.1
- Gstreamer 1.14.5
- Deepstream-Yolo
Deepstream 7.1 auf der Jetson -Plattform
- Jetpack 6.1
- Nvidia Deepstream SDK 7.1
- Deepstream-Yolo
Deepstream 7.0 auf der Jetson -Plattform
- Jetpack 6.0
- Nvidia Deepstream SDK 7.0
- Deepstream-Yolo
Deepstream 6.4 auf der Jetson -Plattform
- Jetpack 6.0 dp
- Nvidia Deepstream SDK 6.4
- Deepstream-Yolo
Deepstream 6.3 auf der Jetson -Plattform
- Jetpack 5.1.3 / 5.1.2
- Nvidia Deepstream SDK 6.3
- Deepstream-Yolo
Deepstream 6.2 auf der Jetson -Plattform
- Jetpack 5.1.3 / 5.1.2 / 5.1.1 / 5.1
- Nvidia Deepstream SDK 6.2
- Deepstream-Yolo
Deepstream 6.1.1 auf der Jetson -Plattform
- Jetpack 5.0.2
- Nvidia Deepstream SDK 6.1.1
- Deepstream-Yolo
Deepstream 6.1 auf der Jetson -Plattform
- Jetpack 5.0.1 dp
- Nvidia Deepstream SDK 6.1
- Deepstream-Yolo
Deepstream 6.0.1 / 6.0 auf der Jetson -Plattform
- Jetpack 4.6.4
- Nvidia Deepstream SDK 6.0.1 / 6.0
- Deepstream-Yolo
Deepstream 5.1 auf der Jetson -Plattform
- Jetpack 4.5.1
- Nvidia Deepstream SDK 5.1
- Deepstream-Yolo
Unterstützte Modelle
- Darknet
- Mobilenet-Yolo
- Yolo-fastest
- Yolov5
- Yolov6
- Yolov7
- Yolov8
- Yolov9
- Yolor
- Yolox
- RTMDET (MMYOLO)
- Gold-Yolo
- Damo-yolo
- Pp-yoloe / pp-yoloe+
- Yolo-nas
- Co-DETR (mmdetektion)
- RT-Detr
Grundnutzung
1. Laden Sie das Repo herunter
git clone https://github.com/marcoslucianops/DeepStream-Yolo.git
cd DeepStream-Yolo
2. Laden Sie die cfg und weights von DarkNet Repo zum Deepstream-Yolo-Ordner herunter
3. Compile the Lib Compile
3.1. Stellen Sie den CUDA_VER gemäß Ihrer Deepstream -Version ein
x86 Plattform
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
Jetson -Plattform
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. Mach die lib
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
4. Bearbeiten Sie die Datei config_infer_primary.txt gemäß Ihrem Modell (Beispiel für yolov4)
[property]
...
custom-network-config=yolov4.cfg
model-file=yolov4.weights
...
Hinweis : Für DarkNet -Modelle wird standardmäßig die dynamische Stapelgröße festgelegt. Um statische Chargengröße zu verwenden, wenden Sie sich an die Linie
...
force-implicit-batch-dim=1
...
5. Lauf
deepstream-app -c deepstream_app_config.txt
Hinweis : Die Tensorrt -Engine -Datei kann sehr lange dauern (manchmal mehr als 10 Minuten).
Hinweis : Wenn Sie YOLOV2- oder YOLOV2-TINY-Modelle verwenden möchten, ändern Sie die Datei deepstream_app_config.txt bevor Sie sie ausführen
...
[primary-gie]
...
config-file=config_infer_primary_yoloV2.txt
...
Docker -Nutzung
x86 Plattform
nvcr.io/nvidia/deepstream:7.1-gc-triton-devel
nvcr.io/nvidia/deepstream:7.1-triton-multiarch
Jetson -Plattform
nvcr.io/nvidia/deepstream:7.1-triton-multiarch
Hinweis : Um das nvdsinfer_custom_impl_Yolo zu kompilieren, müssen Sie das G ++ im Container installieren
apt-get install build-essential
Hinweis : Mit Deepstream 7.1 verpacken die Docker -Container keine Bibliotheken, die für bestimmte Multimedia -Operationen wie die Analyse von Audiodaten, die CPU -Decodierung und die CPU -Encode erforderlich sind. Diese Änderung könnte sich auf die Verarbeitung bestimmter Video -Streams/-dateien wie MP4 auswirken, die Audio -Track enthalten. Führen Sie das folgende Skript in den Docker -Bildern aus, um zusätzliche Pakete zu installieren, die möglicherweise für alle DeepStreamsDK -Funktionen erforderlich sind:
/opt/nvidia/deepstream/deepstream/user_additional_install.sh
NMS -Konfiguration
So ändern Sie die nms-iou-threshold , pre-cluster-threshold und topk Werte, die Datei config_infer-Datei ändern
[class-attrs-all]
nms-iou-threshold=0.45
pre-cluster-threshold=0.25
topk=300
HINWEIS : Stellen Sie sicher, dass cluster-mode=2 in der Datei config_infer festgelegt wird.
Notizen
Manchmal kann der Benutzer beim Ausführen von Gstreamer-Pipeline oder Beispiel-Apps auf Fehler auftreten: GLib (gthread-posix.c): Unexpected error from C library during 'pthread_setspecific': Invalid argument. Aborting. . Das Problem wird durch einen Fehler in glib 2.0-2.72 Version verursacht, die standardmäßig mit Ubuntu 22.04 ausgestattet ist. Das Problem wird in glib 2.76 behandelt und seine Installation ist erforderlich, um das Problem zu beheben (https://github.com/gnome/glib/tree/2.76.6).
Migrieren Sie glib in eine neuere Version
pip3 install meson
pip3 install ninja
Hinweis : Es wird empfohlen, Python Virtualenv zu verwenden.
git clone https://github.com/GNOME/glib.git
cd glib
git checkout 2.76.6
meson build --prefix=/usr
ninja -C build/
cd build/
ninja install
Überprüfen und bestätigen Sie die neu installierte GLIB -Version:
pkg-config --modversion glib-2.0
Manchmal steckt die Anwendung bei RTSP -Streams beim Erreichen von EOs fest. Dies liegt an einem Problem in der RTPJitterBuffer -Komponente. Um dieses Problem zu beheben, wurde ein Skript mit den erforderlichen Details zur Aktualisierung der GSTRTPMANAGER -Bibliothek zur Verfügung gestellt.
/opt/nvidia/deepstream/deepstream/update_rtpmanager.sh
Metadaten extrahieren
Mit Python und C/C ++ können Sie Metadaten aus Deepstream erhalten. Für C/C ++ können Sie die deepstream-app oder deepstream-test Testcodes bearbeiten. Für Python können Sie Deepstream_Python_Apps installieren und bearbeiten.
Grundsätzlich müssen Sie die NvDsObjectMeta (Python / C / C ++) and NvDsFrameMeta (Python / C / C ++) manipulieren, um das Etikett, die Position usw. von Bboxen zu erhalten.
Meine Projekte: https://www.youtube.com/Marcoslucianotv