本文完成于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的关系,我们选其一使用就好。
如何将pytorch、caffe、tensorflow、onnx等深度学习模型转换为rknn模型呢?这里需要用py文件先将它们统一转换成onnx模型,然后再使用rknpu2中的py文件进行转换即可。
1、在终端命令窗口进入 rknn_yolov5_demo 文件夹
cd examples/rknn_yolov5_demo/
运行 build-linux_RK3588.sh 脚本编译程序
./build-linux_RK3588.sh
运行目标检测程序,识别并定位图片中物体,cd到install/rknn_yolov5_demo_Linux/目录下,然后输入命令:
./rknn_yolov5_demo ./model/RK3588/yolov5s-640-640.rknn ./model/bus.jpg
参数1是可执行文件,参数2是模型文件,参数3是输入图像
当然,经过修改之后,可以对网络相机的rtsp视频流进行实时目标检测,而且置信度和检测速度非常高。
参考文献:Rockchip_Quick_Start_RKNN_SDK_V1.3.0_CN
关于过程中的截图,我也是在自己PC上操作时进行截图,然后在RK3588上操作时进行截图,两边都登录的csdn帐号进行交替写文章,可以说我在这台电脑上写一半,再到另一台电脑上继续写。过程很麻烦,但是我热爱探索和为社区奉献。如果对你有帮助,可以3连支持下博主。