在Rock5A上体验RKNN

举报
张辉 发表于 2023/07/09 13:30:17 2023/07/09
【摘要】 Rock5A
张小白 https://bbs.huaweicloud.com/blogs/405153 对Rock5a开箱和制卡,下面该做什么呢?

先看看Rock5a是什么:
Rock5a是Radxa(瑞莎)推出的一款高性能miniPC,使用了瑞芯微 RK3588S 处理器。跟以前推出的Rock5b相比,尺寸更小(Rock5b的尺寸是100mm x 72mm,Rock5a的尺寸是85mm x 56mm)。
瑞芯微 RK3588S 有4个2.2~2.4GHz 的 ARM Cortex-A76 CPU 内核、4个1.8GHz 的 Cortex-A55 内核、Mali-G610 MC4的GPU以及1个支持INT4、INT8、INT16、FP16、BF16和TF32加速计算的NPU(AI性能高达6TOPS)。
那么,就像Nvidia的GPU靠CUDA,昇腾的NPU靠CANN一样,如何发挥Rock5a在AI计算上的性能呢?这就不得不提到RKNN了。
RKNN是 Rockchip NPU使用的模型,模型文件以.rknn后缀结尾。Rockchip 提供了完整的模型转换工具,方便用户将自主研发的算法模型转换成 RKNN 模型,同时Rockchip也提供了C/C++和Python API接口。RKNN-Toolkit 是在 PC和Rockchip NPU 平台上进行模型转换、推理和性能评估的开发套件。它支持将Caffe、TensorFlow、TensorFlow Lite、ONNX、Darknet、Pytorch、MXNet等模型转换成RKNN模型,支持RKNN模型导入导出、进而在Rockchip NPU上加载使用。

我们来尝试一下吧!
确认一下linux内核版本:5.10.110

更新下apt源:
sudo apt-get update

安装git软件:
sudo apt-get install git

下载Raxda官方提供的 rknpu2代码仓:
git clone https://github.com/rockchip-linux/rknpu2.git

将代码仓中的库和可执行文件拷贝到rock5a的ubuntu系统目录下:
cd rknpu2
sudo cp ./runtime/RK3588/Linux/librknn_api/aarch64/* /usr/lib
sudo cp ./runtime/RK3588/Linux/rknn_server/aarch64/usr/bin/* /usr/bin/

安装Python依赖包:
sudo apt-get install -y python3-dev


sudo apt-get install -y python3-pip

sudo apt-get install -y python3-numpy

sudo apt-get install -y python3-opencv


下载RKNN-toolkit代码仓:
git clone https://github.com/rockchip-linux/rknn-toolkit2.git

进入到RKNN-toolskit下的arm安装包目录:./rknn-toolkit2/rknn_toolkit_lite2/packages
再次确认下Python的版本是3.10.6,Pip也是。


于是对应的,使用pip安装Python3.10对应的whl包:
pip3 install ./rknn_toolkit_lite2-1.5.0-cp310-cp310-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple/

进入样例目录:./rknn-toolkit2/rknn_toolkit_lite2/examples/inference_with_lite

可以看到这里有resnet18对应多个芯片的rknn文件,其中rk3588文件就是rock5a可以使用的模型文件。
我们执行下样例程序:
python3 test.py

可以看到使用RKNN-toolkit推理的结果。
使用文本方式看看:
rock@rock-5a:~/rknn-toolkit2/rknn_toolkit_lite2/examples/inference_with_lite$ python3 test.py
--> Load RKNN model
done
--> Init runtime environment
I RKNN: [22:59:21.100] RKNN Runtime Information: librknnrt version: 1.5.0 (e6fe0c678@2023-05-25T08:09:20)
I RKNN: [22:59:21.112] RKNN Driver Information: version: 0.8.2
I RKNN: [22:59:21.127] RKNN Model Information: version: 4, toolkit version: 1.5.0+1fa95b5c(compiler version: 1.5.0 (e6fe0c678@2023-05-25T16:15:03)), target: RKNPU v2, target platform: rk3588, framework name: PyTorch, framework layout: NCHW, model inference type: static_shape
done
--> Running model
resnet18
-----TOP 5-----
[812]: 0.9996760487556458
[404]: 0.00024927023332566023
[657]: 1.449744013370946e-05
[466 833]: 9.023910024552606e-06
[466 833]: 9.023910024552606e-06

done
这个推理使用了以下图片:space_shuttle_224.jpg

推理结果是99%是类别812。至于这个812是什么类型,可能是要查一下模型使用的是什么数据集,目前张小白不敢贸然得出结论。

从这个样例脚本主代码部分可以看出:
先定义了一个RKNNLite数据类型的变量rknn_lite,使用load_krnn加载模型,调用opencv加载图片,将图片进行BGR到RGB的转换,然后使用init_runtime初始化NPU运行环境,调用inference对前面转换好的图片进行推理,最后使用release释放相关资源。

参考资料:
1、瑾怀轩:【智能硬件】初识RKNN https://blog.csdn.net/ckq707718837/article/details/124171177
2、刘墨苏:【新手向】Rock5B配置AI环境并运行RKNN2 Demo测试NPU https://blog.csdn.net/m0_50679156/article/details/127332651

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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