/yolov8_onnxruntime

C++ YOLOv8 ONNXRuntime inference code for Object Detection or Instance Segmentation.

Primary LanguageC++

yolov8-onnxruntime

C++ YOLOv8 ONNXRuntime inference code for Object Detection or Instance Segmentation.

Support for custom training model deployment !!!

Demo

YOLOv8m and yolov8m-seg:

My Dependecies:

  • OpenCV 4.2
  • ONNXRuntime 1.15.
  • OS: Windows or Linux
  • CUDA 12.0 [Optional]
  • YOLOv8 export with onnx 1.14. opset 17

Build

Find the compiled package for your system on the official website, then unzip it and replace the extracted file path with the following path/to/onnxruntime

mkdir build
cd build
cmake .. -DONNXRUNTIME_DIR=path/to/onnxruntime -DCMAKE_BUILD_TYPE=Debug
make
cd ..
# And you can just do this
# sh build.sh

Run

You should convert your PyTorch model (.pt) to ONNX (.onnx).

The official tutorial may help you.

Make sure you have added OpenCV libraries in your environment.

Run in Linux

./build/yolov8_ort -m ./models/yolov8m.onnx -i ./Imginput -o ./Imgoutput -c ./models/coco.names -x m --gpu

./build/yolov8_ort -m ./models/yolov8m-seg.onnx -i ./Imginput -o ./Imgoutput -c ./models/coco.names -x ms --gpu

# for your custom model
./build/yolov8_ort -m ./models/modelname.onnx -i ./Imginput -o ./Imgoutput -c ./models/class.names -x ms --gpu
#-m Path to onnx model.
#-i Image source to be predicted.
#-o Path to save result.
#-c Path to class names file.
#-x Suffix names for save.
#--gpu Whether inference on cuda device if you have.

For Windows

./build/yolov8_ort.exe -m ./models/modelname.onnx -i ./Imginput -o ./Imgoutput -c ./models/class.names -x ms --gpu

References