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

rk3588部署yolov6

介绍

https://github.com/airockchip/rknn-toolkit2/tree/v2.1.0

https://github.com/airockchip/rknn_model_zoo/tree/v2.1.0

rknn-toolkit2rknn_model_zoo版本一致,都用v2.1.0

方式1

PC设备操作

搭建环境

本机PC设备(不是rk3588)下载rknn_toolkit2-2.1.0(即RKNPU2

进入rknn-toolkit2-2.1.0\rknn-toolkit2\packages文件夹下

在终端激活环境,在终端输入

pip install -r requirements_cp38-2.1.0.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

然后再输入pip install rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl

然后,我们的转rknn环境就配置完成了。

模型转换onnx2rknn

参考rknn_model_zoo-2.1.0/examples/yolov6

cd rknn_model_zoo-2.1.0\examples/yolov6/python

python convert.py ../model/yolov6s.onnx rk3588

# output model will be saved as ../model/yolov6.rknn

交叉编译

docs/Compilation_Environment_Setup_Guide.md

docs/Compilation_Environment_Setup_Guide.md

查看设备架构

cat /proc/version

输出

Linux version 5.10.198 (fq@geniatech-184) (aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621, GNU ld (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 2.36.1.20210621) #9 SMP Thu Aug 15 08:59:29 CST 2024

rk3588架构是aarch64

下载交叉编译工具

aarch64: https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz将

解压 

tar -xJvf 文件名.tar.xz  

编译

执行权限

chmod +x build-linux.sh

cd rknn_model_zoo-2.1.0

export GCC_COMPILER=/home/aaa/myinstall/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu

./build-linux.sh -t rk3588 -a aarch64 -d yolov6

生成如下:

 

rk3588操作

将install目录新生成的文件传输到rk3588上,然后执行以下命令

cd rknn_yolov6_demo

export LD_LIBRARY_PATH=./lib

./rknn_yolov6_demo model/yolov6.rknn model/bus.jpg

会输出结果图片out.jpg

方式2

PC设备操作

搭建环境

本机PC设备(不是rk3588)下载rknn_toolkit2-2.1.0(即RKNPU2

进入rknn-toolkit2-2.1.0\rknn-toolkit2\packages文件夹下

在终端激活环境,在终端输入

pip install -r requirements_cp38-2.1.0.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

然后再输入pip install rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl

然后,我们的转rknn环境就配置完成了。

模型转换onnx2rknn

参考rknn_model_zoo-2.1.0/examples/yolov6

cd rknn_model_zoo-2.1.0\examples/yolov6/python

python convert.py ../model/yolov6s.onnx rk3588

# output model will be saved as ../model/yolov6.rknn

rk3588板端操作

环境配置

需要下载rknn-toolkit2或者上传rknn-toolkit2

(1) rk3588板卡环境
rk3588的系统为Linux系统,版本为 ubuntu20.04
(2) npu2 驱动版本
连接上板卡输入 ,如图所示,npu驱动版本为 0.9.3

(3)npu环境
进入板卡系统,输入以下指令
查询 rknn server版本

strings /usr/bin/rknn_server | grep -i "rknn_server version"

查询 librknnrt.so库版本 

strings /usr/lib/librknnrt.so | grep -i "librknnrt version"
 

遇到问题:没有任何输出

没有输出则下载rknn-toolkit2-master.zip

cp rknn-toolkit2-master/rknpu2/runtime/Linux/rknn_server/aarch64/usr/bin/* /usr/bin/
cp rknn-toolkit2-master/rknpu2/runtime/Linux/librknn_api/aarch64/* /usr/lib/

注意:二者的版本必须一致

若输出不一致,需要做以下处理,下载rknn_toolkit2,我使用的是rknn_toolkit2-v2.0.0版本

Release v2.0.0-beta0: Update RK3562/RK3566/RK3568/RK3576/RK3588/RV1103/RV1106 NPU SDK to V2… · airockchip/rknn-toolkit2 · GitHub

将下载下来的文件拷贝到板卡上,将下面对应文件拷贝对板卡的对应位置

sudo cp rknn-toolkit2/rknpu/runtime/Linux/rknn_server/aarch64/usr/bin/* /usr/bin/
sudo cp rknn-toolkit2/rknpu/runtime/Linux/librnkk_api/aarch64//* /usr/lib/

给rknn_server赋予可执行权限

sudo chmod +x /usr/bin/rknn_server
sudo chmod +x /usr/bin/start_rknn.sh
sudo chmod +x /usr/bin/restart_rknn.sh

紧接着重启服务

cd /usr/bin
 

如图所示,打印出版本后,就可以用ctrl+c关闭掉

再次执行查询代码:一致!

c++部署

省去了下载交叉编译工具

rknn_model_zoo推送到板卡中,然后修改rknn_model_zoo中关于yolov6的代码

开始编译
进入rknn_model_zoo根目录下,
先给脚本权限
chmod 777 build-linux.sh
再编译
./build-linux.sh -t rk3588 -a aarch64 -d yolov6
编译完成后会在跟目录下生成install文件夹

build文件夹

cd rknn_model_zoo-2.1.0/build/build_rknn_yolov6_demo_rk3588_linux_aarch64_Release

./rknn_yolov6_demo ../../install/rk3588_linux_aarch64/rknn_yolov6_demo/model/yolov6s.rknn ../../install/rk3588_linux_aarch64/rknn_yolov6_demo/model/bus.jpg 
 

成功1。
 

失败:

export ./lib

./rknn_yolov6_demo model/yolov6.rknn model/bus.jpg

这个方法没有运行成功,输出

./rknn_yolov6_demo <model_path> <image_path>

./rknn_yolov6_demo ../../rk3588_linux_aarch64/rknn_yolov6_demo/model/transport_robot_20240131.rknn ../../rk3588_linux_aarch64/rknn_yolov6_demo/model/bus.jpg 
 

这个成功2。

当前目录下的模型和图像bus.jpg,不知为啥失败

 

相关文章:

  • Docker配置镜像加速-解决黑马商城部署Mysql失败问题
  • 【算法】递归入门
  • 详解 JavaScript 中 fetch 方法
  • Linux的IO编程基础:从入门到实践
  • 《Spring实战》(第6版)第2章 开发Web应用
  • 【xdoj-离散线上练习】T234(C++)
  • 初始c语言(指针和结构体)
  • 数据结构——栈
  • Linux 更改 SSH 默认端口以提升服务器安全
  • 数据结构与算法之排序算法-选择排序
  • APP端弱网模拟与网络测试:如何确保应用在各种网络环境下稳定运行
  • 【动态规划】斐波那契数列模型
  • OpenCV 模板匹配
  • 算法-链表篇03-反转链表
  • EasyX学习笔记1:线条
  • C# struct, class的区别
  • 算法与数据结构(除自身以外数组的乘积)
  • 第2章:进阶格式与结构化元素
  • 如何利用PLM软件有效地推进制造企业标准化工作?
  • 1.综述 Google 的软件工程读书笔记
  • 芬兰西南部两架直升机相撞坠毁,第一批救援队已抵达现场
  • 上海老字号卖黄金,与动漫IP联名两周销售额近亿元
  • 梅花奖在上海|舞剧《朱鹮》,剧里剧外都是生命的赞歌
  • 网易一季度净利增长三成,丁磊:高度重视海外游戏市场
  • 中国结算澄清“严查场外配资”传闻:账户核查为多年惯例,无特殊安排
  • 4月新增社融1.16万亿,还原地方债务置换影响后信贷增速超过8%