我想使用预训练模型并在其末尾添加一个分割头,但问题是我只有“ frozen_inference_graph.pb ”。这些是我从模型中获得的文件:
我尝试了几种方法:
1. 将预训练的模型加载到 Keras 模型中: 我拥有的文件似乎是不可能的。它只是给了我一个 AutoTrackable 对象而不是一个模型。
2. 访问冻结模型的张量对象并使用张量制作模型: 我发现了如何访问张量,但无法使用张量对象制作 Keras 模型。
with self.graph.as_default():
graph = tf.import_graph_def(graph_def, name='')
graph = tf.compat.v1.import_graph_def(graph_def)
tf.compat.v1.Graph.as_default(graph)
self.sess = tf.Session(graph=self.graph)
self.tensors = [tensor for op in tf.compat.v1.get_default_graph().get_operations() for tensor in op.values()]
在这里我可以得到张量,但我不能在模型中使用张量:
model = tf.keras.models.Model(inputs=self.tensors[0], outputs=self.tensors[-1])
有没有办法将此冻结图转换为 Keras 模型?或者,如果有另一种方法可以训练模型,我会很高兴知道。
PS 预训练模型是“ ssd_mobilenet_v3_small_coco_2020_01_14 ”,可以在这里找到。