我想基于经过重新训练的ssd_mobilenet模型(类似于youtube上的那个家伙)创建一个对象检测应用。
我ssd_mobilenet_v2_coco
从Tensorflow Model Zoo中选择了模型。在重新训练过程之后,我得到了具有以下结构的模型:
- saved_model
- variables (empty folder)
- saved_model.pb
- checkpoint
- frozen_inverence_graph.pb
- model.ckpt.data-00000-of-00001
- model.ckpt.index
- model.ckpt.meta
- pipeline.config
在同一文件夹中,我具有带有以下代码的python脚本:
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model("saved_model")
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
运行此代码后,出现以下错误:
ValueError: None is only supported in the 1st dimension. Tensor 'image_tensor' has invalid shape '[None, None, None, 3]'.
似乎模型中缺少图像宽度和高度。当我使用youtube视频中的模型时,它正在工作。
经过大量的研究和尝试,我尝试了其他方法,例如运行bazel / toco,但是没有任何帮助我创建tflite文件。
如文档中所述,您可以在中传递不同的参数tf.lite.TFLiteConverter.from_saved_model
。
对于更复杂的SavedModels,可以传入的可选参数
TFLiteConverter.from_saved_model()
是input_arrays, input_shapes, output_arrays, tag_set and signature_key
。可通过运行获得每个参数的详细信息help(tf.lite.TFLiteConverter)
。
您可以按照此处所述传递此信息。您需要提供输入张量名称及其形状,还需要输出张量名称及其形状。对于ssd_mobilenet_v2_coco
,您需要定义使用网络的输入形状,如下所示:
tf.lite.TFLiteConverter.from_saved_model("saved_model", input_shapes={"image_tensor" : [1,300,300,3]})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句