首页 > 解决方案 > 如何从 tflite 模型中提取元数据

问题描述

我在 python 中加载这个对象检测模型。我可以使用以下代码行加载它:

import tflite_runtime.interpreter as tflite

model_path = 'path_to_model_file.tf'
interpreter = tflite.Interpreter(model_path)

我可以毫无问题地对此进行推断。但是,根据模型的文档,标签应该包含在元数据中,但我无法提取它。

我是最接近的,是在关注这个时:

from tflite_support import metadata as _metadata

displayer = _metadata.MetadataDisplayer.with_model_file(model_path)
export_json_file = "extracted_metadata.json")
json_file = displayer.get_metadata_json()

# Optional: write out the metadata as a json file
with open(export_json_file, "w") as f:
  f.write(json_file)

但是第一行代码失败并出现此错误:{AtributeError}'int' object has no attribute 'tobytes'.

如何提取它?

标签: pythontensorflowtensorflow-lite

解决方案


如果您只关心标签文件,您可以像unzip model_path在 Linux 或 Mac 上一样简单地运行命令。带有元数据的 TFLite 模型本质上是一个 zip 文件。更多详情见公开介绍

您提取元数据的代码片段对我有用。确保仔细检查model_path。它应该是一个字符串,例如"lite-model_ssd_mobilenet_v1_1_metadata_2.tflite".

如果您想在 Android 应用程序中读取标签文件,这里是执行此操作的示例代码。


推荐阅读