香橙派rk3588plus部署yolov8(npu加速)
文件,查看模型的计算图结构,RK3588 通常使用的是支持 ONNX 的推理框架,比如 TNN、MNN、NCNN 等,这些框架对 ONNX 的 opset 版本有支持要求,如果模型的 opset 版本过高,可能不被支持,导致转换或运行失败,所以需要确保 opset 版本在目标框架支持的范围内,选择老一点的版本更加稳妥,参考着使用 torch.onnx.export 的 opset_version
一、环境配置
balenaEtcher先下载,卡和读卡器一定要有,照官方给的步骤来安装自己所需要的系统,没什么好说的
再去github找到rknn-toolkit2,先保存到电脑中
插卡,网卡自备,另需hdmi数据线和显示器,只有笔记本的买个hdmi转usb,下载obs,怎么进入输出通道自行搜索教程,键盘和鼠标也要,然后上电
网络连接(没网线的,手机开热点给电脑,电脑再开热点得到派的IP,去网络设置的热点中复制IP),网络设置中要勾选保存网络
二、vnc/ssh配置
vnc
路线:VNC查看器(PC端)——IP地址连接——VNC服务器(香橙派端)
任务:
1)香橙派 RK3588 默认没有开启 VNC 服务器,需手动开启
菜单栏→Settings→系统设置→找到远程桌面Remote Desktop ,将 “启用远程桌面”(Enable Remote Desktop )的开关打开。
2)打开终端,桌面空白处右键单击Open in Terminal (Ctrl + Alt + T ),在终端中输入sudo apt update ,然后按下回车键,安装 VNC 服务器软件(比如,sudo apt install tightvncserver,回车)
3)启动 VNC 服务器,在终端中输入vncserver :1 (这里的:1表示第一个 VNC 显示端口,可按需调整 )回车,再次启动后vnc需要设置用户密码
4)安装VNC查看器(PC端),Putty、TigerVNC(官方的网址为:https://tigervnc.org/)工具等等按需下载

然后输入你设置的用户账号密码,sudo orangepi-config,选第三个(注意用的上下箭头操作)

vnc

这样就能进入香橙派桌面了
ssh
这里我使用的ssh连接器是MobaXterm,配置简单,同样让派先连上热点获取到IP,具体使用上b站搜索

三、yolov8.pt转.onnx(其他作者文章很细致了,如果模型做过魔改,先试试能不能成功)
失败了的话,下载并安装 Netron,拖入生成的 .onnx 文件,查看模型的计算图结构,RK3588 通常使用的是支持 ONNX 的推理框架,比如 TNN、MNN、NCNN 等,这些框架对 ONNX 的 opset 版本有支持要求,如果模型的 opset 版本过高,可能不被支持,导致转换或运行失败,所以需要确保 opset 版本在目标框架支持的范围内,选择老一点的版本更加稳妥,参考着使用 torch.onnx.export 的 opset_version 参数。
处理 opset 版本:在使用 PyTorch 导出 ONNX 时,通过 opset_version 参数指定兼容目标框架的版本
torch.onnx.export(
model,
input_tensor,
"model.onnx",
opset_version=12, # 编辑指定opset版本
input_names=["input"],
output_names=["output"]
)
四、将 ONNX 模型转换为 RK3588 NPU 支持的格式
步骤:1. 安装 rknn-toolkit2;2. 转换 ONNX 到 RKN,写转换脚本;3. 安装依赖;4. 放置文件并运行。
1.配置 NPU 加速环境
终端下载,复制粘贴下面两条指令
git clone https://github.com/rockchip-linux/rknn-toolkit2.git
回车
git checkout v1.4.0 # 按实际需求选版本
如果失败了,去找到之前github下载的文件包解压,上传打开该文件夹,在此文件中运行终端
2.将 ONNX 模型转为 RK3588 NPU 支持的格式.rknn
写入脚本,去找个靠谱的ai问清楚各行代码起到什么作用
import rknn.api
# 初始化RKNNToolkit
rknn = rknn.api.RKNN()
# 配置模型输入
input_size_list = [320] # 按YOLOv8实际输入尺寸调整
config = {'mean_values': [[0, 0, 0]], 'std_values': [[255, 255, 255]], 'input_size_list': [input_size_list]}
rknn.config(**config)
# 加载ONNX模型
onnx_model_path = 'yolov8.onnx' # 替换为你的ONNX路径
rknn.load_onnx(model=onnx_model_path)
# 构建模型
rknn.build(do_quantization=True, dataset='dataset.txt') # 若量化需准备数据集文本
# 导出RKN模型
rknn.export_rknn('yolov8.rknn') # 生成NPU可用模型
rknn.release()
再运行脚本python 你的命名.py
3. 安装依赖库
激活虚拟环境
这里看个人是否有conda有activate用到py37,环境不多做解释了,需要了解还是翻官网手册更好
conda activate py37
安装依赖
pip install opencv - python -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyserial
pip install --upgrade pip
4. 准备推理脚本并运行
编写推理脚本(detect.py,根据yolov8网络结构做修改)
import cv2
import rknn.api
#只是模板一部分而已
# 初始化RKNNToolkit并加载模型
rknn = rknn.api.RKNN()
rknn.load_rknn('yolov8.rknn')
# 'yolov8.rknn'替换为实际路径!!!不确定的,去cp再拷一份进去,记得放绝对路径中更好找到
rknn.init_runtime()
# 读取图像并预处理
img = cv2.imread('test.jpg') # 替换为摄像头输入或图像路径,摄像头通道获取另说
img = cv2.resize(img, (640, 640)) # 按模型输入调整尺寸
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
output = rknn.inference(inputs=[img])
# 然后处理输出(需按YOLOv8输出格式解析,如解码边界框、置信度等)不会改有ai能问
rknn.release()
然后将yolov8.rknn和detect.py放到香橙派home或者什么地方中自行定义,运行
python detect.py
我后续会整理出来一些报错清单及解决措施,可持续关注,文章大致完整但缺少截图细节,后续一并补充,感谢阅读。
![]()
更多推荐
所有评论(0)