如何在 Python 中导入 tensorflow lite 解释器?

How to import the tensorflow lite interpreter in Python?

我正在 Raspberry Pi 3b,运行 Raspbian Stretch 上使用 TF lite 开发 Tensorflow 嵌入式应用程序。我已将图表转换为平面缓冲区(精简版)格式,并在 Pi 上原生构建了 TFLite 静态库。到目前为止,一切都很好。但是应用程序是 Python 并且似乎没有可用的 Python 绑定。 Tensorflow Lite 开发指南 (https://www.tensorflow.org/mobile/tflite/devguide) 指出 "There are plans for Python bindings and a demo app." 然而 /tensorflow/contrib/lite/python/interpreter_wrapper 中的包装代码具有所有需要的解释器方法。然而,从 Python 调用它却让我望而却步。

我生成了一个 SWIG 包装器,但构建步骤失败并出现许多错误。没有 readme.md 描述 interpreter_wrapper 的状态。所以,我想知道包装器是否对其他人有用,我应该坚持还是它从根本上被破坏了,我应该去别处看看(PyTorch)?有没有人找到 Pi3 的 TFLite Python 绑定的路径?

我能够编写 python 脚本来在 x86 运行 Ubuntu 和 ARM64 主板 运行 Debian 上进行分类 1, object-detection (tested with SSD MobilenetV{1,2}) 2, and image semantic segmentation 3

  • 如何为 TF Lite 代码构建 Python 绑定:使用最近的 TensorFlow master 分支构建 pip 并安装它(是的,那些绑定在 TF 1.8 中。但是,我不知道为什么它们不是安装)。请参阅 4 了解如何构建和安装 TensorFlow pip 包。

关于使用 Python 中的 TensorFlow Lite 解释器,下面的示例是从 documentation. The code is available on the master branch of TensorFlow GitHub.

中复制的

使用模型文件中的解释器

以下示例展示了在提供 TensorFlow Lite FlatBuffer 文件时如何使用 TensorFlow Lite Python 解释器。该示例还演示了如何 运行 推断随机输入数据。 运行 help(tf.contrib.lite.Interpreter) 在 Python 终端中获取有关解释器的详细文档。

import numpy as np
import tensorflow as tf

# Load TFLite model and allocate tensors.
interpreter = tf.contrib.lite.Interpreter(model_path="converted_model.tflite")
interpreter.allocate_tensors()

# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# Test model on random input data.
input_shape = input_details[0]['shape']
input_data = np.array(np.random.random_sample(input_shape), dtype=np.float32)
interpreter.set_tensor(input_details[0]['index'], input_data)

interpreter.invoke()
output_data = interpreter.get_tensor(output_details[0]['index'])
print(output_data)