rk3588对npu的再探索,yolov5使用rknn模型推理教程

举报
振华OPPO 发表于 2022/11/30 20:43:05 2022/11/30
【摘要】 @TOC 🍉零、引言本文完成于2022-07-02 22:22:27。 博主刚开始在瑞芯微ITX-3588J-8K的开发板上跑了官方的yolov5目标检测算法,检测了ip相机rtsp视频流,但是每帧处理需要833ms左右,和放PPT一样。本来想使用tensorrt进行加速推理,但前提需要cuda,rk的板子上都是arm的手机gpu,没有nvidia的cuda,所以不能这样适配。那么转过来,...

@TOC

🍉零、引言

本文完成于2022-07-02 22:22:27。 博主刚开始在瑞芯微ITX-3588J-8K的开发板上跑了官方的yolov5目标检测算法,检测了ip相机rtsp视频流,但是每帧处理需要833ms左右,和放PPT一样。本来想使用tensorrt进行加速推理,但前提需要cuda,rk的板子上都是arm的手机gpu,没有nvidia的cuda,所以不能这样适配。那么转过来,使用开发板自带的NPU进行加速推理,岂不是最佳方案,因为它本身就是人工智能开发板,不用NPU相当于没有发挥它的全部能力。

🏅然后今天(2022.7.2)成功实践了转换rknn模型,并使用npu推理。为了让后面的同学少走弯路,特此花1个h记录下RKNPU2的使用教程,因为官方教程只有Android版本,所以Ubuntu系统的都是我自己摸索出来的。上一期是使用RKNN-Toolkit的教程:rk3588使用npu进行模型转换和推理,加速AI应用落地
在这里插入图片描述

🍍一、环境信息

PC操作系统 Ubuntu18.04(x86_64)
开发板 RK3588
开发板操作系统 Ubuntu20.04(aarch64)

本教程以 rknn_yolov5_demo 在 RK3588 Ubuntu20.04 64位 平台上运行为例,介绍如何使用RKNPU2。这里RKNPU2就是Firefly对第二代板子使用的NPU版本,我在github上看了RKNPU的文件,是给3399系列和之前的板子使用的。

在这里插入图片描述

🍎二、下载工具

RK3588 内置 NPU 模块, 处理性能最高可达6TOPS。使用该NPU需要下载RKNN SDK,RKNN SDK 为带有 NPU 的 RK3588S/RK3588 芯片平台提供编程接口,能够帮助用户部署使用 RKNN-Toolkit2 导出的 RKNN 模型,加速 AI 应用的落地。

我们直接cd到build目录下进行sh编译,出现下面报错:
在这里插入图片描述查看手册,上面说板子为linux系统则需下载 gcc 交叉编译器,那么我们就来下载g++,输入下面命令:

sudo apt-get install aarch-linux-gnu-g++

安装好之后,输入命令查看g++版本

aarch-linux-gnu-g++ -v

gcc是GCC中的GUN C Compiler(C 编译器),g++是GCC中的GUN C++ Compiler(C++编译器),其实两者都可以编译c和c++代码,就好比c++和c的关系,我们选其一使用就好。

在这里插入图片描述

🍌三、更新 RKNN 模型

  1. 🍕可以将PC上转换后的 RK3588 平台模型 yolov5s.rknn 复制到rknpu2/examples/rknn_yolov5_demo/model/RK3588/下。
  2. 🍯可以使用adb从PC传输到RK3588上,需要使用数据线连接3588和PC。
  3. 🍨当然不复制也可以,因为example中就自带.rknn模型。

在这里插入图片描述
如何将pytorch、caffe、tensorflow、onnx等深度学习模型转换为rknn模型呢?这里需要用py文件先将它们统一转换成onnx模型,然后再使用rknpu2中的py文件进行转换即可。
在这里插入图片描述

🍇四、编译 rknn_yolov5_demo

1、在终端命令窗口进入 rknn_yolov5_demo 文件夹

cd examples/rknn_yolov5_demo/

运行 build-linux_RK3588.sh 脚本编译程序

./build-linux_RK3588.sh 

🍎五、在板端运行 rknn_yolov5_demo

运行目标检测程序,识别并定位图片中物体,cd到install/rknn_yolov5_demo_Linux/目录下,然后输入命令:

./rknn_yolov5_demo ./model/RK3588/yolov5s-640-640.rknn ./model/bus.jpg

参数1是可执行文件,参数2是模型文件,参数3是输入图像;

在这里插入图片描述

下面是检测效果,检测框上面标注了类别和置信度,可以看到模型中一共80个类别,还有几个物体因为遮挡没有被检测出来:

在这里插入图片描述

参考文献:Rockchip_Quick_Start_RKNN_SDK_V1.3.0_CN
关于过程中的截图,我也是在自己PC上操作时进行截图,然后在RK3588上操作时进行截图,两边都登录的csdn帐号进行交替写文章,可以说我在这台电脑上写一半,再到另一台电脑上继续写。过程很麻烦,但是我热爱探索和为社区奉献。如果对你有帮助,可以3连支持下博主。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。