marcoslucianops / DeepStream-Yolo-Pose

NVIDIA DeepStream SDK 6.3 / 6.2 / 6.1.1 / 6.1 / 6.0.1 / 6.0 application for YOLO-Pose models
MIT License
120 stars 33 forks source link
deepstream nvidia nvidia-deepstream-sdk object-detection pose-estimation pytorch tensorrt ultralytics yolo yolov8

DeepStream-Yolo-Pose

NVIDIA DeepStream SDK application for YOLO-Pose models


YOLO objetct detection models and other infos: https://github.com/marcoslucianops/DeepStream-Yolo


Important: I've changed the output logic to prevent the TensorRT to use the wrong output order. Please export the ONNX model with the new export file, generate the TensorRT engine again with the updated files, and use the new config_infer_primary file according to your model


Getting started

Supported models

Instructions

1. Download the DeepStream-Yolo-Pose repo

git clone https://github.com/marcoslucianops/DeepStream-Yolo-Pose.git
cd DeepStream-Yolo-Pose

2. Compile the libs

Export the CUDA_VER env according to your DeepStream version and platform:

Compile the libs

make -C nvdsinfer_custom_impl_Yolo_pose
make

NOTE: To use the Python code, you need to install the DeepStream Python bindings.

Reference: https://github.com/NVIDIA-AI-IOT/deepstream_python_apps

NOTE: It is recommended to use Python virtualenv.

NOTE: The steps above only work on DeepStream 6.3. For previous versions, please check the files on the NVIDIA-AI-IOT/deepstream_python_apps repo.

3. Run

NOTE: The TensorRT engine file may take a very long time to generate (sometimes more than 10 minutes).

NOTE: To change the source

-s file:// or rtsp:// or http://
--source file:// or rtsp:// or http://

NOTE: To change the config infer file (example for config_infer.txt file)

-c config_infer.txt
--config-infer config_infer.txt

NOTE: To change the nvstreammux batch-size (example for 2; default: 1)

-b 2
--streammux-batch-size 2

NOTE: To change the nvstreammux width (example for 1280; default: 1920)

-w 1280
--streammux-width 1280

NOTE: To change the nvstreammux height (example for 720; default: 1080)

-e 720
--streammux-height 720

NOTE: To change the GPU id (example for 1; default: 0)

-g 1
--gpu-id 1

NOTE: To change the FPS measurement interval (example for 10; default: 5)

-f 10
--fps-interval 10

NMS configuration

For now, the nms-iou-threshold is fixed to 0.45.

NOTE: Make sure to set cluster-mode=4 in the config_infer file.

Detection threshold configuration

[class-attrs-all]
pre-cluster-threshold=0.25
topk=300

My projects: https://www.youtube.com/MarcosLucianoTV