使用 tflite_convert 将 Frozen graph for tfLite for Coral 转换

Convert Frozen graph for tfLite for Coral using tflite_convert

我正在使用 MobileNetV2 并尝试让它为 Google Coral 工作。除了 Coral Web 编译器抛出随机错误 Uncaught application failure 之外,一切似乎都正常。所以我认为问题在于所需的中间步骤。例如,我将其与 tflite_convert

一起使用
tflite_convert \
  --graph_def_file=optimized_graph.pb \
  --output_format=TFLITE \
  --output_file=mobilenet_v2_new.tflite \
  --inference_type=FLOAT \
  --inference_input_type=FLOAT \
  --input_arrays=input \
  --output_arrays=final_result \
  --input_shapes=1,224,224,3

我哪里错了?

这很可能是因为您的模型不是 quantized。 Edge TPU 设备目前不支持基于浮点数的模型推理。 为获得最佳结果,您应该在训练期间启用量化(如 link 中所述)。但是,您也可以在 TensorFlow Lite 转换期间应用量化。

使用 post 训练量化,您会牺牲准确性,但可以更快地测试出一些东西。当您将图形转换为 TensorFlow Lite 格式时,将 inference_type 设置为 QUANTIZED_UINT8。您还需要在命令行上应用量化参数 (mean/range/std_dev)。

tflite_convert \
  --graph_def_file=optimized_graph.pb \
  --output_format=TFLITE \
  --output_file=mobilenet_v2_new.tflite \
  --inference_type=QUANTIZED_UINT8 \
  --input_arrays=input \
  --output_arrays=final_result \
  --input_shapes=1,224,224,3 \
  --mean_values=128 --std_dev_values=127 \
  --default_ranges_min=0 --default_ranges_max=255

然后您可以将量化的 .tflite 文件传递​​给 model compiler

有关 Edge TPU 模型要求的更多详细信息,请查看 TensorFlow models on the Edge TPU