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 :)
Download the YOLOv7 repo and install the requirements
git clone https://github.com/WongKinYiu/yolov7.git
cd yolov7
pip3 install onnx onnxsim onnxruntimeCopy 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.
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.ptReparameterize 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.
Generate the ONNX model file (example for YOLOv7)
python3 export_yoloV7.py -w yolov7.pt --dynamicNOTE: To convert a P6 model
--p6NOTE: To change the inference size (defaut: 640 / 1280 for --p6 models)
-s SIZE
--size SIZE
-s HEIGHT WIDTH
--size HEIGHT WIDTHExample for 1280
-s 1280or
-s 1280 1280NOTE: To simplify the ONNX model (DeepStream >= 6.0)
--simplifyNOTE: To use dynamic batch-size (DeepStream >= 6.1)
--dynamicNOTE: To use static batch-size (example for batch-size = 4)
--batch 4NOTE: If you are using the DeepStream 5.1, remove the --dynamic arg and use opset 12 or lower. The default opset is 12.
--opset 12Copy the generated ONNX model file and labels.txt file (if generated) to the DeepStream-Yolo folder.
- Open the
DeepStream-Yolofolder and compile the lib - Set the
CUDA_VERaccording to your DeepStream version
nvcc --versionexport 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_YoloEdit 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
......
[primary-gie]
...
config-file=/path/to/your/config_infer_primary_yoloV7.txtdeepstream-app -c deepstream_app_config.txtThere 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