立创泰山派使用笔记
最近有用rk的需求,顺便买了一块板子来玩一下,本文做一下记录,这个板子是立创做的,有教程,但是说实话,写的很不好,很多问题,不适合初学者。
1、板子资料
https://wiki.lckfb.com/zh-hans/tspi-rk3566/system-usage/img-download.html
顺便看了一眼立创的其他板子,已经这么丰富了,立创这点还是很不错的,给力很多人学习的机会
板子的资料都放在了百度网盘,需要的去网盘下载,说实话,网盘很大,建议整个vip,不然就挂一晚上吧,有几十个g
板子相关的信息的话直接看这个吧,下面是接口详情
下面是io口参数,这里居然提到了很多模块?难道板子也做驱动相关的教程吗?
下面是背面的接口
板子的主控是rk3566,最基础的版本是1+0g,说实话不太能用,浪费了这颗芯片,建议2+16起步吧,有些焊接比较厉害的也能整出来8+256的。
2、系统编译和烧录
系统部分官方提供了很多系统的教程,但是我感觉官方可能还是想主推安卓?他们有个训练营是安卓的
我本人对安卓没什么了解,官方提供了ubuntu和buildroot这两种系统,哦还有debian三种比较原生的linux系统吧
这里建议buildroot吧,当时看到buildroot的时候,感觉很奇怪,这不是一个构建linux系统的工具吗?这里居然是一种系统了?
2.1 虚拟机建议
这里官方建议的是VirtualBox,然后ubuntu的版本是ubuntu-18.04.6-desktop-amd64,这里我用的是vmware,这个用习惯了,没什么影响,唯一需要注意的是开虚拟机的时候把内存给大点,建议是200GB起步吧,编完固件就100多了
然后先把网盘里的sdk复制到虚拟机解压,大概就是这个文件
解压完大概是这些文件
编译环境需要的工具包
sudo apt-get install 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 ncurses-dev
之后设置一下板级配置
./build.sh lunch
这里选择3即可
2.2 编译buildroot
这个比较好编译,直接输入
export RK_ROOTFS_SYSTEM=buildroot
之后输入下面的命令开始全编译
./build.sh all
如果是第一次编译会有一个电源的选项弹出,需要手动选择,大概是下面这样
选择的时候记得第四个和第六个选1.8V,其他的都是3.3,这个很讨厌的电源选择还会在之后系统启动后持续出现,就向下面的打印:
这个打印的关闭可以参考:
关闭这个脚本里面这个函数的调用
之后编译系统,首次编译比较耗时,大概需要一个小时吧,一个小时后就编出固件了,之后完成固件打包
执行固件打包:
./mkfirmware.sh
如果要打包成update需要下面命令:
./build.sh updateimg
编译出来的固件位置大概在这里
buildroot编译出来的固件大小大概是500mb左右,下面准备刷固件,刷固件采用的方式是rk官方的工具,目前没有看到什么升级的工具,等于每次都是重新刷写,需要准备这个工具(没装驱动的记得先装一下驱动)
直接选的这个页面
关于进入刷写模式的说明:
具体的操作说明:
刷完的系统是这样的
上面的串口参数(不知道为什么要设置成这样的)
设备刷好了之后可以联网
root@RK356X:/# vi /data/cfg/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1
network={
ssid="wucaicheng" # Wi-Fi名字
psk="1234567890" # Wi-Fi密码
key_mgmt=WPA-PSK # 加密配置,不加密则改为:key_mgmt=NONE
}
之后输入
wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf
其他功能跟正常linux差不多,这里不赘述
2.3 Debian系统
首先还是环境变量设置
export RK_ROOTFS_SYSTEM=debian
之后进入debian目录
cd debian
首先还是安装编译环境
sudo apt-get install binfmt-support qemu-user-static live-build
之后输入
sudo dpkg -i ubuntu-build-service/packages/*
上面的命令可能会报错
sudo apt-get install -f
之后回到上一级
./build.sh debian
大概也需要1小时编译完成,之后也是相同的命令完成系统打包,debian系统打包固件大概3个g
3、系统开发
这里记录下我用buildroot系统的一些经过,首先需要激活一下环境:
source buildroot/build/envsetup.sh
这里选择65,表示我们用的是3566
之后进入buildroot目录下,就可以使用常规命令了
make menuconfig
可以看到相关的功能选项
选完之后会在这个路径下看到config文件
4、yolo运行
这个功能主要是参考:
https://blog.csdn.net/weixin_62656772/article/details/139309244
4.1 yolo训练(windows上完成)
上面他这个教程主要是要跑自己的yolo,教你怎么替换,我觉得直接跑官方的例程其实也很快的,关于yolo环境搭建的部分可以参考我之前的文章:
yolov5环境搭建
我上面用的是yolov5-5.0,记住一定要下载6.0的,不然跑不通的。前半部分的目的就是训练出来自己的模型,之后转成onxx的模型
这里他生成onxx模型用的命令是:
python export.py --weights ./first/best.pt --img 640 --batch 1 --include onnx --opset 12
会生成一个best.onnx文件,这个就是泰山派需要的模型文件。
4.2 交叉编译(ubuntu虚拟机中完成)
这里建议安装ubuntu20.04的虚拟机,因为需要python3.8的版本,不然你还还需要升级ubuntu,多麻烦呢。
首先是创建环境(这里应该python的虚拟环境)
mkdir Val-Env && cd Val-Env
python3 -m venv RK3566 python=3.8
之后进入环境
source RK3566/bin/activate
终端会显示当前处于创建的环境中
之后创建一个YOLO文件夹,把鲁班猫的代码拉下来(拉不下来就手动下载然后解压缩)
git clone https://gitee.com/LubanCat/lubancat_ai_manual_code.git
cd lubancat_ai_manual_code/dev_env/rknn_toolkit2
之后安装需要的依赖库,首先需要配置pip(这个pip我建议是可以不配置,因为配了有些东西下载不下来)
pip3 config set global.index-url https://mirror.baidu.com/pypi/simple
之后开始安装需要的的库
pip3 install numpy
pip3 install -r doc/requirements_cp38-1.5.0.txt
pip3 install packages/rknn_toolkit2-1.5.0+1fa95b5c-cp38-cp38-linux_x86_64.whl
之后查看环境是否配置成功,不报错就是配置成功了
之后下载交叉编译器:
https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/
下载这个:
解压完成:
之后下载rk官方例程:
https://github.com/rockchip-linux/rknpu2
下面先进入这个目录
执行
python3 test.py
这个跑的是默认的程序,如果想换成自己的模型,需要修改test.py,对着源码修改即可,跑完会出结果,可以验证一下效果。
之后进入下面目录修改数据集检测的类型数目
在这里修改名称
这里放上一步生成的rknn文件(windows那步转出来的)
同样在这个目录下换成自己的图片
之后修改这个路径下的gcc路径,改为交叉编译器的
之后会生成一个install目录,这个就是我们需要的产物了
4.3部署到泰山派
这里我用的是build系统,为了把内容传到泰山派,这里我需要开一下ssh方便传文件,在串口输入
passwd root
会提示你创建密码
之后创建ssh连接,并把install目录下的文件夹传入进去
之后进入文件夹,输入:
./rknn_yolov5_demo ./model/RK3566_RK3568/yolov5s-640-640.rknn ./model/bus.jpg
效果如下
最终检测效果
下面测试一下视频,先把视频导入,注意需要h264的格式:
./rknn_yolov5_video_demo ./model/RK3566_RK3568/yolov5s-640-640.rknn ./input.h264 264
运行如下:
输出结果:
输出的文件是这个:
其他测试命令:
h264视频
./rknn_yolov5_video_demo model/<TARGET_PLATFORM>/yolov5s-640-640.rknn xxx.h264 264
注意需要使用h264码流视频,可以使用如下命令转换得到:
ffmpeg -i xxx.mp4 -vcodec h264 out.h264
h265视频
./rknn_yolov5_video_demo model/<TARGET_PLATFORM>/yolov5s-640-640.rknn xxx.hevc 265
注意需要使用h265码流视频,可以使用如下命令转换得到:
ffmpeg -i xxx.mp4 -vcodec hevc out.hevc
rtsp视频流
./rknn_yolov5_video_demo model/<TARGET_PLATFORM>/yolov5s-640-640.rknn <RTSP_URL> 265