【YOLOs-CPP-图像分类部署】05-OpenVino加速
本项目完整项目下载地址:【Yolo项目下载地址】
经过前面几篇文章,我们得到了一个没有错误的项目。但是呢?速度测试后,发现还是稍微有点慢的,如何进一步加速呢?我们可以使用OpenVino进行部署。OpenVINO是Intel专门为自家CPU、集成显卡和VPU设计的推理加速工具包。
对比:ONNX Runtime虽然也支持多线程,但缺乏针对Intel硬件的深度指令级优化。
因此,我们可以在项目中集成OpenVINO来加速推理,同时保持ONNX模型格式不变。
下载OpenVino
第一步,首先,我们需要下载OpenVino。具体下载链接为:
https://storage.openvinotoolkit.org/repositories/openvino/packages/2025.1/windows/
下载并解压后,就会看到如下目录:
文件夹内的文件说明:
- 核心文件夹:
runtime
包含OpenVINO核心库(DLL/头文件),python
是Python绑定,samples
提供示例代码。 - 配置脚本:
setupvars.bat
(CMD)和setupvars.ps1
(PowerShell)用于一键配置环境变量,让系统全局识别OpenVINO工具链。 - 文档支持:
docs
文件夹存放官方文档,遇到问题时可直接查阅技术细节。
点击runtime后,就会看到如下目录:
文件解释说明:
-
核心组件:
bin
存放运行所需的DLL文件,lib
包含静态链接库,include
提供开发用的头文件,三者是OpenVINO运行和开发的核心。 -
扩展支持:
3rdparty
包含第三方依赖库,cmake
提供项目构建配置脚本,方便集成到CMake工程。 -
版本信息:
version.txt
记录具体版本号(2025.1.0),用于兼容性检查。 -
使用逻辑:开发时需链接
lib
和include
,运行时需将bin
路径加入系统环境变量(或复制DLL到程序目录)。
核心文件拷贝
既然runtime是核心文件,因此,我们将其先拷贝到原始的项目文件夹中,并且改名为openvinoruntime,如下:
配置环境
接下来,我们需要配置环境了。
包含目录
在VC++目录->包含目录中,添加openvino的include目录。如下:
库目录
在VC++目录->库目录中,添加openvino的lib目录。如下:
附加依赖项
如果没有配置附加依赖项没有增加openvino.lib,编译时候,会报错如下:
error LNK2019: 无法解析的外部符号 "..." (?...@@...),该符号在函数 _main 中被引用
error LNK2001: 无法解析的外部符号 ov_xxx(OpenVINO API中的函数)
fatal error LNK1120: 有 X 个无法解析的外部命令
那么,如何配置呢?方法如下:
链接器->输入->附加依赖项。
输入openvino.lib:
这样,环境配置暂且结束啦!
模型
模型层面,我们还需要做进一步的转换。之前的模型是onnx格式。
为何要转换?
因为我们这里使用的是openvino:
-
OpenVINO 的专用优化
OpenVINO 的推理引擎(Inference Engine)针对 Intel 硬件(CPU/iGPU/VPU)进行了深度优化,直接支持 IR 格式(.xml
+.bin
),能显著提升推理速度。 -
模型压缩与量化
转换时可启用 FP16/INT8 量化,减少模型体积并加速推理(适合边缘设备)。ONNX 模型默认是 FP32,未经过硬件适配优化。 -
统一部署接口
OpenVINO 的 C++/Python API 直接加载 IR 格式,无需依赖 ONNX 运行时(减少环境复杂度)。
如何转换呢?
为了防止与其他环境冲突,我们在独立 Conda 环境中安装最新版 OpenVINO 并转换模型
1. 创建专用 Conda 环境
conda create -n openvino-test python=3.10 -y # 推荐 Python 3.10
conda activate openvino-test
2. 安装最新版 OpenVINO 开发工具包
pip install --upgrade pip
pip install openvino-dev[onnx] # 不指定版本即安装最新版