1、RKNN-Toolkit2 《RKNN SDK User Guide V1.60》
1.1 RKNN 工具链

1.2 RKNN 使用说明
1.2.1 模型转换

1.2.2 RKNN-Toolkit2 模型量化功能
- 三种量化算法(quantized_algorithm):
1. Normal 量化算法:通过计算模型中特征(feature)的浮点数最大值和最小值来确定量 化范围的最大值和最小值。算法的特点是速度较快,但是遇到特征分布不均衡时效果较差,推荐量化数据量一般为 20-100 张左右。
- 两种量化方法(quantized_method):
1.3 模型量化
1.3.1 量化概念
1.3.2 Per-Layer 量化和 Per-Channel 量化


2、RKNN SDK 快速上手指南RKNN Toolkit V1.75
2.1 RKNN-Toolkit
2.1.1功能及环境
RKNN-Toolkit 是为用户提供在 PC、 Rockchip NPU 平台上进行模型转换、推理和性能评估的开发套件,RKNN Toolkit各平台功能支持详情:
2.1.2 环境配置及测试
1)首先安装minconda:
版本为Miniconda3-4.5.4-Windows-x86_64(python36).exe,因为此版本默认的python为3.6.5
2)创建虚拟环境并激活
创建虚拟环境:conda create --name=rknn python=3.6.8
激活虚拟环境:conda activate rknn
3)安装深度学习框架
注意涉及网速问题添加镜像源
如:pip install tensorflow==1.14.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install tensorflow==1.14.0 实际证明安装1.14.0版本是有问题的,见后面处理方法
pip install torch==1.10.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
pip install torchvision==0.11.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
pip install mxnet==1.5.0
pip install opencv-python==4.3.0.38
pip install gluoncv
4)安装VS编译器
直接进入第5)步会安装失败,根据错误提示需要安装VS的编译器。
去官网下载VS2022免费版安装包,并运行,如下图所示。
安装并启动后,可执行步骤5
5) 安装 rknn-toolkit
进入rknn_toolkit-1.7.5-cp36-cp36m-win_amd64.whl所在的路径,执行下面的指令。
pip install rknn_toolkit-1.7.5-cp36-cp36m-win_amd64.whl
6)检查 RKNN-Toolkit 是否安装成功
(rknn) D:\RknnToolkit\rknn-toolkit-v1.7.5-packages\packages>python
Python 3.6.5 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from rknn.api import RKNN
>>>
如果导入 RKNN 模块没有失败,说明安装成功。
7)模型转换
首先按照D:\RknnToolkit\rknn_model_zoo-2.3.0\examples\yolov8\README.md中说明在地址
下载适用于RV1126的Yolov8n.onnx模型,不同于常规的yolov8n.onnx,有1输入9输出。用netron查看结果如下图所示。
切换到onnx转RKNN的python路径(rknn)
cd D:\RknnToolkit\rknn_model_zoo-2.3.0\examples\yolov8\python
注意:选择20~30张张量化图像文件。
执行如下指令:
(rknn) D:\RknnToolkit\rknn_model_zoo-2.3.0\examples\yolov8\python>python convert.py ../model/yolov8n.onnx rv1126
执行会提示如下警告
FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'. np_resource = np.dtype([("resource", np.ubyte, 1)])
网络查找原因并处理:原因:版本过高,先卸载再安装numpy执行如下指令
pip uninstall numpy
pip install numpy==1.16.4
再次执行上面的转换指令提示如下信息
W:tensorflow:From C:\Users\713lz\Miniconda3\envs\rknn\lib\site-packages\rknn\api\rknn.py:160: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.等错误
首先卸载再安装(原来tensorflow安装的是tensorflow version为1.14.0)
pip uninstall tensorflow
pip install tensorflow
重新安装tensorflow后,运行正常不再报错误提示。
8)RKNN所需onnx模型测试
执行如下命令
(rknn) D:\RknnToolkit\rknn_model_zoo-2.3.0\examples\yolov8\python>python yolov8.py --model_path=../model/yolov8n.onnx --img_show
提示错误:ValueError: 'rknn_model_zoo' is not in list
修改yolov8.py文件内容如下
再次执行指令效果如下:
9)模型部署
(1)移植说明
根据yolov8文件夹cpp下的文件CMakeLists.txt可以看到内容如下,说明在部署参考时一定要用rknpu1文件夹下的yolov8.cc文件。
首先,aarch64和armhf的区别。aarch64是ARM的64位架构,也就是ARMv8,而armhf是32位ARM架构,支持硬件浮点运算。RK3588是aarch64架构而RV1126是32位armhf架构。所以库的选择为:3rdparty\rknpu1\Linux\armhf\librknn_api.so,仅7K大小。
(2)官网例程
首先将D:\RknnToolkit\rknn_model_zoo-2.3.0\3rdparty\librga\include文件夹下的头文件放置在一个文件夹,该文件夹并命名为rga,将librga头文件放在Ubuntu操作系统下的
/home/thomas/rv1126/repo_new/buildroot/output/rockchip_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include路径下。
其次将D:\RknnToolkit\rknn_model_zoo-2.3.0\3rdparty\librga\Linux\armhf路径下的库文件librga.a和librga.so放置在Ubuntu操作系统下路径:
/home/thomas/rv1126/repo_new/buildroot/output/rockchip_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib
再将要包含的头文件路径添加到ai文件夹下的makefile文件中。如下图所示。
同样将sta_image头文件和jpeg_turbo中的头文件放在与rga相同的路径下并包含如上图所示。
注意:因为jpeg_turbo库文件只提供了静态库libturbojpeg.a,将此文件要放置在/home/viz/RV1126_IPC/rv1126_ipc_custom/libs/rv1126路径下,类似libai.a一样将此库编译到程序中去。
最后在demo的makefile文件中添加库文件如下图所示,编译即可。
3)利用OpenCV完成图像缩小到640模型大小
系统自带的OpenCV为3.4,利用imread读取jpg图像返回的数据一直为NULL,换成bmp图像read和write均正常。是因为当尝试加载一些特殊的图像格式(如 JPG)时,如果缺少相应的解码器支持,也可能导致加载失败。OpenCV 默认仅支持常见的 BMP/PNG 格式,其他高级格式依赖于额外插件的支持。
注意:在板子上运行命令时,需执行mon_app.sh stop,才能再次运行程序./rv1126_ip。
2.2 RKNN Toolkit Lite
1)功能:RKNN Toolkit Lite 1.75 为 RK1808 RV1126 等带有 Rockchip NPU 的平台提供 Python 编程接口,帮助用户部署 RKNN 模型,加速 AI 应用的落地。
安装利用清华源