Toybrick

标题: rknn混合量化问题 [打印本页]

作者: zhang123    时间: 2021-9-27 15:46
标题: rknn混合量化问题
为什么混合量化时,将所有层的量化类型设为float32得到的rknn模型大小还是原模型的一半
用dynamic_fixed_point-i16和float32设置的层得到的rknn模型大小一样,如下图
原模型weight格式是34.8MB

所有层float32和dynamic_fixed_point-i16得到的大小一样都是17.4MB,这点搞不懂
# add layer name and corresponding quantized_dtype to customized_quantize_layers, e.g conv2_3: float32
customized_quantize_layers: {
    convolution_1:  dynamic_fixed_point-i16,
    leakyrelu_3:  dynamic_fixed_point-i16,
    pooling_4:  dynamic_fixed_point-i16,
    convolution_5:  dynamic_fixed_point-i16,
    leakyrelu_7:  dynamic_fixed_point-i16,
    pooling_8:  dynamic_fixed_point-i16,
    convolution_9:  dynamic_fixed_point-i16,
    leakyrelu_11:  dynamic_fixed_point-i16,
    pooling_12:  dynamic_fixed_point-i16,
    convolution_13:  dynamic_fixed_point-i16,
    leakyrelu_15:  dynamic_fixed_point-i16,
    pooling_16:  dynamic_fixed_point-i16,
    convolution_17:  dynamic_fixed_point-i16,
    leakyrelu_19:  dynamic_fixed_point-i16,
    pooling_20:  dynamic_fixed_point-i16,
    convolution_21:  dynamic_fixed_point-i16,
    leakyrelu_23:  dynamic_fixed_point-i16,
    pooling_24:  dynamic_fixed_point-i16,
    convolution_25:  dynamic_fixed_point-i16,
    leakyrelu_27:  dynamic_fixed_point-i16,
    convolution_28:  dynamic_fixed_point-i16,
    leakyrelu_30:  dynamic_fixed_point-i16,
    convolution_37:  dynamic_fixed_point-i16,
    convolution_31:  dynamic_fixed_point-i16,
    leakyrelu_39:  dynamic_fixed_point-i16,
    upsampling_40:  dynamic_fixed_point-i16,
    leakyrelu_33:  dynamic_fixed_point-i16,
    concat_41:  dynamic_fixed_point-i16,
    convolution_34:  dynamic_fixed_point-i16,
    convolution_42:  dynamic_fixed_point-i16,
    leakyrelu_44:  dynamic_fixed_point-i16,
    convolution_45:  dynamic_fixed_point-i16
    }

# add layer name and corresponding quantized_dtype to customized_quantize_layers, e.g conv2_3: float32
customized_quantize_layers: {
    convolution_1:  float32,
    leakyrelu_3:  float32,
    pooling_4:  float32,
    convolution_5:  float32,
    leakyrelu_7:  float32,
    pooling_8:  float32,
    convolution_9:  float32,
    leakyrelu_11:  float32,
    pooling_12:  float32,
    convolution_13:  float32,
    leakyrelu_15:  float32,
    pooling_16:  float32,
    convolution_17:  float32,
    leakyrelu_19:  float32,
    pooling_20:  float32,
    convolution_21:  float32,
    leakyrelu_23:  float32,
    pooling_24:  float32,
    convolution_25:  float32,
    leakyrelu_27:  float32,
    convolution_28:  float32,
    leakyrelu_30:  float32,
    convolution_37:  float32,
    convolution_31:  float32,
    leakyrelu_39:  float32,
    upsampling_40:  float32,
    leakyrelu_33:  float32,
    concat_41:  float32,
    convolution_34:  float32,
    convolution_42:  float32,
    leakyrelu_44:  float32,
    convolution_45:  float32
    }




作者: zhang123    时间: 2021-9-27 15:49
为什么设置float32没有效果呢?
作者: brunolin    时间: 2021-9-30 09:16
請參考Rockchip_Trouble_Shooting_RKNN_Toolkit_V1.6.1_CN.pdf
1.4.2  转换模型时如果 do_quantization 为 False,是否也会进行量化,量化精度是什么?(因为转换后模型体积小了接近一半)
分两种情况,当导入的模型是量化的模型时,do_quantization=False 会使用该模型里面
的量化参数,具体请参考 1.4.1 的回答。当导入的模型是非量化模型时,do_quantization=False
不会做量化的操作,但是会把权重从 float32 转成 float16,这块不会有精度损失。
作者: zhang123    时间: 2021-10-8 09:55
brunolin 发表于 2021-9-30 09:16
請參考Rockchip_Trouble_Shooting_RKNN_Toolkit_V1.6.1_CN.pdf
1.4.2  转换模型时如果 do_quantization 为  ...

收到,谢谢
作者: kaaier    时间: 2022-5-6 22:38
brunolin 发表于 2021-9-30 09:16
請參考Rockchip_Trouble_Shooting_RKNN_Toolkit_V1.6.1_CN.pdf
1.4.2  转换模型时如果 do_quantization 为  ...

您好,请问FP32转为FP16为何不会有精度损失!




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3