RKNN SDK User Guide学习要点
1、RKNN-Toolkit2 《RKNN SDK User Guide V1.60》
1.1 RKNN 工具链
RKNN
软件栈可以帮助用户快速的将
AI
模型部署到
Rockchip
芯片。整体的框架如下:

RKNN-Toolkit2
是为用户提供在计算机上进行
模型转换
、
推理
和
性能评估
的开发套件。
RKNN Runtime
负责加载
RKNN
模型,并调用
NPU
驱动实现在
NPU
上推理
RKNN
模型。
1.2 RKNN 使用说明
1.2.1 模型转换
模型转换是
RKNN-Toolkit2
的核心功能之一,它允许用户将各种深度学习模型从不同的框架转换为 RKNN
格式以在
RKNPU
上运行,用户可以参考模型转换流程图以帮助理解如何进行模型转换。模型转换流程如下:

在模型转换之前,用户需要进行一些配置以确保模型转换的正确性和性能。配置参数可以通过 rknn.config()
接口进行设置,包括设置输入均值、归一化值、是否量化等。
1.2.2 RKNN-Toolkit2 模型量化功能
RKNN-Toolkit2 提供三种量化算法和两种量化方法,用户可以通过 rknn.config()中的 quantized_algorithm 和
quantized_method
参数来选择。
- 三种量化算法(quantized_algorithm):
1. Normal 量化算法:通过计算模型中特征(feature)的浮点数最大值和最小值来确定量 化范围的最大值和最小值。算法的特点是速度较快,但是遇到特征分布不均衡时效果较差,推荐量化数据量一般为 20-100 张左右。
2. MMSE
量化算法:通过最小化浮点数与量化反量化后浮点数的均方误差损失确定量化范围的最大值和最小值,能够一定程度的缓解大异常值带来的量化精度丢失问题。由于采用暴力迭代的方式,速度较慢,但通常会比 normal
具有更高的精度,推荐量化数据量一般 为 20-50
张左右,用户也可以根据量化时间长短对量化数据量进行适当增减。
说明:MMSE 量化算法运行速度较慢,内存消耗大,相比 KL_Divergence 量化算法能够更好的缓解异常值造成的量化精度丢失问题。对于量化友好的模型可尝试使用 MMSE 量化算法来提高量化精度,
因为在多数场景下 MMSE 量化精度要高于 Normal 和 KL-Divergence 量化算法
3. KL-Divergence
量化算法:将模型中特征(
feature
)中浮点数和定点数抽象成两个分布,通过调整不同的阈值来更新浮点数和定点数的分布,并根据 KL
散度衡量两个分布的相似性来确定量化范围的最大值和最小值。所用时间会比 normal
多一些,但比
mmse
会少很多, 在某些场景下(feature
分布不均匀时)可以得到较好的改善效果,推荐量化数据量一般为
20-100
张左右。
- 两种量化方法(quantized_method):
1. Layer
量化方式:
Layer
量化方式将同一层网络的所有通道作为一个整体进行量化,所有通道共享相同的量化参数。
2. Channel
量化方式:
Channel
量化方式将同一层网络的各个通道独立进行量化,每个通道有自己的量化参数。通常情况下,Channel
量化方式比
Layer
量化方式具有更高的精度。
1.3 模型量化
1.3.1 量化概念
模型量化是指将深度学习模型中的浮点参数和操作转换为定点表示,如
FLOAT32
转换为 INT8
等。量化能够降低内存占用,实现模型压缩和推理加速,但会造成一定程度的精度损失。
1.3.2 Per-Layer 量化和 Per-Channel 量化
Per-Layer
量化将网络层的所有通道作为一个整体进行量化,所有通道共享相同的量化参数。Per-Channel
量化将网络层的各个通道独立进行量化,每个通道有自己的量化参数。 Per-Channel 量化更好的保留各通道的信息,能够更好的适应不同通道之间的差异,提供更好的量化效果。区别如下图所示。

2.3 量化方法优缺点对比
量化感知训练(英文名称
Quantization-aware Training
,简称
QAT
)是一种量化训练方 式,该方式旨在解决低比特量化的精度损失问题。与后训练量化(英文名称 Post Training Quantization,简
称
PTQ
)对比,两种量化方法的特点如下
:

量化说明:
量化校正集用于计算激活值的量化范围,在选择量化校正集时
应覆盖模型实际应用场 景的不同数据分布
,例如对于分类模型,量化校正集应包含实际应用场景中不同类别的图片。一般推荐量化校正集数量为 20-200
张,可根据量化算法的运行时间适当增减。需要注 意的是,增加量化校正集数量会增加量化算法的运行时间但不一定能提高量化精度。
2、RKNN SDK 快速上手指南RKNN Toolkit V1.75
2.1
安装利用清华源
pip install tensorflow==1.14.0
-i https://pypi.tuna.tsinghua.edu.cn/simple