如何从 saved_model (SSD MobileNet) 创建一个 tflite 文件
How to create a tflite file from saved_model (SSD MobileNet)
我想创建一个基于重新训练的 ssd_mobilenet 模型的对象检测应用程序我已经像 youtube 上的那个人一样重新训练了。
我从Tensorflow Model Zoo中选择了型号ssd_mobilenet_v2_coco
。在重新训练过程之后,我得到了具有以下结构的模型:
- 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 文件。
如documentation中所述,您可以在tf.lite.TFLiteConverter.from_saved_model
中传递不同的参数。
For more complex SavedModels, the optional parameters that can be passed into TFLiteConverter.from_saved_model()
are input_arrays, input_shapes, output_arrays, tag_set and signature_key
. Details of each parameter are available by running help(tf.lite.TFLiteConverter)
.
您可以按照 here 所述传递此信息。您需要提供输入张量名称及其形状,还需要提供输出张量名称及其形状。对于 ssd_mobilenet_v2_coco
,您需要像这样定义需要在哪个输入形状上使用网络:
tf.lite.TFLiteConverter.from_saved_model("saved_model", input_shapes={"image_tensor" : [1,300,300,3]})
我想创建一个基于重新训练的 ssd_mobilenet 模型的对象检测应用程序我已经像 youtube 上的那个人一样重新训练了。
我从Tensorflow Model Zoo中选择了型号ssd_mobilenet_v2_coco
。在重新训练过程之后,我得到了具有以下结构的模型:
- 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 文件。
如documentation中所述,您可以在tf.lite.TFLiteConverter.from_saved_model
中传递不同的参数。
For more complex SavedModels, the optional parameters that can be passed into
TFLiteConverter.from_saved_model()
areinput_arrays, input_shapes, output_arrays, tag_set and signature_key
. Details of each parameter are available by runninghelp(tf.lite.TFLiteConverter)
.
您可以按照 here 所述传递此信息。您需要提供输入张量名称及其形状,还需要提供输出张量名称及其形状。对于 ssd_mobilenet_v2_coco
,您需要像这样定义需要在哪个输入形状上使用网络:
tf.lite.TFLiteConverter.from_saved_model("saved_model", input_shapes={"image_tensor" : [1,300,300,3]})