esp-dl int8量化模型数据集评估精度下降问题
Posted: Tue Jul 18, 2023 8:55 am
您好,
一 试着将模型进行了esp-dl上int16和int8的量化,并在测试数据集上进行精度评估,其中int16的模型精度基本没有下降,但是int8的模型评估精度下降了很多,目前正在尝试修改Calibrator.set_method中的参数,与此同时有几个问题:
1.1 calibrator生成的model_calib.pickle文件,通过打印看到它是一个字典,关于其中的键值有没有相关的文档
1.2 eval.evalute_quantized_model 能否输出每一层的量化输出,而不只是最后一层,否则只能通过一次次的删除onnx模型后面的部分达到目的,太过麻烦
1.3 是否有pc端的eval/calibrator以及与libdl.a对应的c++库可以提供
这几个问题是遇到int8量化精度下降的问题时想到的关于esp-dl这边的定位方向,如果方向有问题或者有其他方向,也麻烦帮忙指出,感谢!
二 修改Calibrator.set_method遇到的问题:
2.1 calib = Calibrator('int8', 'per-tensor', 'minmax'),得到的模型参数cpp和hpp中的bias是int16的类型(可以正常评估推理),是否正常? 比如:
namespace mb_v1_ssd_coefficient
{
const dl::Filter<int8_t> *get_conv_0_filter();
const dl::Bias<int16_t> *get_conv_0_bias();
const dl::Activation<int8_t> *get_conv_0_activation();
const dl::Filter<int8_t> *get_conv_2_filter();
const dl::Bias<int16_t> *get_conv_2_bias();
const dl::Activation<int8_t> *get_conv_2_activation();
2.2 calib = Calibrator('int8', 'per-channel', 'minmax')
...
Evaluator('int8', 'per-channel', 'esp32s3')
...
[outputs, _] = eva.evalute_quantized_model(image, True)
在推理时出错:
quantization_tool/linux/evaluator.so in evaluator.Evaluator.evalute_quantized_model()
KeyError: 'input.4/QACC_shift1:0'
再次感谢!!!
一 试着将模型进行了esp-dl上int16和int8的量化,并在测试数据集上进行精度评估,其中int16的模型精度基本没有下降,但是int8的模型评估精度下降了很多,目前正在尝试修改Calibrator.set_method中的参数,与此同时有几个问题:
1.1 calibrator生成的model_calib.pickle文件,通过打印看到它是一个字典,关于其中的键值有没有相关的文档
1.2 eval.evalute_quantized_model 能否输出每一层的量化输出,而不只是最后一层,否则只能通过一次次的删除onnx模型后面的部分达到目的,太过麻烦
1.3 是否有pc端的eval/calibrator以及与libdl.a对应的c++库可以提供
这几个问题是遇到int8量化精度下降的问题时想到的关于esp-dl这边的定位方向,如果方向有问题或者有其他方向,也麻烦帮忙指出,感谢!
二 修改Calibrator.set_method遇到的问题:
2.1 calib = Calibrator('int8', 'per-tensor', 'minmax'),得到的模型参数cpp和hpp中的bias是int16的类型(可以正常评估推理),是否正常? 比如:
namespace mb_v1_ssd_coefficient
{
const dl::Filter<int8_t> *get_conv_0_filter();
const dl::Bias<int16_t> *get_conv_0_bias();
const dl::Activation<int8_t> *get_conv_0_activation();
const dl::Filter<int8_t> *get_conv_2_filter();
const dl::Bias<int16_t> *get_conv_2_bias();
const dl::Activation<int8_t> *get_conv_2_activation();
2.2 calib = Calibrator('int8', 'per-channel', 'minmax')
...
Evaluator('int8', 'per-channel', 'esp32s3')
...
[outputs, _] = eva.evalute_quantized_model(image, True)
在推理时出错:
quantization_tool/linux/evaluator.so in evaluator.Evaluator.evalute_quantized_model()
KeyError: 'input.4/QACC_shift1:0'
再次感谢!!!