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

原文转载自《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 模型

  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是输入图像

Leave a Reply

Your email address will not be published. Required fields are marked *