本项目使用rknn工具进行对模型的量化,rknn提供了python下的多种api接口,可以进行模型的转换、推理运行和性能评估。
rknn环境搭建
https://github.com/rockchip-linux/rknn-toolkit 从官方github中下载rknn-toolkit
按照其doc中用户手册指导安装 以1.7.0版本为例
- 安装 Python3.5
sudo apt-get install python3.5
- 安装 pip3
sudo apt-get install python3-pip
- 获取 RKNN-Toolkit 安装包,然后执行以下步骤:
a)进入 package 目录:
cd package/
b)安装 Python 依赖
pip3 install tensorflow==1.14.0
pip3 install mxnet==1.5.0
pip3 install torch==1.5.1 torchvision==0.4.0
pip3 install gluoncv
c)安装 RKNN-Toolkit
sudo pip3 install rknn_toolkit-1.7.0-cp35-cp35m-linux_x86_64.whl
d)检查 RKNN-Toolkit 是否安装成功
*@*:~/rknn-toolkit-v1.7.0/package$ python3
>>> from rknn.api import RKNN
>>>
如果导入 RKNN 模块没有失败,说明安装成功。
References :
https://blog.csdn.net/hanpengyu/article/details/113272923
hybrid_quantization混合量化
以1.7.0版本为例,目前混合量化功能支持如下三种用法:
1.将指定的量化层改成非量化层(如用 float32 进行计算)。因 NPU 上非量化算力较低,推
理速度会有一定降低。
2. 将指定的非量化层改成量化层。
3. 修改指定量化层的量化参数。
量化流程如下图
官方提供的例程也较为详细/examples/common_function_demos/hybrid_quantization
以pyotorch下的MobilenetSSD为例,用本系列(二)中的方法将模型转化生成.pt文件
再使用rknn提供的api接口进行模型的加载即可进行对模型的量化,最后生成量化后的rknn文件
ret = rknn.load_pytorch(model='./ssd.pt', input_size_list=[[ 3, 300, 300]])