OpenVINO 上手指南:10 分钟在 CPU 上跑通图像分类推理
2026/9/16 11:42:32 网站建设 项目流程

OpenVINO 上手指南:10 分钟在 CPU 上跑通图像分类推理

【免费下载链接】openvinoOpenVINO™ is an open source toolkit for optimizing and deploying AI inference项目地址: https://gitcode.com/GitHub_Trending/op/openvino

手头已有一个训练好的分类模型,想在没有 GPU 的办公电脑上又快又稳地跑起来,该怎么办?本文以一台 Ubuntu 机器为场地,带你从源码编译 OpenVINO Runtime 开始,把一张图片送进推理管线,拿到可读的分类结果。读完并动手后,你可以验证三件事:完整构建出 OpenVINO 运行时;用一条命令把 ONNX 模型转成 IR 格式;运行仓库自带示例并看到 Top-10 分类得分。

项目速览

OpenVINO 是 Intel 开源的深度学习推理优化工具包,定位很直接:接住你在 PyTorch、ONNX、TensorFlow 等框架里导出的模型,为目标硬件做图优化与代码生成,让模型脱离原训练框架独立运行。核心特性:

  • 📥多框架模型接入:PyTorch、TensorFlow、ONNX、PaddlePaddle、JAX 的模型均可转换或直接加载
  • 🧩多设备调度:同一个模型仅凭一个设备名参数即可在 CPU、Intel GPU、NPU 间切换
  • 🐍多语言 API:Python、C++、C、JavaScript 都有绑定,部署形态自由选择
  • 📦轻量部署:目标机上无需安装任何原训练框架,只依赖 OpenVINO 运行时

项目形态与更多介绍见 README。

动手前:环境检查与依赖安装

先对照这张表确认机器条件(数据来自官方构建文档):

检查项最低要求
操作系统Ubuntu 18.04 / 20.04(64 位),或 RHEL 8.2(64 位)
CMake3.26 及以上
GCC7.5 及以上
Python3.9–3.12(仅构建 Python API 时需要)
Intel GPU 驱动可选,需安装 OpenCL 计算运行时才能用核显推理

确认无误后,最简安装分两步。第一步:克隆仓库、初始化子模块并安装系统依赖:

git clone https://gitcode.com/GitHub_Trending/op/openvino cd openvino git submodule update --init --recursive sudo ./install_build_dependencies.sh

第二步:创建构建目录并编译。完整说明见 Linux 编译文档。

mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build . --parallel 8

低配机器建议把--parallel调小,避免内存被打满导致构建卡死。编译产物会落在build目录及仓库根下的binlib中。

跑通第一个示例:图像分类样例

仓库自带一个端到端样例 samples/python/hello_classification/,它把"读模型→推理→出结果"串成一条命令。

准备输入

需要两个文件:一个图像分类模型(.onnx或 IR 格式.xml/.bin均可)和一张图片,比如一张猫的照片。模型可以直接用 PyTorch 导出的 ONNX 文件,无需先转换——样例两种格式都认。

发生了什么:这一步只准备"原料",图片尺寸不必和模型输入一致,样例内部会自动缩放。

运行命令

python samples/python/hello_classification/hello_classification.py \ resnet50.xml cat.jpg CPU

发生了什么:脚本内部创建ov.Core对象,读取模型并编译到CPU设备;第三个参数换成别的设备名即可切换硬件。

解读输出

控制台会打印一张 Top-10 表格,每行是class_id与对应的probability

发生了什么:推理输出的概率向量被展平后按降序排列,得分最高的类别 ID 就是模型认为这张图片最像的东西。

如果想自己写而不是调样例,核心流程只有这几行(图片需与模型输入尺寸一致,或参照样例用 PrePostProcessor 做缩放):

import cv2 import numpy as np import openvino as ov core = ov.Core() model = core.read_model("resnet50.xml") compiled = core.compile_model(model, "CPU") image = np.expand_dims(cv2.imread("cat.jpg"), 0) print(next(iter(compiled.infer_new_request({0: image}).values())))

关键机制拆解

前端:把 ONNX 变成统一中间格式

  • 输入:一个.onnx文件
  • 处理:src/frontends/onnx/ 中的源码沿计算图逐节点行走,把每个 ONNX 算子映射成 OpenVINO 内部的算子表示,同时把权重数据抽出
  • 输出:OpenVINO 模型对象(IR 格式:.xml描述图结构,.bin存放权重),交给运行时编译

仓库里的ovc转换工具封装的正是这条链路,一条命令即可完成转换,源码见 tools/ovc/:

ovc model.onnx

运行时:从模型对象到 CPU 可执行程序

  • 输入:IR 模型 + 目标设备名
  • 处理:src/core/ 负责加载、编译调度等核心流程;src/plugins/intel_cpu/ 这类设备插件则做图变换、算子融合与针对 CPU 指令集的代码生成
  • 输出:可直接调用的 compiled model,调用infer_new_request即返回推理结果

整条链路的分层设计,可对照 架构文档 阅读,它会解释前端、核心、插件三层各管什么。

常见问题排错

Q1:cmake --build报缺文件,或构建中途长时间无响应?

原因:系统构建依赖未装全,或子模块没有初始化;另一种情况是并行度过高把资源耗尽。 解法:先回到上一步确认git submodule update --init --recursivesudo ./install_build_dependencies.sh都执行过,再用较低的--parallel数值重试。

Q2:源码编译成功后,import openvino却报 ModuleNotFoundError?

原因:源码构建的 Python 绑定不在默认搜索路径里。 解法:把构建产物目录加入环境变量,PYTHONPATH指向bin/intel64/Release/pythonLD_LIBRARY_PATH指向bin/intel64/Release,具体路径与 wheel 安装方式见 编译文档的 Python API 章节。

Q3:core.available_devices里只有 CPU,看不到 GPU?

原因:机器缺少 Intel GPU 的 OpenCL 驱动,或本机根本不是 Intel 核显。 解法:安装 Intel Graphics Compute Runtime for OpenCL Driver 后重启进程再查;若硬件不支持,仅用 CPU 属于正常现象。

下一步学习路线

跑通推理只是起点,按兴趣挑一条线深入即可:

  • 模型优化:阅读 NNCF 量化指南,把 FP32 模型压到 INT8,看推理速度能提多少
  • 性能测量:用 benchmark 工具 一条命令拿到延迟与吞吐数据,为优化提供依据
  • 生成式模型:参考 生成式 AI 工作流文档,把 LLM 也部署到本地硬件
  • Physical AI:把模型装进机器人策略,仓库用 Rerun 工具做逐帧可视化,可直观看到每一帧的数据流与推理时间线:

更多场景与示例见 Physical AI 文档。

从源码构建到第一张图的推理结果,整条链路你已经完整走过一遍:编译得到运行时、转换得到 IR、一行命令得到得分。接下来只需把命令里的模型路径和设备名换成你自己的,这套流程就是现成的部署骨架。

【免费下载链接】openvinoOpenVINO™ is an open source toolkit for optimizing and deploying AI inference项目地址: https://gitcode.com/GitHub_Trending/op/openvino

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询