Radxa Rock 3a NPU调用指南
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以及rknpu2,rknn-toolkit2主要是神经网络模型的量化及模型转换,把模型转换为.rknn的格式,rknpu2主要是提供调用NPU的API接口函数,这两个在瑞芯微的Github都有提供,下面是链接
rknpu2github.com/rockchip-linux/rknpu2
GitHub - rockchip-linux/rknn-toolkit2github.com/rockchip-linux/rknn-toolkit2正在上传…重新上传取消
建议大家还是要看完官方文档,在./doc目录下
那么当我们通过rknn-toolkit2工具把模型转换为.rknn的格式后,我们具体该怎么在NPU上进行推理呢?我这边就给大家造了个轮子,方便大家傻瓜式调用,就是simple-rknn2,它不光支持RK3568的NPU调用,也支持RK3588的NPU,操作系统支持Linux和Android,链接在下面:
https://github.com/dog-qiuqiu/simple-rknn2github.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-D1lFpT3zOyQpan.baidu.com/s/1WWmAanwOc8-D1lFpT3zOyQ
提取码: 28qc
按照下面GitHub README链接的步骤进行simple-rknn2的编译以及demo执行文件的编译
https://github.com/dog-qiuqiu/simple-rknn2#run-demogithub.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: 1index=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.018317index=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便宜啊)
Radxa Rock 3a NPU调用指南相关推荐
- RK3188(radxa rock )recovery模式升级
如果力气过大,radxa rock 的recovery按键容易折断. 这个时候刷机是个问题.不过根据rockchip提供的文档,我们可以进入recovery模式 通过ota升级. 你可以自己编译固件也 ...
- linux刷rockchip工具,[Radxa Rock]如何刷机到NAND闪存
这个页面描述怎么往Radxa Rock的NAND flash上装系统,即大家喜闻乐见的刷机. 你可以选择完全刷机(就是刷 update.img格式的固件)或者只刷特定的某个 分区. 你可以从radxa ...
- Python快速实现 CMD 命令调用指南
Python快速实现 CMD 命令调用指南 在 Python 中,我们可以很方便地通过调用 CMD 命令来执行系统操作.本文将为您介绍如何使用 Python 调用 CMD 命令,并提供相关代码和详细描 ...
- 腾讯AI开放平台的接口调用指南
最近无意发现腾讯AI开放平台上提供了大量好玩的人工智能云服务,而且是完全免费的.只需要用QQ号登录即可.这么好的东西,作为一个程序员,当然要试试了! 从上图可以看出腾讯AI开放平台提供的人工智能服务主 ...
- [常用工具] dlib编译调用指南
dlib是一个C++工具包(dLIB中也有Python接口,但是主要编程语言为C++),包含绝大多数常用的机器学习算法,许多图像处理算法和深度学习算法,被工业界和学术界广泛应用于机器人.嵌入式设备.移 ...
- 薄荷图床API调用指南
接口地址:会员专用网址/api/upload/ 返回格式:JSON 请求方式:POST 默认QPS:30+ 官网地址:薄荷图床官网 首页 -图床外链生成器-亚马逊图片上传-无限流量-全球加速-无限数量 ...
- java directui_win32 DirectUI控件开发与调用指南
相较于win32/mfc,directui(win32)更加轻量化,在开发方式上更加现代化,使得其在c++应用方面成为主流,官方中提到了可以开发控件(插件),也就是说新的库可以不写在dui里,而独立出 ...
- Rock 5 RK3588 SBC初次摸索
RADXA Rock 5(基于RK3588)的初次摸索 硬件平台简述 系统安装选择 几个系统的介绍 系统的安装方式 配件方面 硬件平台简述 RK3588是瑞芯微发布的一款8核(4核大+4核小)ARM架 ...
- 第三方网站应用微信登录开发指南
微信开放平台网址 网站应用微信登录开发指南 准备工作 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 在进行微信OAuth2.在进行微信OAuth2.0授权登录 ...
最新文章
- Metasploit中aggregator插件无法使用
- oracle之 变更OS时间对数据库的影响
- java 查看变量类型
- python 统计使用技巧
- Spring MVC:资源
- RS485光纤中继器有哪些优缺点?
- java常用class类_java常用类
- C语言之结构体(2)
- 推荐系列:2008年第05期 总7期
- 【Web】关于Session过期/失效的理解
- MODBUS调试工具 C#源码 包含MODBUS主站调试工具和MODBUS从站调试工具
- c语言做线性代数第六版答案,编程与线性代数
- python执行bat文件_让Python文件也可以当bat文件运行
- 2018笔试题——求一元一次方程的解
- 桃子CCD视觉高速喷射点胶机,用它你就会爱上它
- 基于asp.net714零食销售海米跨境电子商务商城
- python数字转换拼音程序_课内资源 - 基于Python的拼音汉字转换程序
- EMW3162 AT固件的使用【1】
- 「开发者说」多系统集成开发-企业自有系统快速上钉钉
- 什么是Base-64编码
热门文章
- TestNG监听器实现失败自动截图、重跑、自定义html结果文件功能
- 传奇一键端服务器维护,烈焰炫彩传奇最终版一键服务端+启动教程+GM工具
- 简述卡西欧5800p计算机,卡西欧5800p计算器所有解释
- 苹果x电池容量_关于苹果18W PD快充你想知道的,全都在这里了
- 二本院校学弟大二开始实习,大三收割阿里、腾讯实习offer
- 图像物体分类与检测算法综述
- C语言实验上机报告第三版,c语言上机报告[实验三].doc
- Unity3D网页插件
- eclipse安装说明
- python爬虫和医学数据_Python爬虫入门教程 24-100 微医挂号网医生数据抓取