当前位置: 首页 > news >正文

RK3568笔记一:RKNN开发环境搭建

若该文为原创文章,转载请注明原文出处。

由于对AI的好奇,想要学习如何部署AI,所以从RV1126到RK3568中过渡。

一、介绍

RK3568开发板使用的是正点原子新出的ATK-DLRK3568 开发板,主要是学习从训练到部署的全过程,并记录,为自己的学习作个总结。关于ATK-DLRK3568 开发板,正点原子正在出教程,资料也开源,手册目前相对少一点,但不影响学习,因为主要是AI部分,所以基本要自己摸索。

本篇从开发环境搭建开始记录,大部分在03【正点原子】ATK-DLRK3568_AI例程测试手册V1.0.pdf里有,具体要了解,可以去下载资料。

虚拟机和系统自行安装,博主使用的是原子哥提供好的虚拟环境。

接下来记录:SDK编译,RKNN环境安装。

开发板系统主要使用的是linux,其他系统自行测试。

二、安装 RK3568 Linux SDK

1、安装依赖软件包

sudo apt-get update
sudo apt-get install curl python2.7 python-pyelftools git ssh make gcc libssl-dev liblz4-tool expect g++ 
patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison flex 
fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler python3-pip libncurses-dev python3-pyelftools vim mtd-utils

2、设置python 版本

python2 设置为系统默认 python 版本:

sudo rm -rf /usr/bin/python
sudo ln -s /usr/bin/python2 /usr/bin/python

3、安装 SDK

解压网盘里的SDK, atk- rk3568_linux_release_v1.0_20230620.tgz
mkdir ~/rk3568_linux_sdk
tar xvf atk-rk3568_linux_release_v1.0_20230620.tgz -C ~/rk3568_linux_sdk

检出源码

cd ~/rk3568_linux_sdk/
.repo/repo/repo sync -l -j10

完成后就可以看到源码了

SDK 工程目录介绍
SDK 源码根目录下包含有 app buildroot debian device external tools u-boot yocto
等多个目录,每个目录或其子目录会对应一个 git 工程;因为 SDK 的代码和相关文档被划分成
了若干 git 仓库分别进行版本管理(所以 SDK 实际上包含有若干 git 仓库),它们按照功能、所
属模块划分,分别组织到不同的目录下。
app :存放上层应用 app ,包括 Qt 应用程序,以及其它的 C/C++ 应用程序。
buildroot :基于 buildroot 开发的根文件系统。
debian :基于 Debian 开发的根文件系统。
device/rockchip :存放各芯片板级配置文件和 Parameter 分区表文件,以及一些编译与
打包固件的脚本和预备文件。
docs :存放芯片模块开发指导文档、平台支持列表、芯片平台相关文档、 Linux 开发指
南等。
external :存放所需的第三方库,包括音频、视频、网络、 recovery 等。
kernel Linux 4.19 版本内核源码。
prebuilts :存放交叉编译工具链。
rkbin :存放 Rockchip 相关的 Binary 和工具。
rockdev :存放编译输出固件,编译 SDK 后才会生成该文件夹。
tools :存放 Linux Windows 操作系统环境下常用的工具,包括镜像烧录工具、 SD
升级启动制作工具、批量烧录工具等,譬如前面给大家介绍的 RKDevTool 工具以及
Linux_Upgrade_Tool 工具都存放在该目录。
u-boot :基于 v2017.09 版本进行开发的 uboot 源码。
yocto :基于 Yocto 开发的根文件系统。
软件框图:

4、SDK 编译

编译可以单独编译,也可以全自动编译,首次编译检测全自动编译。
首先进入到 SDK 源码根目录下,配置板级文件。
./build.sh lunch

接下来,拷贝第三方库, 开发板资料包里有提供,即dl文件。
将dl.tgz解压到<SDK>/buildroot 目录下
tar -xzf dl.tgz -C ~/rk3568_linux_sdk/buildroot/

接下来就是编译,编译的时间长短和电脑有关,我编译了大概半小时,无意外,编译成功。
./build.sh all

暂时没有做其他的功能,单纯的想要弄AI,所以没单独编译,可以看手册跟着原子哥做一遍。

三、RKNN开发环境搭建

1、安装交叉编译工具链

资料包里提供了工具链 atk-dlrk3568-toolchain-arm-buildroot-linux-gnueabihf-x86_64-20230621-v1.0.0.run,直接安装就好,拷贝到虚拟机里。
chmod a+x atk-dlrk3568-toolchain-arm-buildroot-linux-gnueabihf-x86_64-20230621-v1.0.0.run./atk-dlrk3568-toolchain-arm-buildroot-linux-gnueabihf-x86_64-20230621-v1.0.0.run

2、anaconda 的下载安装

下载anaconda

mkdir ~/software
cd ~/software 
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.03-1-Linux-x86_64.sh
安装
bash Anaconda3-2023.03-1-Linux-x86_64.sh

安装完成后,重启下ubuntu,重新 打开终端会发现前面多了个( base )。
为了方便,执行下面命令,不自动进入conda的虚拟环境
conda config --set auto_activate_base false

3、anaconda 的环境配置

