Radxa Rock 3a NPU调用指南

2023-11-19

0x0 Radxa Rock 3a开发板介绍

Radxa Rock 3a开发板是基于瑞芯微RK3568芯片设计的,ARM CPU采用4核Cortex-A55(Cortex-A53的继任者),主频最高可达2.0Ghz,CPU性能相当于中高端手机的小核性能。相比于RK3399, 树莓派4B这种采用了Cortex-A72大核CPU平台,RK3568的Cortex-A55这种虽然是小核CPU架构,但是由于主频高,性能不会逊色太多,在加上对于ARMV8.2的支持,原生支持半精度计算,在AI推理性能要略微强上一截。而在散热功耗控制上,RK3568由于采用了小核架构要比RK3399树莓派4B更有优势。

以下是基于NCNN推理框架运行MobileNetV2网络的速度测试基准:

min max avg
RK3568 35.75ms 36.09ms 35.88ms
RK3399 51.30ms 52.18ms 51.75ms
树莓派4B 72.26ms 73.16ms 72.62ms

RK3568在CPU的AI推理性能还是很强的!!!

其实基于RK3568的Radxa Rock 3a有个非常大的优势,就是太TM便宜的,某宝269RMB就可以入手,相比于RK3399和树莓派4B在价格上有太大优势了!!!

放一张Radxa Rock 3a的照片:

官方介绍​wiki.radxa.com/Rock3/3a

0x1 simple-rknn2傻瓜式调用rk npu

上篇讲了,Radxa Rock 3a上面搭载的那颗RK3568很强,但是不要忘了,它还有个0.8T的NPU,虽然指标算力看起来很低,但是应该也是比CPU强一些的。基于RK3568的NPU开发,是要基于瑞芯微官方提供的rknn-toolkit2以及rknpu2rknn-toolkit2主要是神经网络模型的量化及模型转换,把模型转换为.rknn的格式,rknpu2主要是提供调用NPU的API接口函数,这两个在瑞芯微的Github都有提供,下面是链接

rknpu2​github.com/rockchip-linux/rknpu2

GitHub - rockchip-linux/rknn-toolkit2​github.com/rockchip-linux/rknn-toolkit2正在上传…重新上传取消

建议大家还是要看完官方文档,在./doc目录下

那么当我们通过rknn-toolkit2工具把模型转换为.rknn的格式后,我们具体该怎么在NPU上进行推理呢?我这边就给大家造了个轮子,方便大家傻瓜式调用,就是simple-rknn2,它不光支持RK3568的NPU调用,也支持RK3588的NPU,操作系统支持Linux和Android,链接在下面:

https://github.com/dog-qiuqiu/simple-rknn2​github.com/dog-qiuqiu/simple-rknn2

基于它调用NPU,到底有多傻瓜呢,总共也就两个函数: LoadModel():加载模型 Forward()模型推理;

是不是很简洁,其实也就是基于官方rknpu2的NPU调用API接口进行二次封装,方便在大家不了解NPU调用API的情况下也能方便调用NPU进行.rknn模型的推理,降低大家NPU入门开发成本,simple-rknn2具体的使用流程可以参考GitHub上的README

0x2 NPU调用示例

那么我们基于simple-rknn2提供的MobileNetv2的demo,在Radxa Rock 3a实际运行测试一下吧,看看运行速度相比于CPU有多快。注意下Radxa Rock 3a我采用的Ubuntu20镜像(debian镜像调用rga会报glibc版本错误),下面是我烧录的系统镜像链接:

链接:

https://pan.baidu.com/s/1WWmAanwOc8-D1lFpT3zOyQ​pan.baidu.com/s/1WWmAanwOc8-D1lFpT3zOyQ

提取码: 28qc

按照下面GitHub README链接的步骤进行simple-rknn2的编译以及demo执行文件的编译

https://github.com/dog-qiuqiu/simple-rknn2#run-demo​github.com/dog-qiuqiu/simple-rknn2#run-demo

编译完成生成可执行文件后,我们实际运行跑一下:

root@rock-3a:/home/rock/npu# ./mobilenetv2 mobilenetv2_3568.rknn 
Load model:mobilenetv2_3568.rknn
sdk version: 1.2.0 (9db21b35d@2022-01-14T15:16:23) driver version: 0.4.2
model input num: 1, output num: 1
  index=0, name=data, n_dims=4, dims=[1, 224, 224, 3], n_elems=150528, size=602112, fmt=NHWC, type=FP32, qnt_type=AFFINE, zp=-13, scale=0.018317
  index=0, name=prob, n_dims=4, dims=[1, 1000, 1, 1], n_elems=1000, size=4000, fmt=NCHW, type=FP32, qnt_type=AFFINE, zp=0, scale=1.000000
model is NHWC input fmt
model input height=224, width=224, channel=3
Rga built version:1.04 788c430+2021-02-24 12:17:35
Forward time:19.2299995422 ms
=========================
index:0 c:1000 h:1 w:1
category:155 score:0.991211
=========================

运行耗时19.22ms,相比于CPU的35ms还是要快很多的,哈哈,真香!!!(最后还是想说太TM便宜啊)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Radxa Rock 3a NPU调用指南 的相关文章

