【问题标题】:Quantize MobileFaceNet with TFLITE failed使用 TFLITE 量化 MobileFaceNet 失败
【发布时间】:2020-10-29 10:50:53
【问题描述】:

我正在尝试寻找在 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,但不谈论量化。 有人可以提供一些建议吗?非常感谢!!

【问题讨论】:

    标签: face-recognition tensorflow-lite


    【解决方案1】:

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

    编辑:

    您目前所做的称为“虚拟量化”,可用于测试量化网络的推理时序。为了正确量化网络,应使用假量化节点将层的最小/最大信息注入其中。

    请参阅this gist 以获取有关如何执行此操作的示例代码。 This blog post 也有一些关于量化意识训练的信息。

    【讨论】:

    • 感谢您的评论。我正在使用 TF1.12,并使用 --graph_def_file tf-lite/MobileFacenet.pb 文件进行转换。我认为 pb 文件和保存的模型都应该由 TF 支持?
    • 他们应该是。您在尝试转换时收到的确切错误消息是什么?
    • 我没有收到错误信息,但结果不正确。我只是比较两张人脸图像,得到MobileFacenet.pb的编码,并转换成*.tflite。并计算 eu 距离以验证输出。对于同一个人的脸,距离应该小于不同人的脸。 *.pb 的输出或使用 --post_training_quantize 1 转换为 *.tflite 是可以的。但是用上面的命令转换成uint8的时候,结果是不正确的。
    • 你现在做的叫做“dummy quantization”,可以用来测试量化网络的推理时序。为了正确量化网络,应该使用假量化节点将层的最小/最大信息注入其中。请参阅this gist 以获取有关如何执行此操作的示例代码。 This blog post 也有一些关于量化意识训练的信息。
    • 不客气。我在答案中也添加了我之前的评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 2020-09-15
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多