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 Configuração para modelos YOLO
Por enquanto, sou limitado para algumas atualizações. Obrigado pela compreensão.
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: Por favor, exporte o modelo ONNX com o novo arquivo de exportação, gere o mecanismo Tensorrt novamente com os arquivos atualizados e use o novo arquivo config_infer_primary de acordo com o seu modelo
Melhorias neste repositório
- Suporte para calibração INT8
- Suporte para modelos não quadrados
- Modelos benchmarks
- Suporte para modelos DarkNet (Yolov4, etc) usando CFG e conversão de pesos com pós-processamento de GPU
- Suporte para RT-Detr, Co-Detr (Mmdetection), Yolo-Nas, Ppyoloe+, Ppyoloe, Damo-Yolo, Gold-Yolo, Rtmdet (MMyolo), Yolox, Yolor, Yolov9, Yolov8, Yolov7, Yolov6 e Yolor, usando o Onnx, na conversão no dianx,
- Analisador de GPU Bbox
- Analisador de modelo ONNX personalizado
- Tamanho dinâmico em lote
- Calibração Int8 (PTQ) para modelos exportados para DarkNet e ONNX
Começando
- Requisitos
- Modelos suportados
- Benchmarks
- Instalação DGPU
- Uso básico
- Uso do Docker
- Configuração do NMS
- Notas
- Calibração int8
- Uso Yolov5
- Uso Yolov6
- Uso Yolov7
- Uso Yolov8
- Uso Yolov9
- Uso Yolor
- Uso Yolox
- RTMDET (MMYOLO) Uso
- Uso de ouro-yolo
- Uso do Damo-Yolo
- Pp-yoloe / pp-yoloe+ uso
- Uso YOLO-NAS
- Co-Detring (MMDETECTION) Uso
- RT-Detr Pytorch Uso
- RT-Detr USAGE
- RT-Detr Ultralytics Uso
- Usando seu modelo personalizado
- Múltiplo Yolo Gies
Requisitos
Deepstream 7.1 na plataforma x86
- Ubuntu 22.04
- CUDA 12.6 ATUALIZAÇÃO 2
- Tensorrt 10,3 Ga (10.3.0.26)
- NVIDIA Driver 535.183.06 (Data Center / Tesla Series) / 560.35.03 (Titan, GeForce RTX / GTX Series e RTX / Quadro Series)
- Nvidia Deepstream SDK 7.1
- GSTREAMER 1.20.3
- Deepstream-yolo
Deepstream 7.0 na plataforma x86
- Ubuntu 22.04
- CUDA 12.2 Atualização 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 na plataforma x86
- Ubuntu 22.04
- CUDA 12.2 Atualização 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 na plataforma x86
- Ubuntu 20.04
- CUDA 12.1 Atualização 1
- Tensorrt 8,5 Ga Atualização 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 na plataforma x86
- Ubuntu 20.04
- CUDA 11.8
- Tensorrt 8,5 Ga Atualização 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 na plataforma x86
- Ubuntu 20.04
- CUDA 11.7 Atualização 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 na plataforma x86
- Ubuntu 20.04
- CUDA 11.6 ATUALIZAÇÃO 1
- Tensorrt 8.2 Ga Atualização 4 (8.2.5.1)
- Nvidia Driver 510.47.03
- Nvidia Deepstream SDK 6.1
- GSTREAMER 1.16.2
- Deepstream-yolo
Deepstream 6.0.1 / 6.0 na plataforma x86
- Ubuntu 18.04
- CUDA 11.4 Atualização 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 na plataforma 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 na plataforma Jetson
- Jetpack 6.1
- Nvidia Deepstream SDK 7.1
- Deepstream-yolo
Deepstream 7.0 na plataforma Jetson
- Jetpack 6.0
- Nvidia Deepstream SDK 7.0
- Deepstream-yolo
Deepstream 6.4 na plataforma Jetson
- Jetpack 6,0 dp
- Nvidia Deepstream SDK 6.4
- Deepstream-yolo
Deepstream 6.3 na plataforma Jetson
- Jetpack 5.1.3 / 5.1.2
- Nvidia Deepstream SDK 6.3
- Deepstream-yolo
Deepstream 6.2 na 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 na plataforma Jetson
- Jetpack 5.0.2
- Nvidia Deepstream SDK 6.1.1
- Deepstream-yolo
Deepstream 6.1 na plataforma Jetson
- Jetpack 5.0.1 DP
- Nvidia Deepstream SDK 6.1
- Deepstream-yolo
Deepstream 6.0.1 / 6.0 na plataforma Jetson
- Jetpack 4.6.4
- Nvidia Deepstream SDK 6.0.1 / 6.0
- Deepstream-yolo
Deepstream 5.1 na plataforma Jetson
- Jetpack 4.5.1
- Nvidia Deepstream SDK 5.1
- Deepstream-yolo
Modelos suportados
- Darknet
- MobileNet-Yolo
- YOLO-FAST
- Yolov5
- Yolov6
- Yolov7
- Yolov8
- Yolov9
- Yolor
- Yolox
- Rtmdet (mmyolo)
- Gold-Yolo
- DAMO-YOLO
- Pp-yoloe / pp-yoloe+
- YOLO-NAS
- Co-detr (mmdetecção)
- Rt-detr
Uso básico
1. Faça o download do repo
git clone https://github.com/marcoslucianops/DeepStream-Yolo.git
cd DeepStream-Yolo
2. Faça o download dos arquivos cfg e weights de DarkNet Repo até a pasta Deepstream-Yolo
3. Compilar a lib
3.1. Defina o CUDA_VER de acordo com sua versão 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 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. Faça o Lib
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
4. Edite o arquivo config_infer_primary.txt de acordo com o seu modelo (exemplo para yolov4)
[property]
...
custom-network-config=yolov4.cfg
model-file=yolov4.weights
...
Nota : Para modelos DarkNet , por padrão, o size em lote dinâmico está definido. Para usar o tamanho de lote estático, descommentando a linha
...
force-implicit-batch-dim=1
...
5. Corra
deepstream-app -c deepstream_app_config.txt
NOTA : O arquivo do motor Tensorrt pode levar muito tempo para gerar (às vezes mais de 10 minutos).
Nota : Se você deseja usar modelos Yolov2 ou Yolov2, altere o arquivo deepstream_app_config.txt antes de executá-lo
...
[primary-gie]
...
config-file=config_infer_primary_yoloV2.txt
...
Uso do Docker
Plataforma x86
nvcr.io/nvidia/deepstream:7.1-gc-triton-devel
nvcr.io/nvidia/deepstream:7.1-triton-multiarch
Plataforma Jetson
nvcr.io/nvidia/deepstream:7.1-triton-multiarch
Nota : Para compilar o nvdsinfer_custom_impl_Yolo , você precisa instalar o G ++ dentro do contêiner
apt-get install build-essential
NOTA : Com o Deepstream 7.1, os contêineres do Docker não embalam bibliotecas necessárias para determinadas operações multimídia, como análise de dados de áudio, decodificação da CPU e codificação da CPU. Essa alteração pode afetar o processamento de determinados fluxos/arquivos de vídeo, como o MP4, que incluem faixa de áudio. Execute o script abaixo dentro das imagens do Docker para instalar pacotes adicionais que podem ser necessários para usar todos os recursos do DeepStreamsdk:
/opt/nvidia/deepstream/deepstream/user_additional_install.sh
Configuração do NMS
Para alterar os valores nms-iou-threshold , pre-cluster-threshold e topk , modifique o arquivo config_infer
[class-attrs-all]
nms-iou-threshold=0.45
pre-cluster-threshold=0.25
topk=300
Nota : Certifique-se de definir cluster-mode=2 no arquivo config_infer.
Notas
Às vezes, ao executar aplicativos GSTreamer ou aplicativos de amostra, o usuário pode encontrar erro: GLib (gthread-posix.c): Unexpected error from C library during 'pthread_setspecific': Invalid argument. Aborting. . O problema é causado devido a um bug na versão glib 2.0-2.72 , que vem com o Ubuntu 22.04 por padrão. O problema é abordado no glib 2.76 e sua instalação é necessária para corrigir o problema (https://github.com/gnome/glib/tree/2.76.6).
Migrar glib para uma versão mais recente
pip3 install meson
pip3 install ninja
Nota : é recomendável usar o 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 e confirme a versão Glib recém -instalada:
pkg-config --modversion glib-2.0
Às vezes, com os fluxos RTSP, o aplicativo fica preso ao atingir o EOS. Isso ocorre devido a um problema no componente rtpjitterbuffer. Para corrigir esse problema, um script recebeu os detalhes necessários para atualizar a biblioteca GSTRTPManager.
/opt/nvidia/deepstream/deepstream/update_rtpmanager.sh
Extrato de metadados
Você pode obter metadados do DeepStream usando Python e C/C ++. Para C/C ++, você pode editar os códigos deepstream-app ou deepstream-test . Para Python, você pode instalar e editar Deepstream_python_apps.
Basicamente, você precisa manipular o NvDsObjectMeta (python / c / c ++) and NvDsFrameMeta (python / c / c ++) para obter o rótulo, a posição etc. de Bboxes.
Meus projetos: https://www.youtube.com/marcoslucianotv