yolov5-onnxruntime
C++ YOLO v5 ONNX Runtime inference code for object detection.
Dependecies:
- OpenCV 4.5+
- ONNXRuntime 1.7+
- OS: Windows 10 or Ubuntu 20.04
- CUDA 11+ [Optional]
Build
To build the project you should run the following commands, don't forget to change ONNXRUNTIME_DIR
cmake option:
mkdir build
cd build
cmake .. -DONNXRUNTIME_DIR=path_to_onnxruntime
cmake --build .
Run
Before running the executable you should convert you PyTorch model to ONNX if you haven't done it yet. Check the official tutorial.
To run the executable you should add OpenCV and ONNX Runtime libraries to your environment path or
put all needed libraries near the executable.
Run from CLI:
./yolo_ort --model_path yolov5.onnx --image bus.jpg --class_names coco.names --gpu
Demo
TODO
- refactoring;
- add Python implementation of the project;
add dynamic input shape inference;add C++ letterbox implementation and scaling;add device selection for inference;add Linux compatibility;read class names from file;better visualization with class names and boxes;create YOLO class for easy deployment;
References
- YOLO v5 repo: https://github.com/ultralytics/yolov5
- YOLOv5 Runtime Stack repo: https://github.com/zhiqwang/yolov5-rt-stack
- ONNXRuntime Inference examples: https://github.com/microsoft/onnxruntime-inference-examples