迅为RK3588在 Linux 系统中使用 NPU

news2025/2/26 1:16:02

下载 rknpu2 并拷贝到虚拟机 Ubuntu,RKNPU2 提供了访问 rk3588 芯片 NPU的高级接口。

下载地址为“iTOP-3588 开发板\02_【iTOP-RK3588 开发板】开发资料\12_NPU 使用配套资料\01_rknpu2 工具” 对于 RK3588 来说,Linux 平台 RKNN SDK 库文件为 librknnrt.so, RK3588 平台 RKNN SDK 包含了 API 使用示例程序、NPU 运行库、服务程序、文档。

 

服务程序称为 rknn_server,是在开发板上常驻的服务进程,用于连板推理。在 RKNN SDK 中提供了 Linux 平台的 MobileNet 图像分类、SSD 目标检测、YOLOv5 目标检测示例。这些Demo 能够为客户基于 RKNN SDK 开发自己的 AI 应用提供参考。

在 rknpu2/examples 中还有很多其他例子,下面以 rknpu2/examples 下的 rknn_yolov5_demo 在 RK3588 Linux 64 位平台(buildroot 系统)上运行为例,来讲解如何快速上手运行。整体思路分为三步:

1 在虚拟机Ubuntu20.04上交叉编译 demo程序 rknn_yolov5_demo(demo已经默认是rknn, 无需进行模型转换)

2 部署到 iTOP-RK3588 开发板

3 在开发板上运行 demo

设置交叉编译器

1 安装 gcc 交叉编译器,编译器下载地址是网盘资料“iTOP-3588 开发板\02_【

iTOP-RK3588 开发板】开发资料\12_NPU 使用配套资料\03_编译所需工具\Linux”。

拷贝 gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.gz 到 Ubuntu 的/opt/tool_chain 目录下,这里拷贝的路径要和作者保持一致,后面要用到交叉编译器的绝对路径。

2 解压交叉编译器压缩包

tar -vxf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.gz 解压完成后备用!

修改编译工具路径

1 因为此章节以 rknn_yolov5_demo 在 RK3588 Linux 64 位平台上运行为例,所以修改

examples/rknn_yolov5_demo/build-XXX.sh 的编译工具路径,

2 修改 build-linux_RK3588.sh 文件,将 TOOL_CHAIN 修改为

gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu 的解压路径并保存修改文件,

TOOL_CHAIN=/opt/tool_chain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu

GCC_COMPILER=$TOOL_CHAIN/bin/aarch64-none-linux-gnu

更新 RKNN 模型

RKNN 是 Rockchip NPU 平台(也就是开发板)使用的模型类型,是以.rknn 结尾的模型文件。

RKNN SDK 提 供 的 demo 程 序 中 默 认 自 带 了 RKNN 模 型 , 在 RKNN SDK 的

examples/rknn_yolov5_demo/model/RK3588/目录下,

如使用自己的模型需要转换成 rknn 模型,转换方法可以参考第 5 章节。

在得到 RKNN 模型之后,demo 程序使用 C 接口在 RK3588 平台开发应用,

3.1.4 编译 demo

1 在终端命令窗口进入 rknn_yolov5_demo 文件夹,输入以下命令:

cd examples/rknn_yolov5_demo/

2 运行 build-linux_RK3588.sh 脚本编译程序

./build-linux_RK3588.sh

3 编译完成之后,编译好的程序一般放在 install 目录

4 网 盘 中 也 提 供 了 编 译 好 的 Demo , 可 以 在 网 盘 资 料 资 料 “iTOP-3588 开 发 板 \02_ 【iTOP-RK3588 开发板】开发资料\12_NPU 使用配套资料\02_NPU demo\Linux”下载。

开发板运行 demo

1 通过 U 盘拷贝 RKNPU2 工具中的 runtime/RK3588/Linux/librknn_api/aarch64/目录下的文件到开发板的/usr/lib 目录下。