a 、首先执行以下命令查看下当前镜像源,显示只有个 defaults 默认源。
conda config --show channels
b 、接下来我们添加清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

四、安装 rknn-toolkit2 转换环境

1、下载 rknn-toolkit2

资料包里提供了rknn-toolkit2-1.5.0.zip文件,也可以在github上下载

2、新建 conda 环境

conda create --name py3.8 python=3.8

3、安装 rknn-toolkit2

激活 conda 环境
conda activate py3.8

进入rknn-toolkit2-1.5.0/doc目录,安装依赖

pip install -r requirements_cp38-1.5.0.txt -i https://mirror.baidu.com/pypi/simple

4、安装 rknn-toolkit2 工具

进入 rknn-toolkit2-1.5.0/packages目录
pip install rknn_toolkit2-1.5.0+1fa95b5c-cp38-cp38-linux_x86_64.whl

5、测试 rknn-toolkit2

们进到对应的 tflite 的例程目录,测试下 mobilenet_v1 的例程是否正常。
进入到rknn-toolkit2-1.5.0/examples/tflite/mobilenet_v1/目录下,执行下面命令测试。
python test.py

五、测试 buildroot 下的 python 推理例程

1、安装 RKNN Toolkit Lite2

RKNN Toolkit Lite2 Rockchip NPU 平台提供 Python 编程接口,帮助用户部署 RKNN
型,加速 AI 应用的落地。接下来我们讲解下如何在板子上安装那个 rknn-toolkit-lite2 环境。

安装 RKNN Toolkit Lite2,需要把rknn_toolkit_lite2-1.5.0-cp38-cp38-linux_aarch64.whl放到板子上在安装。

所以先在ubuntu使用adb方式传到开发板,执行下面命令:

进到 rknn-toolkit2-1.5.0/rknn_toolkit_lite2/packages 目录
adb push rknn_toolkit_lite2-1.5.0-cp38-cp38-linux_aarch64.whl /userdata
传输完成后打开开发板串口终端或者 ssh 终端,进到目录 userdata 目录
输入以下命令进行安装。
cd /userdata
pip install rknn_toolkit_lite2-1.5.0-cp38-cp38-linux_aarch64.whl

2、测试 python 下的 AI 例程

进入 rknn_toolkit_lite2 目录,把例程传到开发板
adb push examples/inference_with_lite/ /userdata
传输完毕后,打开开发板的串口终端,进入到 /userdata/inference_with_lite/ 目录
输入以下命令执行看下效果。
cd /userdata/inference_with_lite/
python test.py

至此环境搭建完成。

如有侵权,或需要完整代码,请及时联系博主。

相关文章:

RK3568笔记一:RKNN开发环境搭建

若该文为原创文章&#xff0c;转载请注明原文出处。 由于对AI的好奇&#xff0c;想要学习如何部署AI&#xff0c;所以从RV1126到RK3568中过渡。 一、介绍 RK3568开发板使用的是正点原子新出的ATK-DLRK3568 开发板&#xff0c;主要是学习从训练到部署的全过程&#xff0c;并记…...

设计模式 - 行为型模式:策略模式(概述 | 案例实现 | 优缺点 | 使用场景)

目录 一、行为型模式 1.1、策略模式 1.1.1、概论 1.1.2、案例实现 1.1.3、优缺点 1.1.4、使用场景 一、行为型模式 1.1、策略模式 1.1.1、概论 策略模式设计的每一个算法都封装了起来&#xff0c;使他们可以相互替换&#xff0c;通过一个对象委派不同的算法给相应的客户…...

rancher部署pv、pvc、离线部署nfs

&#xff08;1&#xff09;NFS离线安装 使用nfs配置两台机器共享目录 假设两台机器188.188.30.32&#xff08;服务端&#xff09;、188.188.30.31&#xff08;客户端&#xff09;配置nfs 1.在可以联网的机器上下载rpm安装包 yum -y install nfs-utils --downloadonly --dow…...

视频拍摄教程分享

&#xff08;1&#xff09;新片场&#xff1a;静物美食视频拍摄(22.76GB) 链接:https://pan.baidu.com/s/1uj6wcPXGw-ztLQ1cdyogTA 提取码:929z&#xff08;永久有效&#xff09; &#xff08;2&#xff09;新片场&#xff1a;《孙晓迪分镜头脚本》掌握10种类型商业广告创作思…...

IP组成,分类,子网划分

一、基本概念 IP地址是指互联网协议地址&#xff0c;IP地址是IP协议提供的一种统一的地址格式&#xff0c;他为互联网上的每一个网络和每一台主机分配了一个逻辑地址&#xff0c;以此来屏蔽物理地址的差异&#xff0c;每个ip地址由网络地址和主机地址两个部分组成&#xff0c;网…...

Python视频剪辑-Moviepy视频内容变换技术

在视频编辑中,内容变换是个不能忽视的环节。这不仅仅是关于视频的方向、颜色或者大小,更多的是关于如何让视频内容更具创造性和吸引力。接下来将深入探讨如何使用MoviePy库进行高级的视频内容变换。 文章目录 视频内容变换函数剪辑逆时针旋转指定的角度或弧度像素的RGB值各取…...

