Skip to content

Latest commit

 

History

History
93 lines (68 loc) · 2.4 KB

README_CN.md

File metadata and controls

93 lines (68 loc) · 2.4 KB

模型压缩与量化

量化的作用

量化将网络中主要算子(卷积)由原先的浮点计算转成低精度的Int8计算,减少模型大小并提升性能。

编译

编译MNN时开启MNN_BUILD_QUANTOOLS宏,即开启量化工具的编译,如下:

cd MNN
mkdir build
cd build
cmake -DMNN_BUILD_QUANTOOLS=ON ..
make -j4

编译之后即可得到量化工具quantized.out,使用如下。

量化工具的使用

命令

./quantized.out origin.mnn quan.mnn preprocessConfig.json
  • 第一个参数为原始模型文件路径,即待量化的浮点模型

  • 第二个参数为目标模型文件路径,即量化后的模型

  • 第三个参数为预处理的配置项,参考preprocessConfig

Json 配置

预处理配置文件格式如下:

{
    "format":"RGB",
    "mean":[
        127.5,
        127.5,
        127.5
    ],
    "normal":[
        0.00784314,
        0.00784314,
        0.00784314
    ],
    "width":224,
    "height":224,
    "path":"path/to/images/",
    "used_image_num":500,
    "feature_quantize_method":"KL",
    "weight_quantize_method":"MAX_ABS"
}

format

图片统一按RGBA读取,然后转换到format指定格式,可选:"RGB", "BGR", "RGBA", "GRAY"。

mean, normal

模型预处理需要的mean,normal, 数据按此公式填写:$dst = (src - mean) * normal$

width, height

模型输入的宽高

path

存放校正特征量化系数的图片目录

used_image_num

用于指定使用上述目录下多少张图片进行校正,默认使用path下全部图片

注意:请确保图片经过上述步骤处理之后的数据是输入到模型input接口的数据

feature_quantize_method

指定计算特征量化系数的方法,可选:

  • "KL": 使用KL散度进行特征量化系数的校正,一般需要100 ~ 1000张图片

  • "ADMM": 使用ADMM(Alternating Direction Method of Multipliers)方法进行特征量化系数的校正,一般需要一个batch的数据

默认:"KL"

weight_quantize_method

指定权值量化方法,可选:

  • "MAX_ABS": 使用权值的绝对值的最大值进行对称量化

  • "ADMM": 使用ADMM方法进行权值量化

默认:"MAX_ABS"

上述特征量化方法和权值量化方法可进行多次测试,择优使用。

量化模型的使用

和浮点模型同样使用方法,输入输出仍然为浮点类型