使用 TFLITE 量化 MobileFaceNet 失败

Quantize MobileFaceNet with TFLITE failed

我正在尝试找到 运行 AI 相机人脸识别的解决方案。并且发现 MobileFacenet (code from sirius-ai) 作为灯光模型很棒!

我成功转换为 F32 格式的 TFLITE,准确度很高。 但是,当我使用以下命令量化为 uint8 时失败:

tflite_convert --output_file tf-lite/MobileFacenet_uint8_128.tflite 
--graph_def_file tf-lite/MobileFacenet.pb 
--input_arrays "input" 
--input_shapes "1,112,112,3" 
--output_arrays output 
--output_format TFLITE 
--mean_values 128 
--std_dev_values 127.5 
--default_ranges_min 0 
--default_ranges_max 255 
--inference_type QUANTIZED_UINT8 
--inference_input_type QUANTIZED_UINT8

This thread 帮助转换为TFLITE,但不谈论量化。 谁能提供一些建议?非常感谢!!

使用 tflite_convert 需要定义 --saved_model_dir--keras_model_file。使用 TF2.x 时,如果要从冻结图转换为量化的 tflite,则应使用 --enable_v1_converter

编辑:

你现在做的叫做“虚拟量化”,可以用来测试量化网络的推理时序。为了正确地量化网络,min/max层的信息应该用假的量化节点注入它。

请参阅 this gist for example codes on how to do it. This blog post 还有一些关于量化感知训练的信息。