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 Configuration pour les modèles YOLO
Pour l'instant, je suis limité pour certaines mises à jour. Merci de votre compréhension.
YOLO-POSE: https://github.com/marcoslucianops/deepstream-yolo-pe
Yolo-seg: https://github.com/marcoslucianops/deepstream-yolo-seg
Yolo-face: https://github.com/marcoslucianops/deepstream-yolo-face
Important: veuillez exporter le modèle ONNX avec le nouveau fichier d'exportation, générer à nouveau le moteur Tensorrt avec les fichiers mis à jour et utiliser le nouveau fichier config_infer_primary selon votre modèle
Améliorations de ce référentiel
- Prise en charge de l'étalonnage INT8
- Prise en charge des modèles non carrés
- Modèles Benchmarks
- Prise en charge des modèles DarkNet (yolov4, etc.) en utilisant CFG et la conversion de poids avec le post-traitement du GPU
- Prise en charge de RT-Dett, Co-Dett (MMDection), Yolo-Nas, Ppyoloe +, Ppyoloe, Damo-Yolo, Gold-Yolo, RTMDET (MMYOLO), YOLOX, YOLOR, YOLOV9, YOLOV8, YOLOV7, YOLOV6 et YOLOV5 en utilisant la conversion OnNX avec GPU post-activité post-activant GPU post-activité post-activant GPU post-activité post-activité GPU post-activité après l'organisation post-activant GPU post-activité post-activité GPU post-activité post-activant GPU post-activité post-activant GPU post-activité après l'organisation post-activant GPU post-activité post-ex-ex-professionnel post-activité GPU post-ex-ex-exterissant GPU post-ex-ex-exterissant GPU post-activité.
- Animal d'analyse BBOX GPU
- Parser du modèle ONNX personnalisé
- Taille de lot dynamique
- Calibration INT8 (PTQ) pour les modèles exportés DarkNet et ONNX
Commencer
- Exigences
- Modèles pris en charge
- Repères
- Installation de DGPU
- Utilisation de base
- Utilisation de Docker
- Configuration NMS
- Notes
- Étalonnage INT8
- Utilisation de Yolov5
- Utilisation de Yolov6
- Utilisation de Yolov7
- Utilisation de Yolov8
- Utilisation de Yolov9
- Utilisation de Yolor
- Utilisation de Yolox
- Utilisation de RTMDET (MMYOLO)
- Utilisation d'or-yolo
- Utilisation de Damo-yolo
- Pp-yoloe / pp-yoloe + usage
- Utilisation de yolo-nas
- Utilisation de co-détecter (MMDETECTION)
- Utilisation du pytorch RT-Dett
- Utilisation de la palette RT-Dett
- Utilisation ultralytique RT-Dett
- En utilisant votre modèle personnalisé
- Plusieurs yolo gies
Exigences
Deepstream 7.1 sur la plate-forme x86
- Ubuntu 22.04
- CUDA 12.6 MISE À JOUR 2
- Tensorrt 10.3 GA (10.3.0.26)
- Nvidia Driver 535.183.06 (Data Center / Tesla Series) / 560.35.03 (Titan, série GeForce RTX / GTX et série RTX / Quadro)
- Nvidia Deepstream SDK 7.1
- Gstreamer 1.20.3
- Deepstream-yolo
Deepstream 7.0 sur la plate-forme x86
- Ubuntu 22.04
- CUDA 12.2 MISE À JOUR 2
- Tensorrt 8.6 GA (8.6.1.6)
- Nvidia Driver 535 (> = 535.161.08)
- Nvidia Deepstream SDK 7.0
- Gstreamer 1.20.3
- Deepstream-yolo
Deepstream 6.4 sur la plate-forme x86
- Ubuntu 22.04
- CUDA 12.2 MISE À JOUR 2
- Tensorrt 8.6 GA (8.6.1.6)
- Nvidia Driver 535 (> = 535.104.12)
- Nvidia Deepstream SDK 6.4
- Gstreamer 1.20.3
- Deepstream-yolo
Deepstream 6.3 sur la plate-forme x86
- Ubuntu 20.04
- CUDA 12.1 Mise à jour 1
- Tensorrt 8.5 Ga Update 2 (8.5.3.1)
- Nvidia Driver 525 (> = 525.125.06)
- Nvidia Deepstream SDK 6.3
- Gstreamer 1.16.3
- Deepstream-yolo
Deepstream 6.2 sur la plate-forme x86
- Ubuntu 20.04
- CUDA 11.8
- Tensorrt 8.5 GA Update 1 (8.5.2.2)
- Nvidia Driver 525 (> = 525.85.12)
- Nvidia Deepstream SDK 6.2
- Gstreamer 1.16.3
- Deepstream-yolo
Deepstream 6.1.1 sur la plate-forme x86
- Ubuntu 20.04
- CUDA 11.7 Mise à jour 1
- Tensorrt 8.4 GA (8.4.1.5)
- Nvidia Driver 515.65.01
- Nvidia Deepstream SDK 6.1.1
- Gstreammer 1.16.2
- Deepstream-yolo
Deepstream 6.1 sur la plate-forme x86
- Ubuntu 20.04
- CUDA 11.6 MISE À JOUR 1
- Tensorrt 8.2 GA Update 4 (8.2.5.1)
- Nvidia Driver 510.47.03
- Nvidia Deepstream SDK 6.1
- Gstreammer 1.16.2
- Deepstream-yolo
Deepstream 6.0.1 / 6.0 sur la plate-forme x86
- Ubuntu 18.04
- CUDA 11.4 MISE À JOUR 1
- Tensorrt 8.0 GA (8.0.1)
- Nvidia Driver 470.63.01
- Nvidia Deepstream SDK 6.0.1 / 6.0
- Gstreamer 1.14.5
- Deepstream-yolo
Deepstream 5.1 sur la plate-forme x86
- Ubuntu 18.04
- CUDA 11.1
- Tensorrt 7.2.2
- Nvidia Driver 460.32.03
- Nvidia Deepstream SDK 5.1
- Gstreamer 1.14.5
- Deepstream-yolo
Deepstream 7.1 sur la plate-forme Jetson
- Jetpack 6.1
- Nvidia Deepstream SDK 7.1
- Deepstream-yolo
Deepstream 7.0 sur la plate-forme Jetson
- Jetpack 6.0
- Nvidia Deepstream SDK 7.0
- Deepstream-yolo
Deepstream 6.4 sur la plate-forme Jetson
- Jetpack 6.0 dp
- Nvidia Deepstream SDK 6.4
- Deepstream-yolo
Deepstream 6.3 sur la plate-forme Jetson
- Jetpack 5.1.3 / 5.1.2
- Nvidia Deepstream SDK 6.3
- Deepstream-yolo
Deepstream 6.2 sur la plate-forme Jetson
- Jetpack 5.1.3 / 5.1.2 / 5.1.1 / 5.1
- Nvidia Deepstream SDK 6.2
- Deepstream-yolo
Deepstream 6.1.1 sur la plate-forme Jetson
- Jetpack 5.0.2
- Nvidia Deepstream SDK 6.1.1
- Deepstream-yolo
Deepstream 6.1 sur la plate-forme Jetson
- Jetpack 5.0.1 dp
- Nvidia Deepstream SDK 6.1
- Deepstream-yolo
Deepstream 6.0.1 / 6.0 sur la plate-forme Jetson
- Jetpack 4.6.4
- Nvidia Deepstream SDK 6.0.1 / 6.0
- Deepstream-yolo
Deepstream 5.1 sur la plate-forme Jetson
- Jetpack 4.5.1
- Nvidia Deepstream SDK 5.1
- Deepstream-yolo
Modèles pris en charge
- Darknet
- Mobilenet-yolo
- Yolo-plus cher
- Yolov5
- Yolov6
- Yolov7
- Yolov8
- Yolov9
- Yolor
- Yolox
- Rtmdet (mmyolo)
- Gold-yolo
- Damo-yolo
- Pp-yoloe / pp-yoloe +
- Yolo-nas
- Co-Dett (MMDETECTION)
- Rt-détecter
Utilisation de base
1. Téléchargez le repo
git clone https://github.com/marcoslucianops/DeepStream-Yolo.git
cd DeepStream-Yolo
2. Téléchargez les fichiers cfg et weights de DarkNet Repo dans le dossier Deepstream-yolo
3. Compiler la lib
3.1. Définissez le CUDA_VER Selon votre version Deepstream
plate-forme 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
Plate-forme Jetson
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. Faire la lib
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
4. Modifiez le fichier config_infer_primary.txt en fonction de votre modèle (exemple pour yolov4)
[property]
...
custom-network-config=yolov4.cfg
model-file=yolov4.weights
...
Remarque : Pour les modèles DarkNet , par défaut, la taille du lot dynamique est définie. Pour utiliser la taille d'un lot statique, décommentez la ligne
...
force-implicit-batch-dim=1
...
5. RUN
deepstream-app -c deepstream_app_config.txt
Remarque : Le fichier moteur Tensorrt peut prendre beaucoup de temps à générer (parfois plus de 10 minutes).
Remarque : Si vous souhaitez utiliser les modèles Yolov2 ou Yolov2-Tiny, modifiez le fichier deepstream_app_config.txt avant de l'exécuter
...
[primary-gie]
...
config-file=config_infer_primary_yoloV2.txt
...
Utilisation de Docker
plate-forme x86
nvcr.io/nvidia/deepstream:7.1-gc-triton-devel
nvcr.io/nvidia/deepstream:7.1-triton-multiarch
Plate-forme Jetson
nvcr.io/nvidia/deepstream:7.1-triton-multiarch
Remarque : Pour compiler le nvdsinfer_custom_impl_Yolo , vous devez installer le G ++ à l'intérieur du conteneur
apt-get install build-essential
Remarque : Avec Deepstream 7.1, les conteneurs Docker ne sont pas des bibliothèques de package nécessaires à certaines opérations multimédias comme l'analyse de données audio, le décodage CPU et le code CPU. Cette modification pourrait affecter le traitement de certains flux vidéo / fichiers comme MP4 qui incluent une piste audio. Veuillez exécuter le script ci-dessous à l'intérieur des images Docker pour installer des packages supplémentaires qui pourraient être nécessaires pour utiliser toutes les fonctionnalités DeepStreamsDK:
/opt/nvidia/deepstream/deepstream/user_additional_install.sh
Configuration NMS
Pour modifier les valeurs nms-iou-threshold , pre-cluster-threshold et topk , modifiez le fichier config_infer
[class-attrs-all]
nms-iou-threshold=0.45
pre-cluster-threshold=0.25
topk=300
Remarque : assurez-vous de définir cluster-mode=2 dans le fichier config_infer.
Notes
Parfois, lors de l'exécution des applications de pipeline ou d'échantillonnage Gstreamer, l'utilisateur peut rencontrer une erreur: GLib (gthread-posix.c): Unexpected error from C library during 'pthread_setspecific': Invalid argument. Aborting. . Le problème est dû à un bogue dans la version glib 2.0-2.72 qui est livré avec Ubuntu 22.04 par défaut. Le problème est résolu dans glib 2.76 et son installation est requise pour résoudre le problème (https://github.com/gnome/glib/tree/2.76.6).
Migrer glib vers une version plus récente
pip3 install meson
pip3 install ninja
Remarque : il est recommandé d'utiliser Python VirtualEnv.
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
Vérifiez et confirmez la version glib nouvellement installée:
pkg-config --modversion glib-2.0
Parfois, avec RTSP Streams, l'application est coincée sur l'atteinte d'EOS. Cela est dû à un problème dans le composant RTPJitterBuffer. Pour résoudre ce problème, un script a été fourni avec les détails requis pour mettre à jour la bibliothèque GSTRTPMANAGER.
/opt/nvidia/deepstream/deepstream/update_rtpmanager.sh
Extraire les métadonnées
Vous pouvez obtenir des métadonnées de Deepstream à l'aide de Python et C / C ++. Pour C / C ++, vous pouvez modifier les codes deepstream-app ou deepstream-test . Pour Python, vous pouvez installer et modifier Deepstream_python_apps.
Fondamentalement, vous avez besoin de manipuler le NvDsObjectMeta (python / c / c ++) and NvDsFrameMeta (python / c / c ++) pour obtenir l'étiquette, la position, etc. de bboxes.
Mes projets: https://www.youtube.com/marcoslucianotv