【鸿睿创智开发板试用】RK3568 NPU的人工智能推理测试

目录

引言

驱动移植

例程编译

修改build.sh

执行编译

运行测试

部署libc的库文件

执行测试程序

结语


引言

鸿睿创智的H01开发板是基于RK3568芯片的,瑞芯微芯片的一大特色就是提供了NPU推理的支持。本文将对其NPU推理进行测试。

驱动移植

H01的开发板已经移植好了RKNN的驱动程序。如果是其他RK3568的开发板使用OpenHarmony提供的主线代码,可能没有做这个移植,可以参考:OpenHarmony标准系统上实现对rk系列芯片NPU的支持(驱动移植)-鸿蒙开发者社区-51CTO.COMicon-default.png?t=O83Ahttps://ost.51cto.com/posts/29962?login=from_csdn我使用hdc shell dmesg | grep "RKNPU"查看开机内核打印,看不到任何相关信息。改用查看可以看到如下信息证明驱动是正常的:

例程编译

首先启动Docker编译环境(参见【鸿睿创智开发板试用】移植OpenCV 4到OpenHarmony 4.1-CSDN博客)。然后下载RKNN Toolkit2:

git clone https://github.com/airockchip/rknn-toolkit2.git

我选择的是rknn_benchmark示例(rknpu2/examples/rknn_benchmark),这是测试RKNN工作性能的。

修改build.sh

RKNN的运行库是用GCC编译的,对GCC库有依赖。厂商提供的样例也是GCC编译的。这点和一般的OpenHarmony程序基于LLVM编译不同。

这是build-linux_RK3566-3568.sh文件的修改:

# for aarch64
GCC_COMPILER=/home/openharmony/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu

执行编译

./build-linux_RK3566_RK3568.sh

程序编译的过程如下:

-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /home/openharmony/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
-- Check for working C compiler: /home/openharmony/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /home/openharmony/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
-- Check for working CXX compiler: /home/openharmony/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
x86_64
-- Configuring done
-- Generating done
CMake Warning:Manually-specified variables were not used by the project:TARGET_SOC-- Build files have been written to: /home/openharmony/rknn-toolkit2/rknpu2/examples/rknn_benchmark/build/build_linux_aarch64
Scanning dependencies of target rknn_benchmark
[ 66%] Building CXX object CMakeFiles/rknn_benchmark.dir/src/cnpy/cnpy.cpp.o
[ 66%] Building CXX object CMakeFiles/rknn_benchmark.dir/src/rknn_benchmark.cpp.o
[100%] Linking CXX executable rknn_benchmark
[100%] Built target rknn_benchmark
[100%] Built target rknn_benchmark
Install the project...
-- Install configuration: ""
-- Installing: /home/openharmony/rknn-toolkit2/rknpu2/examples/rknn_benchmark/install/rknn_benchmark_Linux/./rknn_benchmark
-- Set runtime path of "/home/openharmony/rknn-toolkit2/rknpu2/examples/rknn_benchmark/install/rknn_benchmark_Linux/./rknn_benchmark" to "lib"
-- Up-to-date: /home/openharmony/rknn-toolkit2/rknpu2/examples/rknn_benchmark/install/rknn_benchmark_Linux/lib/librknnrt.so
/home/openharmony/rknn-toolkit2/rknpu2/examples/rknn_benchmark

 最后所有测试所需要的文件都被打包到install目录中。

运行测试

部署libc的库文件

程序是基于gcc编译的,而gcc所使用的库文件在开发板上是没有的,所以需要将/home/openharmony/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/lib下的所有文件打包,然后拷贝到开发板上解包到/lib目录下。

执行测试程序

最后就是用mobilenet_v1.rknn文件进行测试,结果如下:

