npu openvino yolo 推理
时间: 2025-05-17 19:12:38 浏览: 22
### 如何在 NPU 上使用 OpenVINO 进行 YOLO 模型推理
为了实现基于 NPU 的 OpenVINO 推理流程,以下是详细的说明:
#### 准备工作
1. **安装 OpenVINO 工具包**
首先需要确保设备已正确安装 OpenVINO Toolkit。可以通过官方文档获取支持的操作系统以及对应的安装指南[^2]。
2. **准备硬件环境**
使用支持 NPU 加速的嵌入式平台(如 Intel Movidius 或其他兼容设备),并确认其驱动程序已经正确配置完成。
3. **下载预训练模型**
对于 YOLO 系列模型,可以选择 Ultralytics 提供的标准版本 `yolov8n.pt` 并将其转换为 ONNX 格式以便后续处理[^3]。
#### 转换模型至 Intermediate Representation (IR)
OpenVINO 支持多种框架导出的模型文件作为输入源之一;因此需将 PyTorch 训练得到的结果转化为适合加载的形式——即 IR 文件(.xml 和 .bin)。
```bash
mo --input_model yolov8n.onnx \
--output_dir ./ir_models/FP16 \
--data_type FP16
```
上述命令通过 Model Optimizer 将 ONNX 表达形式映射成内部表示结构的同时还指定了精度参数(FP16),从而优化运行效率同时减少存储需求量。
#### 编写推理脚本
利用 Python API 实现基本功能演示如下所示:
```python
import cv2
from openvino.runtime import Core
def load_image(image_path):
img = cv2.imread(image_path)
h, w = img.shape[:2]
resized_img = cv2.resize(img,(640,640))
input_tensor = cv2.dnn.blobFromImage(resized_img,scalefactor=1./255,size=(640,640),swapRB=True,crop=False)[0].transpose(1,2,0).astype('float32')
return input_tensor,h,w,img,resized_img
ie_core = Core()
model_xml = './ir_models/yolov8.xml'
compiled_model = ie_core.compile_model(model=model_xml, device_name="MYRIAD")
infer_request = compiled_model.create_infer_request()
image_path = 'zidane.jpg'
input_data,height,width,image,resized_image = load_image(image_path)
outputs = infer_request.infer({list(compiled_model.inputs.keys())[0]:input_data})
print(outputs[list(outputs.keys())[-1]].shape)
```
此部分展示了如何读取图片数据、调整大小匹配网络预期尺寸规格之后送入编译好的计算图执行预测操作,并打印最终输出张量形状信息用于验证逻辑正确性。
#### 结果解析与可视化
最后一步是对检测框位置坐标以及其他属性字段加以解码还原到原始分辨率空间内绘制边界矩形标记目标物体类别标签文字描述等内容展示给用户查看效果良好与否评估性能指标等等。
---
阅读全文
相关推荐


















