当前位置: 首页 > news >正文

【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/

下载并解压后,就会看到如下目录:

文件夹内的文件说明:

  1. ​核心文件夹​​:runtime包含OpenVINO核心库(DLL/头文件),python是Python绑定,samples提供示例代码。
  2. ​配置脚本​​:setupvars.bat(CMD)和setupvars.ps1(PowerShell)用于一键配置环境变量,让系统全局识别OpenVINO工具链。
  3. ​文档支持​​:docs文件夹存放官方文档,遇到问题时可直接查阅技术细节。

点击runtime后,就会看到如下目录:

文件解释说明:

  1. ​核心组件​​:bin存放运行所需的DLL文件,lib包含静态链接库,include提供开发用的头文件,三者是OpenVINO运行和开发的核心。

  2. ​扩展支持​​:3rdparty包含第三方依赖库,cmake提供项目构建配置脚本,方便集成到CMake工程。

  3. ​版本信息​​:version.txt记录具体版本号(2025.1.0),用于兼容性检查。

  4. ​使用逻辑​​:开发时需链接libinclude,运行时需将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:​

  1. ​OpenVINO 的专用优化​

    OpenVINO 的推理引擎(Inference Engine)针对 Intel 硬件(CPU/iGPU/VPU)进行了深度优化,直接支持 ​​IR 格式​​(.xml + .bin),能显著提升推理速度。
  2. ​模型压缩与量化​

    转换时可启用 ​​FP16/INT8 量化​​,减少模型体积并加速推理(适合边缘设备)。ONNX 模型默认是 FP32,未经过硬件适配优化。
  3. ​统一部署接口​

    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] # 不指定版本即安装最新版

http://www.xdnf.cn/news/913447.html

相关文章:

  • URL 带有 /../ 导致可以访问其他目录--路径穿越问题
  • SON.stringify()和JSON.parse()之间的转换
  • 优化电脑的磁盘和驱动器提高电脑性能和延长硬盘寿命?
  • Unity3D仿星露谷物语开发60之定制角色其他部位
  • Jpackage
  • 信号电压高,传输稳定性变强,但是传输速率下降?
  • Window Server 2019--11 虚拟专用网络
  • 软件测试python学习
  • 第十届电子技术和信息科学国际学术会议(ICETIS 2025)
  • 如何选择正确的团队交互模式:协作、服务还是促进?
  • 【普及+/提高】洛谷P2114 ——[NOI2014] 起床困难综合症
  • 耦合和内聚
  • BECKHOFF(倍福)PLC --北尔HMI ADS Symbolc 通讯
  • 电动螺丝刀-多实体拆图建模案例
  • 全球数控金属切削机床市场:现状、趋势与应对策略
  • # 从底层架构到应用实践:为何部分大模型在越狱攻击下失守?
  • 2025/6/6—halcon知识点总结
  • 高精度加减乘除
  • 艾体宝案例丨Transavia如何借助LambdaTest测试平台高效起飞?
  • 阿里联合上海AI Lab提出DMM!多个模型压缩成一个通用T2I模型!可控任意风格生成!
  • PSpice软件快速入门系列--08.如何进行PSpice AA灵敏度分析
  • 轻松备份和恢复 Android 系统 | 4 种解决方案
  • 【Linux】ls 命令详解及使用示例:列出目录中的内容
  • 【动手学MCP从0到1】2.5 MCP中的Context日志输出、进度汇报和服务端调用客户端的大模型项目实现步骤详解
  • MultipartFile
  • Date类型时间比较
  • 亚马逊跨境:亚马逊优惠券新规和促销机制大改后的定价策略
  • 代驾数据库
  • ISO 26262-6
  • 箭头函数和普通函数的区别?