如何从tflite模型中提取元数据

3
我正在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'

如何提取它?

1个回答

4
如果您只关心标签文件,可以在Linux或Mac上运行如下命令: unzip model_path。带有元数据的TFLite模型本质上是一个zip文件。有关详细信息,请参见公共介绍
您的提取元数据的代码片段在我的环境中有效。请确保仔细检查model_path。它应该是一个字符串,例如"lite-model_ssd_mobilenet_v1_1_metadata_2.tflite"
如果您想在Android应用程序中读取标签文件,则这里是样例代码。

再次尝试了一下我的代码,"成功"了:我现在可以看到元数据,但它并不显示标签文件本身。不过,解压缩是成功的,谢谢! - Rodrigo Laguna
1
MetadataDisplayer没有显示标签,虽然我们应该这样做。我会添加一个方法来实现。 - Lu Wang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接