随机推荐

  • Qt小项目2 图片查看器

    头文件 ifndef WIDGET H define WIDGET H include
  • Shell脚本概述、简单Shell脚本的编写

    一 shell概述 shell是一个命令行解释器 它接收应用程序 用户命令 然后调用操作系统内核 shell还是一个强大的编程语言 易编写 易调试 灵活性强 二 shell解析器 1 Linux提供的shell解析器有 root CS YT
  • 大起大落,蚂蚁上市被叫停,蚂蚁的程序员们怎么样了?

    继马云被有关部门联合约谈以后 万众瞩目的蚂蚁上市被叫停了 一石激起千层浪 这个爆炸性的新闻引起了人们的热议 来看看大家都说了些什么 首先表达一下对蚂蚁金服员工的深切同情 毕竟之前大家都以为马上就能实现财务自由 走上人生巅峰 结果来了这么一出
  • 机器学习-Day04

    在处理包含字符串的数据时使用pandas 常用的数据类型 1 series一维 带标签数组 2 dataframe二维 Series容器 1 pandas索引 import pandas as pd t pd Series 1 21 31
  • Android Studio的build.gradle里面的各种版本信息

    Android studio 是采用 Gradle 来构建项目 Gradle 是一个非常先进的项目构建工具 我们在导入Android项目后 只要项目同步成功 就会出现以下文件夹 如图是build gradle Module app 文件的代
  • python3字符串与二进制互相转换

    人闲太久 努力一下就以为是在拼命 一 前言 python中 没有 0 1 形式的二进制类型 但我们依然可以存储二进制类型的数据 利用字符串 string 类型 可以存储二进制数据 即 将二进制数据以字符串的形式存储 下面分享一种字符串和二进
  • IDEA——》安装Scala插件

    推荐链接 总结 Java 总结 Mysql 总结 Redis 总结 Kafka 总结 Spring 总结 SpringBoot 总结 MyBatis MyBatis Plus 总结 Linux 总结 MongoDB 总结 Elasticse
  • Hive基本使用(5)

    三 排序 1 Order By 全局排序 只有一个Reducer ASC ascend 升序 默认 DESC descend 降序 b ORDER BY 子句在SELECT语句的结尾 demo1 按照工资升序 hive dyhtest gt
  • 动态中位数(对顶堆)

    上面是一个小根堆 下面是一个大根堆 维护两个性质 1 小根堆元素 gt 大根堆元素2 大根堆元素个数比小根堆元素个数多1 结果出堆大根堆top即可 include
  • 网站降权的康复办法(详解百度SEO数据分析)

    随着搜索引擎算法的不断升级 很多网站在SEO优化过程中遭遇到降权的情况 如果您的网站也遭遇到了类似的问题 不必惊慌失措 本文将为您详细介绍网站降权恢复的方法 包括百度SEO数据分析 网站收录少的5个原因 网站被降权的6个因素以及百度SEO提
  • JAVA使用线程池查询大批量数据

    前言 在开发过程中可能会碰到某些独特的业务 比如查询全部表数据 数据量过多会导致查询变得十分缓慢 虽然在大多数情况下并不需要查询所有的数据 而是通过分页或缓存的形式去减少或者避免这个问题 但是仍然存在需要这样的场景 比如需要导出所有的数据到
  • 论文笔记(四):影像图中水体识别与提取技术研究综述

    快速并且准确地提取水体信息 在水资源规划和调查 预防洪水灾 害和船舶航行中具有重要意义 0 前言 1 遥感图像与人工勘测 遥感图像 成像周期相对较短 实时性强 不受地域限制 人工勘测 耗费大量的人力物力以及时间 2 水体识别方法 阈值法 操
  • C语言字符数组和字符串

    http c biancheng net cpp html 2921 html 用来存放字符的数组称为字符数组 例如 char a 10 一维字符数组 char b 5 10 二维字符数组 char c 20 c p r o g r a m
  • ★教程2:fpga学习教程入门100例目录

    1 订阅本教程用户可以免费获得本博任意2个 包括所有免费专栏和付费专栏 博文对应代码 私信博主给出代码博文的链接和邮箱 2 本FPGA课程的所有案例 部分理论知识点除外 均由博主编写而成 供有兴趣的朋友们自己订阅学习使用 未经本人允许 禁止
  • AI系统论文阅读:SmartMoE

    提出稀疏架构是为了打破具有密集架构的DNN模型中模型大小和计算成本之间的连贯关系的 最著名的MoE MoE模型将传统训练模型中的layer换成了多个expert sub networks 对每个输入 都有一层special gating n
  • 这款毕设至少得收一千五,Python实现学生教师刷脸签到系统。

    背景 今天我在母校群又接到了一个做毕业设计的单子 论题 用Python或者Java实现学生教师刷脸签到系统 一般来讲做学生信息管理系统收500 这个大家觉得报价1500贵吗 我先带大家看干货 简介 利用Python语言 Flask框架 Dl
  • mysql查询时加不加引号的问题

    在查询mysql时碰到了查询条件加引号和不加引号的问题 一 如果字段本身是int类型 如果查询条件中加了引号 比如select from user where id 4 这时候可以查出id 4的用户信息 但是使用select from us
  • 打开mysql的步骤。

    安装mysql软件之后 打开mysql 显示error Can t connect to MySQL server on localhost 10061 原因是服务器没开 这个时候workbench连接不上 然后client登录不上 总结m
  • 2023华为OD机试真题【星际篮球争霸赛/动态规划】

    题目描述 在星球争霸篮球赛对抗赛中 最大的宇宙战队希望每个人都能拿到MVP MVP的条件是单场最高分得分获得者 可以并列所以宇宙战队决定在比赛中尽可能让更多队员上场 并且让所有得分的选手得分都相同 然而比赛过程中的每1分钟的得分都只能由某一
  • Radxa Rock 3a NPU调用指南

    0x0 Radxa Rock 3a开发板介绍 Radxa Rock 3a开发板是基于瑞芯微RK3568芯片设计的 ARM CPU采用4核Cortex A55 Cortex A53的继任者 主频最高可达2 0Ghz CPU性能相当于中高端手机