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
- Supported models
- Instructions
- YOLOv7-Pose usage
- YOLOv8-Pose usage
- YOLO-NAS-Pose usage
- NMS configuration
- Detection threshold configuration
git clone https://github.com/marcoslucianops/DeepStream-Yolo-Pose.git
cd DeepStream-Yolo-Pose
Export the CUDA_VER env according to your DeepStream version and platform:
-
DeepStream 6.3 on x86 platform
export CUDA_VER=12.1
-
DeepStream 6.2 on x86 platform
export CUDA_VER=11.8
-
DeepStream 6.1.1 on x86 platform
export CUDA_VER=11.7
-
DeepStream 6.1 on x86 platform
export CUDA_VER=11.6
-
DeepStream 6.0.1 / 6.0 on x86 platform
export CUDA_VER=11.4
-
DeepStream 6.3 / 6.2 / 6.1.1 / 6.1 on Jetson platform
export CUDA_VER=11.4
-
DeepStream 6.0.1 / 6.0 on Jetson platform
export CUDA_VER=10.2
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
-
x86 platform:
wget https://github.com/NVIDIA-AI-IOT/deepstream_python_apps/releases/download/v1.1.8/pyds-1.1.8-py3-none-linux_x86_64.whl pip3 install pyds-1.1.8-py3-none-linux_x86_64.whl
-
Jetson platform:
wget https://github.com/NVIDIA-AI-IOT/deepstream_python_apps/releases/download/v1.1.8/pyds-1.1.8-py3-none-linux_aarch64.whl pip3 install pyds-1.1.8-py3-none-linux_aarch64.whl
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.
-
C code
./deepstream -s file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 -c config_infer_primary_yoloV8_pose.txt
-
Python code
python3 deepstream.py -s file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 -c config_infer_primary_yoloV8_pose.txt
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
For now, the nms-iou-threshold
is fixed to 0.45
.
NOTE: Make sure to set cluster-mode=4
in the config_infer file.
[class-attrs-all]
pre-cluster-threshold=0.25
topk=300
My projects: https://www.youtube.com/MarcosLucianoTV