# ./rknn_benchmark mobilenet_v1.rknn
rknn_api/rknnrt version: 2.3.0 (c949ad889d@2024-11-07T11:35:33), driver version: 0.8.8
total weight size: 4365632, total internal size: 1756160
total dma used size: 10706944
model input num: 1, output num: 1
input tensors:index=0, name=input, n_dims=4, dims=[1, 224, 224, 3], n_elems=150528, size=150528, w_stride = 224, size_with_stride=150528, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=0, scale=0.007812
output tensors:index=0, name=MobilenetV1/Predictions/Reshape_1, n_dims=2, dims=[1, 1001], n_elems=1001, size=2002, w_stride = 0, size_with_stride=2002, fmt=UNDEFINED, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000
custom string:
Warmup ...0: Elapse Time = 8.19ms, FPS = 122.121: Elapse Time = 7.86ms, FPS = 127.312: Elapse Time = 7.86ms, FPS = 127.243: Elapse Time = 7.76ms, FPS = 128.784: Elapse Time = 7.79ms, FPS = 128.39
Begin perf ...0: Elapse Time = 7.74ms, FPS = 129.201: Elapse Time = 7.78ms, FPS = 128.622: Elapse Time = 7.80ms, FPS = 128.123: Elapse Time = 7.97ms, FPS = 125.414: Elapse Time = 7.88ms, FPS = 126.955: Elapse Time = 7.71ms, FPS = 129.676: Elapse Time = 5.13ms, FPS = 195.087: Elapse Time = 5.16ms, FPS = 193.918: Elapse Time = 5.12ms, FPS = 195.209: Elapse Time = 5.11ms, FPS = 195.73Avg Time 6.74ms, Avg FPS = 148.372Save output to rt_output0.npy
---- Top5 ----
0.049622 - 620
0.044678 - 645
0.032288 - 627
0.021011 - 819
0.016953 - 790

结语

 经过一番折腾,最后实现了在开发板上运行RKNN样例的工作。不过这还是不是最终结果,还需要测试一下在App中是否可以正常调用,特别是和OpenCV结合。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

概率论得学习和整理29: 用EXCEL 描述二项分布

目录 1 关于二项分布的基本内容 2 二项分布的概率 2.1 核心要素 2.2 成功K次的概率,二项分布公式 2.3 期望和方差 2.4 具体试验 2.5 概率质量函数pmf 和cdf 3 二项分布的pmf图的改进 3.1 改进折线图 3.2 如何生成这种竖线图呢 4 不同的二项分布 4.1 p0.…

数据结构(二叉树)

前言: 在数据结构那片浩瀚无垠、仿若神秘宇宙的天地里,二叉树宛如一颗散发着独特光辉、极为耀眼的星辰。它就像一位技艺精湛的建筑师,运用独特的二叉分支结构,精心构建起层次分明、秩序井然的数据组织 “大厦”。根节点仿若大厦的…

docker仓库数据传输加密

1.进行加密数据运算对配置文件底下的内容进行删除 [rootlocalhost ~]# vim /etc/docker/daemon.json 重新启动docker程序 [rootlocalhost ~]# systemctl restart docker 2.建立加密目录,生成认证key和证书 [rootlocalhost ~]# mkdir certs [rootlocalhost ~]# open…

