Skip to content

This repository provides a comprehensive guide for integrating the YOLOv7 model with DeepStream v7.0. It includes step-by-step instructions and resources to help users set up, deploy, and optimize the model for efficient object detection.

Notifications You must be signed in to change notification settings

myselfbasil/fall_detection-deepstream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Integration of YOLOv7 Model with Deepstream v7.0

Reference Page: https://github.com/myselfbasil/DeepStream-Yolo

Here, I will be demonstrating the entire process for running a deepstream app for Fall Detection

Note: For other versions of yolo models also, follow the same proceedures :)

1. Initial Setup:

Download the YOLOv7 repo and install the requirements

git clone https://github.com/WongKinYiu/yolov7.git
cd yolov7
pip3 install onnx onnxsim onnxruntime

Copy appropriate conversor file for your model from the link her

https://github.com/myselfbasil/DeepStream-Yolo/tree/master/utils

Here, Copy the export_yoloV7.py file from DeepStream-Yolo/utils directory to the yolov7 folder.

2. Download the model

Note: If you have your own model, paste it or download the .pt file from YOLOv7 releases (example for YOLOv7)

wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt

Reparameterize your model (for custom models)

Custom YOLOv7 models cannot be directly converted to engine file. Therefore, you will have to reparameterize your model using the code here. Make sure to convert your custom checkpoints in YOLOv7 repository, and then save your reparmeterized checkpoints for conversion in the next step.

3. Convert the Model:

Generate the ONNX model file (example for YOLOv7)

python3 export_yoloV7.py -w yolov7.pt --dynamic

NOTE: To convert a P6 model

--p6

NOTE: To change the inference size (defaut: 640 / 1280 for --p6 models)

-s SIZE
--size SIZE
-s HEIGHT WIDTH
--size HEIGHT WIDTH

Example for 1280

-s 1280

or

-s 1280 1280

NOTE: To simplify the ONNX model (DeepStream >= 6.0)

--simplify

NOTE: To use dynamic batch-size (DeepStream >= 6.1)

--dynamic

NOTE: To use static batch-size (example for batch-size = 4)

--batch 4

NOTE: If you are using the DeepStream 5.1, remove the --dynamic arg and use opset 12 or lower. The default opset is 12.

--opset 12

Copy the generated ONNX model file and labels.txt file (if generated) to the DeepStream-Yolo folder.

4. Set CUDA Version & Compile the lib

  1. Open the DeepStream-Yolo folder and compile the lib
  2. Set the CUDA_VER according to your DeepStream version
nvcc --version
export CUDA_VER=XY.Z
  • x86 platform

    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
  • Jetson platform

    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
  • Compile the lib

make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo

6. Making changes to the Configuration Files

Edit the config_infer_primary_yoloV7 file

Edit the config_infer_primary_yoloV7.txt file according to your model (example for YOLOv7 with 80 classes)

[property]
...
onnx-file=/path/to/your/.onnx_file
...
num-detected-classes=80
...
parse-bbox-func-name=NvDsInferParseYolo
...

NOTE: The YOLOv7 resizes the input with center padding. To get better accuracy, use

[property]
...
maintain-aspect-ratio=1
...
symmetric-padding=1
...

7. Edit the deepstream_app_config file

...
[primary-gie]
...
config-file=/path/to/your/config_infer_primary_yoloV7.txt

8. Running the model

deepstream-app -c deepstream_app_config.txt

There you go! Now you can see your app running smoothly 😊

Made with 🫶🏻 by Basil

Check out my medium guide here: medium.com

You can go through my notion website: notion.com

About

This repository provides a comprehensive guide for integrating the YOLOv7 model with DeepStream v7.0. It includes step-by-step instructions and resources to help users set up, deploy, and optimize the model for efficient object detection.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published