NeuroPilot 离线工具(Quantization, Converter etc.)常见问题
**在将模型从Caffe/PyTorch转换为TFLite格式后,因为输入从NCHW更改为NHWC,需要额外添加一个转置节点,有可能避免增加这个额外的操作吗?
【问题描述】
在将模型从Caffe/PyTorch转换为TFLite格式后,因为输入从NCHW更改为NHWC,需要额外添加一个转置节点,有可能避免增加这个额外的操作吗?
【解答】
为了避免添加这个额外的节点,您可以向Caffe/PyTorch模型添加一个wrapper。
对于Caffe,参见NeuroPilot SDK文档:Developer Tools > Model Development > Converter > Converter Tool Examples > Converting from Caffe > Floating-point (with NHWC Input/Output Tensors)。
对于PyTorch,参见NeuroPilot SDK文档:Developer Tools > Model Development > Converter > Converter Tool Examples > Converting from PyTorch > Floating-point (with NHWC Input/Output Tensors)。
**Per-axis Quantization(Per-channel Quantization)和 Per-tensor Quantization两种量化方式解析
【问题描述】
NeuroPilot Quantization tool支持的Per-axis Quantization (Per-channel Quantization)和 Per-tensor Quantization两种量化有什么区别?两者分别的适宜的使用场景是什么?对于最终量化出的模型精度有差异吗?分别通过什么参数进行配置使用?
【解答】
1)区别:
per-tensor就是整个神经网络层用一组量化参数(scale, zero-point),per-channel就是一层神经网络的每个通道用一组量化参数(scale, zero-point),最终会有多组(通道数)量化参数。
2)使用场景:
这个要依据客户模型的需求来看,是否要求每个 channel 有不同的量化参数需求,一般使用场景下一套量化参数(per-tensor)即可满足量化需求。
3)精度有差异吗:
要视具体情况而定,如果要求每个 channel 都有不同的量化参数,那肯定 per-channel 精度更高,反之,不一定。
4)参数配置:
在使用mtk_converter转模型时,通过use_per_output_channel_quantization参数来控制使用per-tensor Quantization (False)还是per-channel Quantization (True)
【适用NP版本】
NP5, NP6
NP-Online Doc Reference:
1. Developer Tools » Model Development » Quantization » Quantization Tool Introduction » Background » Per-axis Quantization and Per-tensor Quantization
2. Mediatek API Reference » Converter Tool API Documentation» Pyt