You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Raspberry pi4上CNN代码如何接入Intel Neural Compute Stick 2运行

树莓派4接入Intel NCS2实现CNN推理加速方法

先搞懂基本调用逻辑

NCS2是独立的Myriad VPU加速外设,不会直接兼容你原来用PyTorch/TensorFlow写的原生CNN代码,它只运行OpenVINO IR格式的优化模型,完整调用链路是:

  • 将训练好的CNN模型转换为OpenVINO IR格式(含.xml网络结构文件、.bin权重文件)
  • 初始化OpenVINO运行时核心,指定推理设备为MYRIAD(这是NCS2对应的固定设备名,不要写错)
  • 将IR模型加载到NCS2上完成编译,创建推理实例
  • 按照原模型要求完成输入数据预处理,送入NCS2执行推理,取回输出结果做后处理即可
    整个过程中推理计算全部在NCS2上完成,几乎不占用树莓派CPU资源。

前置校验(必做,避免无效调试)

先把NCS2插在树莓派的USB3.0蓝色接口上(插USB2.0会大幅降低推理速度,还容易供电不足),依次执行两条命令确认环境正常:

  1. 检查硬件是否被系统识别
lsusb

输出中包含ID 03e7:2485 Intel Movidius MyriadX即为硬件识别正常。
2. 检查OpenVINO是否能调用NCS2

python3 -c "from openvino.runtime import Core; print(Core().available_devices)"

输出列表中包含MYRIAD即为环境配置正常,可以开始改造代码。

现有代码改造步骤

1. 模型格式转换

不要直接把原生的.pth/.pt/.h5/.pb模型往NCS2上加载,必须先转成IR格式:

  • 如果是PyTorch训练的CNN:先把模型导出为ONNX格式,再用OpenVINO模型优化工具转换
  • 如果是TensorFlow训练的CNN:可以直接把pb文件/SavedModel目录传给模型优化工具转换
    转换命令示例(替换成你自己的模型路径、输入参数即可):
mo --input_model your_cnn.onnx --input_shape [1,3,224,224] --output_dir ./ir_model/

转换完成后会在指定输出目录生成.xml和.bin两个文件,就是NCS2可运行的模型文件。

2. 推理代码替换

你原来代码里的预处理、后处理逻辑完全不用改,只需要把原生框架加载模型、执行推理的部分替换成下面的OpenVINO调用代码即可:

# 导入OpenVINO运行时核心,不需要额外安装NCS2专属SDK
from openvino.runtime import Core
import numpy as np

# 初始化OpenVINO核心
ie = Core()
# 读取转换好的IR模型
model = ie.read_model(model="./ir_model/your_cnn.xml", weights="./ir_model/your_cnn.bin")
# 将模型编译加载到NCS2设备,device_name固定填MYRIAD就是调用NCS2
compiled_model = ie.compile_model(model=model, device_name="MYRIAD")

# 获取模型输入输出节点句柄
input_node = compiled_model.input(0)
output_node = compiled_model.output(0)

# --- 这部分保留你原来的预处理代码即可,比如图像resize、归一化、维度调整 ---
# 最终预处理好的输入要和模型要求的形状、数据类型一致,通常是shape为(1,C,H,W)的float32张量
input_data = your_original_preprocess(raw_input)
# --- 预处理代码结束 ---

# 送入NCS2执行推理,这一步就是硬件加速环节
infer_result = compiled_model([input_data])[output_node]

# --- 这部分保留你原来的后处理代码即可,比如softmax、类别映射、阈值判断 ---
final_output = your_original_postprocess(infer_result)
# --- 后处理代码结束 ---

常见问题排查

  • 设备名不要写错:NCS2对应的设备名固定是MYRIAD,填NCS2/VPU/GPU都会找不到设备
  • 输入数据类型要匹配:绝大多数CNN要求输入是float32类型,直接传uint8图像或者float64张量会报错
  • 加载模型失败大概率是供电问题:树莓派USB口供电不足时NCS2会掉线,换带独立供电的USB3.0 hub即可解决
  • 第一次加载模型时会有3-10秒的模型编译时间,属于正常现象,不是程序卡死,后续推理就会保持稳定速度
  • 如果要对比CPU和NCS2的速度,只需要把compile_model里的device_name改成CPU就行,其他代码完全不用改

内容的提问来源于stack exchange,提问作者Edme W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:24:20