OceanBase 数据库入门知识

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…...

自定义无边框窗口

效果&#xff1a; 可拖动拉伸 ui&#xff1a;设计如下 样式表&#xff1a;在ui CustomDialog 里设置的 #widget_title{background: #E6F1EB;border-top-left-radius: 20px;border-top-right-radius: 20px;}#widget_client{background-color: rgb(255, 255, 255);border-bottom…...

【网络安全 --- kali2023安装】超详细的kali2023安装教程(提供镜像资源)

如果你还没有安装vmware 虚拟机&#xff0c;请参考下面博客安装 【网络安全 --- 工具安装】VMware 16.0 详细安装过程&#xff08;提供资源&#xff09;-CSDN博客【网络安全 --- 工具安装】VMware 16.0 详细安装过程&#xff08;提供资源&#xff09;https://blog.csdn.net/m0…...

机器学习笔记(二)

过拟合 如下图左边,模型出现了过拟合现象 为了解决过拟合现象, 其中一个做法是多收集数据,如右图。 第二种做法是减少模型的特征数量,即x 第三种做法是正则化 正则化就是减少x前面的参数 w的数值, 不用消除x 正则化的梯度下降如下, 因为只是缩小了w的值,而 b的值保持不变 …...

Java @Override 注解

在代码中&#xff0c;你可能会看到大量的 Override 注解。 这个注解简单来说就是让编译器去读的&#xff0c;能够避免你在写代码的时候犯一些低级的拼写错误。 Java Override 注解用来指定方法重写&#xff08;Override&#xff09;&#xff0c;只能修饰方法并且只能用于方法…...

用rabbitMq 怎么处理“延迟消息队列”?

延迟消息队列是一种允许消息在发送后等待一段时间&#xff0c;然后再被消费的机制。这种机制通常用于需要延迟处理的应用场景&#xff0c;如定时任务、消息重试、消息调度等。在 RabbitMQ 中&#xff0c;实现延迟消息队列需要使用一些额外的组件和技术&#xff0c;因为 RabbitM…...

不常见的JS加密分析

前言 ​ 今天发现一个很少见的JS加密代码&#xff0c;他由一段十分少见的环境检测逻辑&#xff0c;修改一个字符都会被检测到&#xff0c;十分神奇&#xff0c;今天献上。 源代码 let hiJsJiami;!function(){const Zg3GArray.prototype.slice.call(arguments);return eval(&…...

TCP原理特性详解

文章目录 可靠传输机制1.确认应答2.超时重传2.连接管理1.三次握手2.四次挥手 传输效率1.滑动窗口2.流量控制3.拥塞控制4.延时应答5.捎带应答 面向字节流粘包问题 TCP异常情况 可靠传输机制 可靠性&#xff1a;即发送方知道数据是发送成功了&#xff0c;还是失败了。 1.确认应答…...

什么是懒加载,JS如何实现懒加载,在php中如何去实现懒加载

懒加载&#xff08;Lazy Loading&#xff09;是一种前端优化技术&#xff0c;用于推迟加载页面中的某些资源&#xff08;如图片、脚本、样式等&#xff09;&#xff0c;直到用户需要访问或者接近该资源时才进行加载。这可以减少初始页面加载时间&#xff0c;并提高页面性能和用…...

Cesium 展示——读取文件——加载 geojson 文件数据

文章目录 需求分析方法一:加载 geojson 文件方法二:加载 后台解析后的 geojson 文件结果需求 在做项目时,对加载 geojson 格式的数据有了一定的了解,因此试着尝试接手后台解析的 geojson 数据进行绘制,因此做了总结如下 分析 方法一:加载 geojson 文件 this.od6 = wi…...

(二)Apache log4net™ 手册 - 配置

0、引言 在上一篇文章中我们简单介绍了 Log4Net 及其核心的三大组件。本文将在上一篇文章的基础上继续探讨与 Log4Net 配置相关的内容。 1、配置 将日志请求插入到应用程序代码中需要进行大量的计划和工作。观察表明&#xff0c;大约4%的代码专门用于日志记录。因此&#xf…...

Elasticsearch:时间点 API

Elasticsearch&#xff1a;时间点 API-CSDN博客 在今天的文章中&#xff0c;我将着重介绍 Point in time API。在接下来的文章中&#xff0c;我将介绍如何运用 PIT 来对搜索结果进行分页。这也是被推荐使用的方法。 Point in time API 默认情况下&#xff0c;搜索请求针对目标…...

hive数据表定义

分隔符 CREATE TABLE emp( userid bigint, emp_name array<string>, emp_date map<string,date>, other_info struct<deptname:string, gender:string>) ROW FORMAT DELIMITED FIELDS TERMINATED BY \t COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMINAT…...

OpenMesh 网格简化之顶点聚类

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 顶点聚类方法将落在给定大小体素中的所有顶点集中到单个顶点之上,其过程有点类似于点云体素下采样,之后再基于聚类之后的顶点重新连接面片,以达到网格简化的目的。 二、实现代码 #define _USE_MATH_DEFINES #in…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...