2 把编译好的程序 rknn_yolov5_demo_Linux 通过 U 盘拷贝到开发板的根目录上,开发板上要 烧写 linux 系统(buildroot)。

3 设置库文件的路径,输入以下命令:

export LD_LIBRARY_PATH=./lib

4 进入程序所在的目录,输入以下命令:

cd /rknn_yolov5_demo_Linux

5 运行程序来识别相应的图片中物体,输入以下命令:

./rknn_yolov5_demo ./model/RK3588/yolov5s-640-640.rknn ./model/bus.jpg

6 运行完生成结果图片 out.jpg,

7 拷贝生成的 out.jpg 到 U 盘中,

8 在 windows 下查看 out.jpg,

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/990764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云原生Kubernetes:pod基础

目录 一、理论 1.pod 2.pod容器分类 3.镜像拉取策略(image PullPolicy) 二、实验 1.Pod容器的分类 2.镜像拉取策略 三、问题 1.apiVersion 报错 2.pod v1版本资源未注册 3.取行显示指定pod信息 四、总结 一、理论 1.pod (1) 概念 Pod是ku…

使用Pyarmor保护Python脚本不被反向工程

Python可读性强,使用广泛。虽然这种可读性有利于协作,但也增加了未授权访问和滥用的风险。如果未采取适当的保护,竞争对手或恶意攻击者可以复制您的算法和专有逻辑,这将对您软件的完整性和用户的信任产生负面影响。 实施可靠的安…

Stable Diffusion stable-diffusion-webui ControlNet Lora

Stable Diffusion Stable Diffusion用来文字生成图片,ControlNet就是用来控制构图的,LoRA就是用来控制风格的 。 stable-diffusion-webui 国内加速官网: mirrors / AUTOMATIC1111 / stable-diffusion-webui GitCode 安装参考&#xff1a…

【canal系】canal集群异常Could not find first log file name in binary log index file

这里先说明下这边使用的canal版本号为1.1.5 在描述这个问题之前,首先需要简单对于canal架构有个基本的了解 canal工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议MySQL master 收到 dum…

const的值可不可以被更改

总结: 当const定义的常量是基本数据类型的时候不可以被更改 当const定义的常量是基本数据类型的时候不可以被更改 const定义的常量实际上是栈内存地址中的保存的值,const常量的值不可以被更改就是栈内存中保存的数据不可以被更改。基本数据类型直接存储在…

ARM+Codesys runtime核心板+底板解决方案

产品特点: 丰富的通讯接口,满足多种场合控制和通讯需求 四核工业级处理器,高性能,低功耗,高可靠性 机身无风扇设计,外壳小巧 搭载内核 100% 自主化大型实时操作系统 SylixOS,支持 POSIX …

如何在 Ubuntu 上安装 Nagios?

Nagios 的功能 Nagios 的一些关键功能包括: 主机和服务监控: Nagios 允许您使用提供实时状态数据的插件来监控主机(可以是物理机或虚拟机)以及 HTTP、SSH 和 SMTP 等服务。此功能使您能够全面了解整个基础设施的运行状况和可用性…

Mac版本破解Typora,解决Mac安装软件的“已损坏,无法打开。 您应该将它移到废纸篓”问题

一、修改配置文件 首先去官网选择mac版本下载安装 typora下载 然后打开typora包内容找到 /Applications/Typora.app/Contents/Resources/TypeMark/ 编辑器打开上面文件夹,这里我拉到vscode 找到page-dist/static/js/Licen..如下图 输入 hasActivated"…

Main()函数的前世今生

在开始分析程序之前,我们第一个要解决的问题,就是如何定位到main函数,想要从二进制逆向的角度分析出main函数,就必须要了解正向的代码下main函数的所有的细节和特 征。毕竟逆向的本质就是正向。 调用main()堆栈 样例代码 #incl…

【云原生】Kubeadmin安装k8s集群

