RK3588 RKNN深度学习推理框架
2023年06月05日 09:26 发布者:繁花之语
RKNN-Toolkit2是为用户提供在 PC、 Rockchip NPU 平台上进行模型转换、推理和性能评估的开发套件,用户通过该工具提供的 Python 接口可以便捷地完成模型转换、量化功能、模型推理、性能和内存评估以及量化精度分析等多种操作。RKNN(Rockchip Neural Network)是一种用于嵌入式设备的深度学习推理框架,它提供了一个端到端的解决方案,用于将训练好的深度学习模型转换为在嵌入式设备上运行的可执行文件。使用RKNN框架可以在嵌入式设备上高效地运行深度学习模型,这对于需要在资源受限的设备上进行实时推理的应用场景非常有用。例如,可以将RKNN用于智能摄像头、机器人、四轴飞行器等嵌入式设备中,实现物体检测、人脸识别、图像分类等人工智能功能。https://img-blog.csdnimg.cn/img_convert/249a2cded70dd5ef04b86b6941146f9a.png下面,我们就使用RKNN-Toolkit2工具将rknpu2工程中的yolov5s.onnx模型转换为yolov5s.rknn模型为例进行讲解。
开发工具:飞凌嵌入式OK3588-C开发板开发环境:Ubuntu20.04
01下载RKNN-Toolkit2https://img-blog.csdnimg.cn/img_convert/8aa7a686d97778f91460d0b57068f8de.png
02安装依赖requirements_cp36-1.3.0.txt文件,在rknn-toolkit2/doc目录下:https://img-blog.csdnimg.cn/img_convert/18a194ff3f59c40fabc326082494aba0.png
03开发环境与OK3588-C开发板连接
[*] 开发环境中安装adb
https://img-blog.csdnimg.cn/img_convert/07fdd0b9985cc3b2ae0e4e1da427b60d.png
[*] 使用USB-typeC线连接到板子的TypeC0接口,PC端识别到虚拟机中。
[*] 在开发环境中检查是否连接成功
https://img-blog.csdnimg.cn/img_convert/17bceac41f75e12d94be3f5f56734379.png
如果连接成功会返回板子的设备ID,如下:https://img-blog.csdnimg.cn/img_convert/9e581f3e76a90bb1aef6e70688e1c5f4.png
04下载NPU工程https://img-blog.csdnimg.cn/img_convert/cc4e1948bce62405a690672f164dbaef.png
05将rknn_server和rknn库发送到开发板https://img-blog.csdnimg.cn/img_convert/78b398ecacd23ae10b285ca5b35f21ed.png
在OK3588-C开发板上运行rknn_server服务https://img-blog.csdnimg.cn/img_convert/dd5dc64bd00dfa8b003894e954b5b50d.png
在开发环境中检测rknn_server是否运行成功https://img-blog.csdnimg.cn/img_convert/d6877ab85bbda181882ddad7230516be.png
有返回进程id说明运行成功。
06模型转换
[*] 在开发环境中进入到rknn_toolkit2工具中的examples目录中选择一个模型。本例选择的是将onnx模型转换为RKNN模型。
[*] 修改test.py
https://img-blog.csdnimg.cn/img_convert/e6029ca704520eda0979a9762eaa7a72.png
在rknn.config中添加target_platform='rk3588' 在rknn.init_runtime中添加target='rk3588'
[*] 修改完成后,运行test.py
https://img-blog.csdnimg.cn/img_convert/b5e028670111bccffa12cedf564d2610.png
运行成功结果如下:https://img-blog.csdnimg.cn/img_convert/fd3d4af35d7768bca3a0fd675083cb10.png
https://img-blog.csdnimg.cn/img_convert/b1e6de00dcc75ec403b13c19e4ca6704.png
同时在目录下会生成yolov5s.rknn模型。https://img-blog.csdnimg.cn/img_convert/ecd6ad5f63851bf6eb1db858c7bcede5.png
07编译测试源码进入到rknpu2/examples/rknn_yolov5_demo目录下,设置环境变量:https://img-blog.csdnimg.cn/img_convert/2960f58fc8ff21d53ca9011298dc4017.png
执行编译脚本,进行编译:https://img-blog.csdnimg.cn/img_convert/7d11ef72256b415bd1bea81f2e1421d8.png
然后在rknpu2/examples/rknn_yolov5_demo/install/rknn_yolov5_demo_Linux目录下会生成rknn_yolov5_demohttps://img-blog.csdnimg.cn/img_convert/380ce1ef50a75687ed8a6ba8e80090dd.png
08将上边生成的yolov5s.rknn模型和install目录下的rknn_yolov5_demo_Linux拷贝到开发板中https://img-blog.csdnimg.cn/img_convert/73e2015b81815ab68e0203a7f9c6a696.png
进入到rknn_yolov5_demo_Linux目录下,添加链接库的环境变量(rknn_yolov5_demo_Linux目录下的lib目录)https://img-blog.csdnimg.cn/img_convert/fa6a629a2a5d38e08a3a3101b4ee86f4.png
使用rknn模型进行物体识别命令如下:https://img-blog.csdnimg.cn/img_convert/8ef6334822ebe059e0b15841de06308f.png
执行结果如下:https://img-blog.csdnimg.cn/img_convert/bf54f14a48807e605eb5c1e465e3070d.png
将生成的out.jpg拷贝到本地电脑中查看,识别结果如下。https://img-blog.csdnimg.cn/img_convert/9ebac73113b333c4f3d388f5f564542c.png
以上就是基于飞凌嵌入式OK3588-C开发板进行的RK3588推理模型转换及测试过程,希望能够对您有所帮助。