大数据技术与应用——数据可视化(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 数据可视化 大…

【指南】03 CSC联系外导

确定外导 课题组有合作关系的国外导师与自己研究方向密切相关的国外导师国外高校官网、谷歌学术、Research Gate等平台检索不可以是中国港澳台的高校科研院所或机构注意外导所在高校排名和科研水平可列表记录注意外国签证政策 发送邮件 自我介绍简要介绍CSC介绍自己的研究对…

0基础学前端-----CSS DAY6

0基础学前端-----CSS DAY6 视频参考:B站Pink老师 今天是CSS学习的第六天,今天开始的笔记对应Pink老师课程中的CSS第三天的内容。 本节重点:CSS的三大特性以及CSS的盒子模型。 1.CSS的三大特性 CSS有三个重要特性:层叠性、继承性…

本地部署大模型QPS推理测试

目录 1、测试环境1.1、显卡1.2、模型1.3、部署环境1.3.1、docker1.3.2、执行命令 2、测试问题2.1、20字左右问题2.2、50字左右问题2.3、100字左右问题 3、测试代码3.1、通用测试代码3.2、通用测试代码(仅供参考) 4、测试结果4.1、通用测试结果4.2、RAG测…

测试工程师八股文04|计算机网络 和 其他

一、计算机网络 1、http和https的区别 HTTP和HTTPS是用于在互联网上传输数据的协议。它们都是应用层协议,建立在TCP/IP协议栈之上,用于客户端(如浏览器)和服务器之间的通信。 ①http和https的主要区别在于安全性。http是一种明…

【Tomcat】第一站:理解tomcat与Socket

目录 1. Tomcat 1.1 Tomcat帮助启动http服务器。 1.2 tomcat理解: 2. 计算机网络最基本的流程 2.1 信息是怎么来的? 2.2 端口是干什么的? 3. 简单的Socket案例 服务端 客户端 启动: 3.2 在Tomcat发送信息,看…

抖音SEO短视频矩阵源码系统开发分享

在数字营销的前沿阵地,抖音短视频平台凭借其独特的魅力和庞大的用户基础,已成为社交媒体领域一股不可小觑的力量。随着平台影响力的持续扩大,如何有效提升视频内容的可见度与流量成为了内容创作者关注的焦点。在此背景下,一套专为…

使用 DeepSpeed 微调 OPT 基础语言模型

文章目录 OPT 基础语言模型Using OPT with DeepSpeedmain.py 解析1、导入库和模块2、解析命令行参数3、main 函数3.1 设备与分布式初始化3.2 模型与数据准备3.3 定义评估函数3.4 优化器与学习率调度器设置3.5 使用 deepspeed 进行模型等初始化3.6 训练循环3.7 模型保存 4、dsch…

window QT/C++ 与 lua交互(mingw + lua + LuaBridge + luasocket)

一、环境与准备工作 测试环境:win10 编译器:mingw QT版本:QT5.12.3 下载三种源码: LuaBridge源码:https://github.com/vinniefalco/LuaBridge LUA源码(本测试用的是5.3.5):https://www.lua.org/download.html luasocket源码:https://github.com/diegonehab/luasocket 目…

边缘智能创新应用大赛获奖作品系列三:边缘智能强力驱动,机器人天团花式整活赋能千行百业

边缘智能技术快速迭代,并与行业深度融合。它正重塑产业格局,催生新产品、新体验,带动终端需求增长。为促进边缘智能技术的进步与发展,拓展开发者的思路与能力,挖掘边缘智能应用的创新与潜能,高通技术公司联…

中后台管理信息系统:Axure12套高效原型设计框架模板全解析

中后台管理信息系统作为企业内部管理的核心支撑,其设计与实现对于提升企业的运营效率与决策能力具有至关重要的作用。为了满足多样化的中后台管理系统开发需求,一套全面、灵活的原型设计方案显得尤为重要。本文将深入探讨中后台管理信息系统通用原型方案…

云计算HCIP-OpenStack03

书接上回: 云计算HCIP-OpenStack02-CSDN博客 10.KeyStone keystone-Openstack,IAM服务(统一身份认证)-云服务 建议先去了解Hadoop(大数据生态系统)中的kerberos(LDAPkerberos的鉴权机制&#xf…

el-table打印PDF预览,表头错位的解决方案

文章目录 背景与需求需求分析解决方案方案一:vue-print-nb插件安装引入使用 方案二安装使用 方案三 总结 背景与需求 本例以vue2项目为例,vue3与react等同理。 有个项目需要打印的功能,网页使用vue2写的,主体内容为表格el-table&a…

uniapp炫酷导航按钮及轮播指示器组件

一个拥有炫酷动效的导航按钮和指示器uniapp组件,帮你构建更炫酷的官网、宣传页、产品介绍等页面。 目前测试了vue2语法在h5和微信小程序的适配,其他平台理论上也能用。 下载及使用方法地址:iliya-desgin 展示: 目标页面出现在可视…

SAM大模型实践(一)

参考着segment-geospatial 项目主页的介绍,尝试复现一下Example-satallite的案例。 Satellite - segment-geospatialhttps://samgeo.gishub.org/examples/satellite/ 过程当中遇到了一些坑给大家做点分享,主要有几种情况,一个是torch…

如何为IntelliJ IDEA配置JVM参数

在使用IntelliJ IDEA进行Java开发时,合理配置JVM参数对于优化项目性能和资源管理至关重要。IntelliJ IDEA提供了两种方便的方式来设置JVM参数,以确保你的应用程序能够在最佳状态下运行。本文将详细介绍这两种方法:通过工具栏编辑配置和通过服…

解决电脑网速慢问题:硬件检查与软件设置指南

电脑网速慢是许多用户在使用过程中常见的问题,它不仅会降低工作效率,还可能影响娱乐体验。导致电脑网速慢的原因多种多样,包括硬件问题、软件设置和网络环境等。本文将从不同角度分析这些原因,并提供提高电脑网速的方法。 一、检查…