rk3568环境配置和推理报错: RKNN_ERR_MALLOC_FAIL

news/2024/5/19 13:08:58 标签: 深度学习, 人工智能, 边缘计算

前言
最近在部署算法在板子侧遇到的一些问题汇总一下:

一、版本问题

经过测试现在将自己环境配置如下:在这里插入图片描述
在这里插入图片描述

本地linux安装rknn-toolkit2-1.5.0

  1. 本地Linux使用的miniconda新建的一个python虚拟环境(自行网上查找相关方法)
    在这里插入图片描述
  2. 安装好自己的虚拟环境之后:安装所需的依赖包
 sudo apt-get install libxslt1-dev zlib1g-dev libglib2.0 libsm6 libgl1-mesa-glx libprotobuf-dev gcc 
  1. 将官方的RKNN-Toolkit2库git到linux本地:(如果提示没有找到git命令,使用:sudo apt install git-all安装git工具)
 git clone https://github.com/rockchip-linux/rknn-toolkit2

在这里插入图片描述

  1. 进入 Toolkit2 工程文件夹, 根据工程的保存路径修改 cd 命令中的路径。
cd ~/rknn-toolkit2
  1. 安装必要相应版本的依赖包(这里我安装和我自己linux匹配的py3.8版本)
 pip3 install -r doc/requirements_cp38-1.5.0 
  1. 安装 RKNN-Toolkit2(Python3.6 for x86_64)
 pip3 install package/rknn_toolkit2-1.5.0+1fa95b5c-cp38-cp38-linux_x86_64
  1. 检查 RKNN-Toolkit2 是否安装成功。 出现这个界面,就说明本地linux端的安装已经成功,
    在这里插入图片描述
  2. 可以运行官方的examples案例检测:rknn-toolkit2/examples/onnx/yolov5
    在这里插入图片描述

板子RK3568环境安装

  1. git源码到板子上
git clone https://github.com/rockchip-linux/rknn-toolkit2
cd ./rknn_toolkit_lite2

文件结构如下:
在这里插入图片描述

  1. 环境安装
 sudo apt update
#安装python工具等
sudo apt-get install python3-dev python3-pip gcc
#安装相关依赖和软件包
pip3 install wheel
sudo apt-get install -y python3-opencv
sudo apt-get install -y python3-numpy
sudo apt -y install python3-setuptools
  1. Toolkit Lite2工具安装:
# 进入到rknn_toolkit_lite2目录下,
cd rknn_toolkit_lite2/
# ubuntu22 python3.7
pip3 install packages/rknn_toolkit_lite2-1.5.0-cp310-cp310m-linux_aarch64.whl
  1. 检测安装成功
python3
>>> from rknnlite.api import RKNNLite
>>>
  1. 运行官方的demo
    此时运行一定是在rknn_toolkit_lite2这个文件下找到examples进行运行:

运行我的demo:仓库地址:https://gitee.com/wangyoujie11/rk3568_-demo
在这里插入图片描述
Mnist_PC放在本地电脑的linux环境下,激活自己的python虚拟环境,然后python test.py就可以运行
Mnist_rk3568放在板子的linux环境下,然后python3 rk3568_test.py就可以运行
运行结果分别如下:
pc端(程序里加载的1.png):
在这里插入图片描述
RK3568板子端(程序里加载的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之间
import onnx
model = onnx.load('./onnx/xxx.onnx')
node = model.graph.output[1]
model.graph.output.remove(node)
onnx.save(model, './newonnx/xxx.onnx')

model = onnx.load('./newonnx/xxx.onnx')
for i in range(1,9): #根据自己要删除的节点设置范围
    node = model.graph.output[1]
    model.graph.output.remove(node)
    onnx.save(model, './newonnx/xxx.onnx')

在这里插入图片描述
经过上面的代码裁剪.onnx模型之后
在这里插入图片描述
得到这个新的.onnx模型之后,就可以由本地Linux运行rknn的对应api将.onnx模型转为.rknn模型,然后将.rknn模型在板子上进行推理了。


http://www.niftyadmin.cn/n/5038659.html

相关文章

ETLCloud助力富勒TMS实现物流数仓同步

富勒TMS提供了多种运输管理业务的解决方案,极大的方便了企业对物流的管理和人力输出,同时提供了大量的API接口,供用户做数据集成和数仓同步。 通过富勒TMS中心,第三方开发者和商家可实现以下功能: MS系统数据同步&…

React 窗口防抖

假如有这种需求&#xff1a;浏览器的窗口不断缩小变大&#xff0c;此时页面的布局不会自动刷新&#xff0c;需要手动刷新页面才会自适应大小。此时我们立马就会想到使用windows的onresize方法 window.onresize ()>{// 重新渲染画面root.render(<App/>) }但是新的问题…

【网络安全】网络攻击的类型有哪些?

对网络的攻击大致可以分为两类&#xff1a;服务供给和非服务攻击。从攻击的手段可以分为8类&#xff1a;系统入侵类攻击、缓冲区溢出类攻击、欺骗类攻击、拒绝服务类攻击、防火墙攻击、病毒类攻击、木马类攻击与后门攻击。 服务类攻击&#xff08;Application Dependent Attrac…

debian12下执行 go build test.go 使得目标机器debian11不依赖特定的GLCIBC版本 --chatGPT

gpt: 要确保在 Debian 12 上构建的 Go 可执行文件在 Debian 11 上不依赖于特定的 GLIBC 版本&#xff0c;可以使用 Go 的交叉编译和静态链接功能。这将确保生成的可执行文件包含所需的所有库&#xff0c;而不依赖于目标机器上的 GLIBC 版本。 以下是在 Debian 12 上执行此操作…

007 数据结构_堆——“C”

前言 本文将会向您介绍关于堆Heap的实现 具体步骤 tips&#xff1a;本文具体步骤的顺序并不是源代码的顺序 typedef int HPDataType; typedef struct Heap {HPDataType* _a;int _size;int _capacity; }Heap;初始化 void HeapCreate(Heap* hp, HPDataType* a, int n) {hp-&…

Kafka 源码分析——Consumer

文章目录 前言Consumer 消费流程Consumer初始化如何选举Consumer Leader消费者分区策略Consumer拉取数据提交偏移量 前言 当生产者将消息发送到Broker时&#xff0c;这些消息将被存储在磁盘上。消费者是如何消费这些消息呢&#xff1f; Consumer 消费流程 站在源码的核心角度…

Wi-Fi7将带来前所未有的快捷、稳定的互联网,更快的传输速度

随着科技的飞速发展&#xff0c;无线连接技术也日渐成熟与先进。Wi-Fi&#xff0c;作为我们日常生活和工作中不可或缺的一部分&#xff0c;也正在迎来技术的革新。我们将有机会见识到新一代的Wi-Fi技术&#xff0d;&#xff0d;Wi-Fi 7&#xff0c;它将带来前所未有的快捷、稳定…

什么是异步编程?解释异步编程的优势和实现方式

1、什么是异步编程&#xff1f;解释异步编程的优势和实现方式。 异步编程是一种编程模型&#xff0c;它将程序中的计算任务分成独立的阶段&#xff0c;并在每个阶段完成后立即返回结果。异步编程模型通常用于处理长时间运行的任务&#xff0c;例如网络请求、IO操作等&#xff…