rk3588对npu的再探索,yolov5使用rknn模型推理教程
🍉零、引言
本文完成于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 模型
- 🍕可以将PC上转换后的 RK3588 平台模型 yolov5s.rknn 复制到rknpu2/examples/rknn_yolov5_demo/model/RK3588/下。
- 🍯可以使用adb从PC传输到RK3588上,需要使用数据线连接3588和PC。
- 🍨当然不复制也可以,因为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连支持下博主。
相关文章
- PhotoZoom2020pro激活序列号秘钥下载8版安装教程
- scrcpy——Android投屏神器(使用教程)
- AFNnetworking快速教程,官方入门教程译
- 系统分析师教程中的一些东西
- 这里有篇Charles详细教程,看完后就可以把Fiddler卸载了
- Python3.9.5安装教程
- OpenCV DNN模块官方教程(一)加载Caffe模型做图像分类
- SpringBoot教程(5) 单例Bean懒加载 @Lazy的使用和失效情况
- Ubuntu完全教程,让你成为Ubuntu高手
- 【2023Unity游戏开发教程】零基础带你从小白到超神02——新建第一个项目
- Vue安装脚手架教程 没有比这更详细的了
- Spring Boot2 系列教程(十三)Spring Boot 中的全局异常处理
- .NET Core 使用 DotnetSpider 抓取页面教程
- 简明 TensorFlow 教程 — 第三部分: 所有的模型
- 系统架构设计师教程-学习-记录(11)计算机网络基础知识(10)文件管理
- 《Drools7.0.0.Final规则引擎教程》第4章 4.4 约束(Pattern的一部分)