4.4 KiB
YOLOv8 OpenVINO Inference in C++
Welcome to the Ultralytics YOLOv8 OpenVINO Inference example in C++! This guide will help you get started with leveraging the powerful YOLOv8 models using the Intel OpenVINO™ toolkit and OpenCV API in your C++ projects. Whether you're looking to enhance performance on Intel hardware or add flexibility to your applications, this example provides a solid foundation. Learn more about optimizing models on the Ultralytics blog.
🌟 Features
- 🚀 Model Format Support: Compatible with ONNX and OpenVINO Intermediate Representation (IR) formats. Check the Ultralytics ONNX integration for more details.
- ⚡ Precision Options: Run models in FP32, FP16 (half-precision), and INT8 (quantization) precisions for optimized performance.
- 🔄 Dynamic Shape Loading: Easily handle models with dynamic input shapes, common in many computer vision tasks.
📋 Dependencies
To ensure smooth execution, please make sure you have the following dependencies installed:
Dependency | Version |
---|---|
OpenVINO | >=2023.3 |
OpenCV | >=4.5.0 |
C++ | >=14 |
CMake | >=3.12.0 |
⚙️ Build Instructions
Follow these steps to build the project:
-
Clone the Ultralytics repository:
git clone https://github.com/ultralytics/ultralytics.git cd ultralytics/examples/YOLOv8-OpenVINO-CPP-Inference
-
Create a build directory and compile the project using CMake:
mkdir build cd build cmake .. make
🛠️ Usage
Once built, you can run inference on an image using the compiled executable. Provide the path to your model file (either .xml
for OpenVINO IR or .onnx
) and the path to your image:
# Example using an OpenVINO IR model
./detect path/to/your/model.xml path/to/your/image.jpg
# Example using an ONNX model
./detect path/to/your/model.onnx path/to/your/image.jpg
This command will process the image using the specified YOLOv8 model and display the object detection results. Explore various Ultralytics Solutions for real-world applications.
🔄 Exporting YOLOv8 Models
To use your Ultralytics YOLOv8 model with this C++ example, you first need to export it to the OpenVINO IR or ONNX format. Use the yolo export
command available in the Ultralytics Python package. Find detailed instructions in the Export mode documentation.
# Export to OpenVINO format (generates .xml and .bin files)
yolo export model=yolov8s.pt imgsz=640 format=openvino
# Export to ONNX format
yolo export model=yolov8s.pt imgsz=640 format=onnx
For more details on exporting and optimizing models for OpenVINO, refer to the Ultralytics OpenVINO integration guide.
📸 Screenshots
Running Using OpenVINO Model
Running Using ONNX Model
❤️ Contributions
We hope this example helps you integrate YOLOv8 with OpenVINO and OpenCV into your C++ projects effortlessly. Contributions to improve this example or add new features are welcome! Please see the Ultralytics contribution guidelines for more information. Visit the main Ultralytics documentation for further guides and resources. Happy coding! 🚀