目录 前言: 一 环境部署 1.1 服务器部署功能 1.2 环境准备(所有节点) 二 安装docker(所有节点) 三 所有节点安装kubeadm,kubelet和kubectl 3.1 定义kubernetes源 3.2 开机自启kubelet 四 部署K8S集…

ipad协议最新版

个人微信号的二次开发可以包括但不限于以下方面: 自定义菜单:根据个人需求设置自定义,方便快速访问常用功能或链接。 消息管理:通过开发接口,实现消息的自动回复、关键词匹配等功能,提供更好的用户体验。…

国产SSD的0e可靠性问题如何解决?

最近有粉丝在后台私信询问过程NAND的0e问题,觉得有必要跟大家聊聊小编的一些看法和SSD选购相关的注意事项。 说实话,小编看到0e这个词还一时间还有点恍惚了,0e是啥,我还搜索了一下,发现还挺多的。主要是长江存储和三星的词条。 点开才发现,原来0e是Media Error啊,恕我孤…

软件测试:黑盒测试用例的四种设计方法

一、输入域测试用例设计方法 输入域测试法是一种综合考虑了等价类划分、边界值分析等方法的综合方法,针对输入域测试法中可能出现的各种情况,输入域测试法主要考虑三个方面:  (1)极端测试(ExtremalTesting),要求在输入域中选择测…

【计算机基础知识10】解析黑窗口CMD:认识CMD及常见命令

目录 一、前言 二、CMD的基本知识 三、CMD常见命令分类 1. 文件和目录管理命令 1.1 列出文件和目录:dir 1.2 创建目录:mkdir 1.3 删除目录:rmdir 1.4 复制文件或目录:copy 1.5 移动文件或目录:move 2. 系统信…

容器编排学习(七)控制器介绍与使用

一 控制器 控制器是 k8s内置的管理工具。可以帮助用户实现 Pod的自动部署、自维护、扩容、滚动更新等功能的自动化程序。 为什么要使用控制器? 有大量的 Pod需要维护管理需要维护 Pod的健康状态控制器可以像机器人一样可以替用户完成维护管理的工作 二 Deployment 1 概…

爬虫逆向实战(31)-某花顺行情中心(cookie、补环境)

一、数据接口分析 主页地址:某花顺 1、抓包 通过抓包可以发现数据接口是/page/2/ajax/1/ 2、判断是否有加密参数 请求参数是否加密? 无请求头是否加密? 通过查看“标头”可以发现有一个Hexin-V加密参数,但是这个参数的值与c…

搭建自己的OCR服务,第二步:PaddleOCR环境安装

PaddleOCR环境安装,遇到了很多问题,根据系统不同问题也不同,不要盲目看别人的教程,有的教程也过时了,根据实际情况自己调整。 我这边目前是使用windows 10系统CPU python 3.7 搭建。 熟悉OCR的人应该知道&#xff0…

PostgresSQL----基于Kubernetes部署PostgresSQL

【PostgresSQL----基于Kubernetes部署PostgresSQL】 文章目录 一、创建SC、PV和PVC存储对象1.1 准备一个nfs服务器1.2 编写SC、PV、PVC等存储资源文件1.3 编写部署PostgresSQL数据库的资源声明文件 二、部署PostgresSQL2.1 部署 PV、PVC等存储对象2.2 部署PostgresSQL数据库2.3…

SpringMVC之前端增删改查实现

SpringMVC是一个基于MVC架构的框架&#xff0c;它可以帮助我们实现前后端的分离&#xff0c;同时也能很好地支持前端的增删改查操作。 配置 Cloudjun <?xml version"1.0" encoding"UTF-8" ?><taglib xmlns"http://java.sun.com/xml/ns/j…

Spring 家族框架常用注解

反射相关 Target Spring核心注解&#xff0c;指定自定义注解MyAnno可以应用到的java类型,从而提供编译时的类型检查和错误检测 指定类型时用枚举类ElementType下的具体枚举值&#xff0c;包括&#xff1a;ElementType.TYPE&#xff1a;表示MyAnno适用于类、接口、枚举。Eleme…