将 .pb 模型转换为量化的 tflite 模型

convert .pb model into quantized tflite model

对 Tensorflow 完全陌生, 我使用从 TensorFlow zoo 中找到的 'faster_rcnn_inception_v2_coco_2018_01_28' 模型创建了一个对象检测模型(.pb 和 .pbtxt)。它在 windows 上运行良好,但我想在 google 珊瑚边缘 TPU 上使用该模型。如何将我的冻结模型转换为 edgetpu.tflite 量化模型?

还有 2 个步骤 pipeline:

1) 转换.pb -> tflite:

我不会详细介绍,因为在 tensorflow 官方页面上有这方面的文档并且它经常更改,但我仍然会尝试专门回答您的问题。有两种方法可以做到这一点:

  • 量化感知训练:这发生在模型训练期间。我认为这不适用于你,因为你的问题似乎表明你不知道这个过程。但是,如果我错了,请纠正我。

  • Post 训练量化:基本上加载所有张量均为 float 类型的模型,并将其转换为具有 int8 张量的 tflite 形式。同样,我不会讲太多细节,但我会给你 2 个这样做的实际例子:) a) with code b) with tflite_convert tools

2) 从 tflite 编译模型 -> edgetpu.tflite:

生成完全量化的 tflite 模型后,恭喜您的模型现在在 arm 平台上效率更高,而且尺寸更小。但是,除非您为 edgetpu 编译它,否则它在 CPU 上仍将是 运行。您可以查看 this doc 了解安装和使用情况。但是编译它很简单:

$ edgetpu_compiler -s your_quantized_model.tflite

希望对您有所帮助!