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 Configuración para modelos YOLO
Por ahora, estoy limitado para algunas actualizaciones. Gracias por entender.
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
Importante: Exporte el modelo ONNX con el nuevo archivo de exportación, genere el motor Tensorrt nuevamente con los archivos actualizados y use el nuevo archivo config_infer_primary de acuerdo con su modelo
Mejoras en este repositorio
- Soporte para la calibración INT8
- Soporte para modelos no cuadrados
- Puntos de referencia de modelos
- Soporte para modelos DarkNet (YOLOV4, etc.) utilizando CFG y conversión de pesas con postprocesamiento de GPU
- Soporte para RT-DETR, CODTR (MMDETECTION), YOLO-NAS, Ppyoloe+, Ppyoloe, Damo-yolo, Gold-Yolo, RTMDET (MMYOLO), Yolox, Yolor, Yolov9, Yolov8, Yolov7, Yolov6 y Yolov5 utilizando ONNX Conversion con GGPU.
- GPU Bbox Parser
- Analizador de modelo ONNX personalizado
- Tamaño por lotes dinámico
- Calibración INT8 (PTQ) para modelos exportados DarkNet y ONNX
Empezando
- Requisitos
- Modelos compatibles
- Puntos de referencia
- instalación de DGPU
- Uso básico
- Uso de Docker
- Configuración de NMS
- Notas
- Calibración int8
- Uso de yolov5
- Uso de yolov6
- Uso de yolov7
- Uso de yolov8
- Uso de Yolov9
- Uso de yolor
- Uso de yolox
- Uso de rtmdet (mmyolo)
- Uso de oro-yolo
- Uso de damo-yolo
- PP-YOLOE / PP-YOLOE+ Uso
- Uso de yolo-nas
- CO-Detr (MMDetection) Uso
- Uso de pytorch RT-Detr
- Uso de paletas de retratación RT
- Uso ultraalítico de RT-Detr
- Usando su modelo personalizado
- Múltiples yolo gies
Requisitos
Deepstream 7.1 en la plataforma x86
- Ubuntu 22.04
- CUDA 12.6 Actualización 2
- Tensorrt 10.3 GA (10.3.0.26)
- Nvidia Driver 535.183.06 (Centro de datos / serie Tesla) / 560.35.03 (Serie Titan, GeForce RTX / GTX y serie RTX / Quadro)
- Nvidia Deepstream SDK 7.1
- Gstreamer 1.20.3
- Deepstream-yolo
Deepstream 7.0 en la plataforma x86
- Ubuntu 22.04
- CUDA 12.2 Actualización 2
- Tensorrt 8.6 GA (8.6.1.6)
- Conductor NVIDIA 535 (> = 535.161.08)
- Nvidia Deepstream SDK 7.0
- Gstreamer 1.20.3
- Deepstream-yolo
Deepstream 6.4 en la plataforma x86
- Ubuntu 22.04
- CUDA 12.2 Actualización 2
- Tensorrt 8.6 GA (8.6.1.6)
- Conductor NVIDIA 535 (> = 535.104.12)
- Nvidia Deepstream SDK 6.4
- Gstreamer 1.20.3
- Deepstream-yolo
Deepstream 6.3 en la plataforma x86
- Ubuntu 20.04
- CUDA 12.1 Actualización 1
- Tensorrt 8.5 GA Actualización 2 (8.5.3.1)
- Conductor NVIDIA 525 (> = 525.125.06)
- Nvidia Deepstream SDK 6.3
- Gstreamer 1.16.3
- Deepstream-yolo
Deepstream 6.2 en la plataforma x86
- Ubuntu 20.04
- CUDA 11.8
- Tensorrt 8.5 GA Actualización 1 (8.5.2.2)
- Conductor NVIDIA 525 (> = 525.85.12)
- Nvidia Deepstream SDK 6.2
- Gstreamer 1.16.3
- Deepstream-yolo
Deepstream 6.1.1 en la plataforma x86
- Ubuntu 20.04
- CUDA 11.7 Actualización 1
- Tensorrt 8.4 GA (8.4.1.5)
- Conductor NVIDIA 515.65.01
- Nvidia Deepstream SDK 6.1.1
- Gstreamer 1.16.2
- Deepstream-yolo
Deepstream 6.1 en la plataforma x86
- Ubuntu 20.04
- CUDA 11.6 Actualización 1
- Tensorrt 8.2 GA Actualización 4 (8.2.5.1)
- Conductor NVIDIA 510.47.03
- Nvidia Deepstream SDK 6.1
- Gstreamer 1.16.2
- Deepstream-yolo
Deepstream 6.0.1 / 6.0 en la plataforma x86
- Ubuntu 18.04
- CUDA 11.4 Actualización 1
- Tensorrt 8.0 GA (8.0.1)
- Conductor NVIDIA 470.63.01
- Nvidia Deepstream SDK 6.0.1 / 6.0
- Gstreamer 1.14.5
- Deepstream-yolo
Deepstream 5.1 en la plataforma x86
- Ubuntu 18.04
- CUDA 11.1
- Tensorrt 7.2.2
- Conductor NVIDIA 460.32.03
- Nvidia Deepstream SDK 5.1
- Gstreamer 1.14.5
- Deepstream-yolo
Deepstream 7.1 en la plataforma Jetson
- Jetpack 6.1
- Nvidia Deepstream SDK 7.1
- Deepstream-yolo
Deepstream 7.0 en la plataforma Jetson
- Jetpack 6.0
- Nvidia Deepstream SDK 7.0
- Deepstream-yolo
Deepstream 6.4 en la plataforma Jetson
- Jetpack 6.0 DP
- Nvidia Deepstream SDK 6.4
- Deepstream-yolo
Deepstream 6.3 en la plataforma Jetson
- Jetpack 5.1.3 / 5.1.2
- Nvidia Deepstream SDK 6.3
- Deepstream-yolo
Deepstream 6.2 en la plataforma Jetson
- Jetpack 5.1.3 / 5.1.2 / 5.1.1 / 5.1
- Nvidia Deepstream SDK 6.2
- Deepstream-yolo
Deepstream 6.1.1 en la plataforma Jetson
- Jetpack 5.0.2
- Nvidia Deepstream SDK 6.1.1
- Deepstream-yolo
Deepstream 6.1 en la plataforma Jetson
- Jetpack 5.0.1 DP
- Nvidia Deepstream SDK 6.1
- Deepstream-yolo
Deepstream 6.0.1 / 6.0 en la plataforma Jetson
- Jetpack 4.6.4
- Nvidia Deepstream SDK 6.0.1 / 6.0
- Deepstream-yolo
Deepstream 5.1 en la plataforma Jetson
- Jetpack 4.5.1
- Nvidia Deepstream SDK 5.1
- Deepstream-yolo
Modelos compatibles
- Red oscura
- Mobilenet-yolo
- Yolo más rápido
- Yolov5
- Yolov6
- Yolov7
- Yolov8
- Yolov9
- Yolor
- Yolox
- Rtmdet (mmyolo)
- Yolo
- Damo-yolo
- PP-YOLOE / PP-YOLOE+
- Yolo-Nas
- CODTR (MMDETECTION)
- Retratón
Uso básico
1. Descargue el repositorio
git clone https://github.com/marcoslucianops/DeepStream-Yolo.git
cd DeepStream-Yolo
2. Descargue los archivos cfg y weights de Darknet Repo a la carpeta DeepStream-Yolo
3. Compilar la lib
3.1. Establezca el CUDA_VER de acuerdo con su versión de DeepStream
plataforma 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
Plataforma de 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. Hacer la lib
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
4. Edite el archivo config_infer_primary.txt de acuerdo con su modelo (ejemplo para yolov4)
[property]
...
custom-network-config=yolov4.cfg
model-file=yolov4.weights
...
Nota : Para los modelos DarkNet , de forma predeterminada, se establece el tamaño de lote dinámico. Para usar el tamaño de lotes estáticos, sin consolidad de la línea
...
force-implicit-batch-dim=1
...
5. Corre
deepstream-app -c deepstream_app_config.txt
Nota : El archivo del motor Tensorrt puede tardar mucho en generar (a veces más de 10 minutos).
Nota : Si desea usar modelos yolov2 o yolov2-pequeño, cambie el archivo deepstream_app_config.txt antes de ejecutarlo
...
[primary-gie]
...
config-file=config_infer_primary_yoloV2.txt
...
Uso de Docker
plataforma x86
nvcr.io/nvidia/deepstream:7.1-gc-triton-devel
nvcr.io/nvidia/deepstream:7.1-triton-multiarch
Plataforma de Jetson
nvcr.io/nvidia/deepstream:7.1-triton-multiarch
Nota : para compilar el nvdsinfer_custom_impl_Yolo , debe instalar el g ++ dentro del contenedor
apt-get install build-essential
Nota : Con DeepStream 7.1, los contenedores Docker no empaquetan bibliotecas necesarias para ciertas operaciones multimedia como el análisis de datos de audio, la decodificación de la CPU y la codificación de la CPU. Este cambio podría afectar el procesamiento de ciertas transmisiones/archivos de video como MP4 que incluyen la pista de audio. Ejecute el script a continuación dentro de las imágenes de Docker para instalar paquetes adicionales que podrían ser necesarios para usar todas las funciones de DeepStreamSDK:
/opt/nvidia/deepstream/deepstream/user_additional_install.sh
Configuración de NMS
Para cambiar los valores nms-iou-threshold , pre-cluster-threshold y topk , modifique el archivo config_infer
[class-attrs-all]
nms-iou-threshold=0.45
pre-cluster-threshold=0.25
topk=300
Nota : asegúrese de establecer cluster-mode=2 en el archivo config_infer.
Notas
A veces, mientras se ejecuta las aplicaciones de tuberías o de muestra GStreamer, el usuario puede encontrar un error: GLib (gthread-posix.c): Unexpected error from C library during 'pthread_setspecific': Invalid argument. Aborting. . El problema se debe a un error en la versión glib 2.0-2.72 que viene con Ubuntu 22.04 por defecto. El problema se aborda en glib 2.76 y su instalación es necesaria para solucionar el problema (https://github.com/gnome/glib/tree/2.76.6).
Migrar glib a la versión más nueva
pip3 install meson
pip3 install ninja
Nota : Se recomienda usar 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
Verifique y confirme la versión GLIB recién instalada:
pkg-config --modversion glib-2.0
A veces con las transmisiones RTSP, la aplicación se atasca al alcanzar EOS. Esto se debe a un problema en el componente rtpjitterbuffer. Para solucionar este problema, se ha proporcionado un script con los detalles requeridos para actualizar la biblioteca GSTRTPManager.
/opt/nvidia/deepstream/deepstream/update_rtpmanager.sh
Extraer metadatos
Puede obtener metadatos de DeepStream usando Python y C/C ++. Para C/C ++, puede editar los códigos deepstream-app o deepstream-test . Para Python, puede instalar y editar DeepStream_Python_Apps.
Básicamente, necesita manipular el NvDsObjectMeta (Python / C / C ++) and NvDsFrameMeta (Python / C / C / C ++) para obtener la etiqueta, la posición, etc. de Bboxes.
Mis proyectos: https://www.youtube.com/marcoslucianotv