rk3568环境配置和推理报错: RKNN_ERR_MALLOC_FAIL(-4) 和 RKNN_ERR_FAIL(-1)

张开发
2026/6/8 14:20:41 15 分钟阅读
rk3568环境配置和推理报错: RKNN_ERR_MALLOC_FAIL(-4) 和 RKNN_ERR_FAIL(-1)
前言最近在部署算法在板子侧遇到的一些问题汇总一下一、版本问题经过测试现在将自己环境配置如下本地linux安装rknn-toolkit2-1.5.0本地Linux使用的miniconda新建的一个python虚拟环境自行网上查找相关方法安装好自己的虚拟环境之后安装所需的依赖包sudoapt-getinstalllibxslt1-dev zlib1g-dev libglib2.0 libsm6 libgl1-mesa-glx libprotobuf-dev gcc将官方的RKNN-Toolkit2库git到linux本地(如果提示没有找到git命令使用sudo apt install git-all安装git工具)gitclone https://github.com/rockchip-linux/rknn-toolkit2进入 Toolkit2 工程文件夹 根据工程的保存路径修改 cd 命令中的路径。cd~/rknn-toolkit2安装必要相应版本的依赖包这里我安装和我自己linux匹配的py3.8版本pip3install-rdoc/requirements_cp38-1.5.0.txt安装 RKNN-Toolkit2Python3.6 for x86_64pip3installpackage/rknn_toolkit2-1.5.01fa95b5c-cp38-cp38-linux_x86_64.whl检查 RKNN-Toolkit2 是否安装成功。 出现这个界面就说明本地linux端的安装已经成功可以运行官方的examples案例检测rknn-toolkit2/examples/onnx/yolov5板子RK3568环境安装git源码到板子上gitclone https://github.com/rockchip-linux/rknn-toolkit2cd./rknn_toolkit_lite2文件结构如下环境安装sudoaptupdate#安装python工具等sudoapt-getinstallpython3-dev python3-pip gcc#安装相关依赖和软件包pip3installwheelsudoapt-getinstall-ypython3-opencvsudoapt-getinstall-ypython3-numpysudoapt-yinstallpython3-setuptoolsToolkit Lite2工具安装# 进入到rknn_toolkit_lite2目录下cdrknn_toolkit_lite2/# ubuntu22 python3.7pip3installpackages/rknn_toolkit_lite2-1.5.0-cp310-cp310m-linux_aarch64.whl检测安装成功python3from rknnlite.apiimportRKNNLite运行官方的demo此时运行一定是在rknn_toolkit_lite2这个文件下找到examples进行运行运行我的demo仓库地址https://gitee.com/wangyoujie11/rk3568_-demoMnist_PC放在本地电脑的linux环境下激活自己的python虚拟环境然后python test.py就可以运行Mnist_rk3568放在板子的linux环境下然后python3 rk3568_test.py就可以运行运行结果分别如下pc端程序里加载的1.pngRK3568板子端程序里加载的7.png---------------------------------------------分割线不定期更新-----------------------------------------问题一在使用RK3568开发板的时候在板子侧部署.rknn模型推理的时候报错 *Exception: RKNN init failed. error code: RKNN_ERR_MALLOC_FAIL*然后查看官方的手册发现报错提示内存分配失败但是没有对应的解决方法只能自己debug了(一杯茶一包烟一个bug找一天…后面发现问题所在我的.onnx模型输出如下有多个输出导致在本地linux下可以运行自己的模型但是在板子上由于资源受限导致板子的内存分配失败。所以解决的办法就是将自己的.onnx模型的输出给减少。https://netron.app/可以将自己的.onnx模型加载看输入输出#原xxx.onnx文件放在onnx文件夹下然后创建一个新的文件夹newonnx用来存放新的.onnx模型#版本说明这里的.onnx模型是在pytorch版本1.6.0~1.10.1直接训练的模型并且在onnx版本在1.7.0~1.10.0之间importonnx modelonnx.load(./onnx/xxx.onnx)nodemodel.graph.output[1]model.graph.output.remove(node)onnx.save(model,./newonnx/xxx.onnx)modelonnx.load(./newonnx/xxx.onnx)foriinrange(1,9):#根据自己要删除的节点设置范围nodemodel.graph.output[1]model.graph.output.remove(node)onnx.save(model,./newonnx/xxx.onnx)经过上面的代码裁剪.onnx模型之后得到这个新的.onnx模型之后就可以由本地Linux运行rknn的对应api将.onnx模型转为.rknn模型然后将.rknn模型在板子上进行推理了。问题二出现这个原因是因为电脑端的rknn-toolkit2版本和板子端的rknn-toolkit2_lite版本的不同必须是相同版本下电脑端导出的rknn模型可以成功运行在板子端

更多文章