如何从TensorFlow对象检测api?;

如何从TensorFlow对象检测api?;,tensorflow,object-detection,Tensorflow,Object Detection,我想从TensorFlow对象检测api测试TF1 model zoo中提供的mobiledet模型 因为预训练文件包含pb文件和ckpt文件。 因此,我尝试了两种方法加载预训练模型进行推理 首先,我尝试直接加载tflite_graph.pb。我遇到了以下问题,我尝试更改tf版本,但仍然没有解决 代码如下所示: MODEL_DIR = '/tf_ckpts/ssdlite_mobiledet_cpu_320x320_coco_2020_05_19/' MODEL_CHECK_FILE = os.

我想从TensorFlow对象检测api测试TF1 model zoo中提供的mobiledet模型

因为预训练文件包含pb文件和ckpt文件。 因此,我尝试了两种方法加载预训练模型进行推理

首先,我尝试直接加载tflite_graph.pb。我遇到了以下问题,我尝试更改tf版本,但仍然没有解决

代码如下所示:

MODEL_DIR = '/tf_ckpts/ssdlite_mobiledet_cpu_320x320_coco_2020_05_19/'
MODEL_CHECK_FILE = os.path.join(MODEL_DIR, 'tflite_graph.pb')
graph = tf.Graph()
with graph.as_default():
    graph_def = tf.GraphDef()
    with tf.gfile.Open(MODEL_CHECK_FILE,'rb') as f:
        graph_def.ParseFromString(f.read())
    tf.import_graph_def(graph_def, name='')
Traceback (most recent call last):
  File "/home/zhaoxin/workspace/models-1.12.0/research/tf_load.py", line 15, in <module>
    saver=tf.train.import_meta_graph(meta_path)
  File "/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow_core/python/training/saver.py", line 1453, in import_meta_graph
    **kwargs)[0]
  File "/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow_core/python/training/saver.py", line 1477, in _import_meta_graph_with_return_elements
    **kwargs))
  File "/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow_core/python/framework/meta_graph.py", line 809, in import_scoped_meta_graph_with_return_elements
    return_elements=return_elements)
  File "/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow_core/python/util/deprecation.py", line 507, in new_func
    return func(*args, **kwargs)
  File "/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow_core/python/framework/importer.py", line 405, in import_graph_def
    producer_op_list=producer_op_list)
  File "/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow_core/python/framework/importer.py", line 501, in _import_graph_def_internal
    graph._c_graph, serialized, options)  # pylint: disable=protected-access
tensorflow.python.framework.errors_impl.NotFoundError: Op type not registered 'LegacyParallelInterleaveDatasetV2' in binary running on localhost.localdomain. Make sure the Op and Kernel are registered in the binary running in this process. Note that if you are loading a saved graph which used ops from tf.contrib, accessing (e.g.) `tf.contrib.resampler` should be done before importing the graph, as contrib ops are lazily registered when the module is first accessed.
错误如下:

MODEL_DIR = '/tf_ckpts/ssdlite_mobiledet_cpu_320x320_coco_2020_05_19/'
MODEL_CHECK_FILE = os.path.join(MODEL_DIR, 'tflite_graph.pb')
graph = tf.Graph()
with graph.as_default():
    graph_def = tf.GraphDef()
    with tf.gfile.Open(MODEL_CHECK_FILE,'rb') as f:
        graph_def.ParseFromString(f.read())
    tf.import_graph_def(graph_def, name='')
Traceback (most recent call last):
  File "/home/zhaoxin/workspace/models-1.12.0/research/tf_load.py", line 15, in <module>
    saver=tf.train.import_meta_graph(meta_path)
  File "/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow_core/python/training/saver.py", line 1453, in import_meta_graph
    **kwargs)[0]
  File "/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow_core/python/training/saver.py", line 1477, in _import_meta_graph_with_return_elements
    **kwargs))
  File "/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow_core/python/framework/meta_graph.py", line 809, in import_scoped_meta_graph_with_return_elements
    return_elements=return_elements)
  File "/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow_core/python/util/deprecation.py", line 507, in new_func
    return func(*args, **kwargs)
  File "/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow_core/python/framework/importer.py", line 405, in import_graph_def
    producer_op_list=producer_op_list)
  File "/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow_core/python/framework/importer.py", line 501, in _import_graph_def_internal
    graph._c_graph, serialized, options)  # pylint: disable=protected-access
tensorflow.python.framework.errors_impl.NotFoundError: Op type not registered 'LegacyParallelInterleaveDatasetV2' in binary running on localhost.localdomain. Make sure the Op and Kernel are registered in the binary running in this process. Note that if you are loading a saved graph which used ops from tf.contrib, accessing (e.g.) `tf.contrib.resampler` should be done before importing the graph, as contrib ops are lazily registered when the module is first accessed.
回溯(最近一次呼叫最后一次):
文件“/home/zhaoxin/workspace/models-1.12.0/research/tf_load.py”,第15行,在
saver=tf.train.import\u元图(元路径)
文件“/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site packages/tensorflow\u core/python/training/saver.py”,第1453行,在导入元图中
**kwargs)[0]
文件“/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site packages/tensorflow\u core/python/training/saver.py”,第1477行,在带有返回元素的元图中
**夸尔格)
文件“/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site packages/tensorflow\u core/python/framework/meta\u graph.py”,第809行,在带有返回元素的导入范围的meta\u图中
返回元素=返回元素)
文件“/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site packages/tensorflow_core/python/util/deprecation.py”,第507行,在new_func中
返回函数(*args,**kwargs)
文件“/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow\u-core/python/framework/importer.py”,第405行,在import\u-graph\u-def中
制片人名单=制片人名单)
文件“/home/zhaoxin/tools/miniconda3/envs/tf115/lib/python3.6/site-packages/tensorflow\u-core/python/framework/importer.py”,第501行,在导入图中
图形。_c_图形,序列化,选项)pylint:disable=受保护的访问
tensorflow.python.framework.errors\u impl.NotFoundError:Op类型未在localhost.localdomain上运行的二进制文件中注册'LegacyParallelInterleaveDatasetV2'。确保在该进程中运行的二进制文件中注册了Op和内核。请注意,如果您正在从tf.contrib加载使用ops的已保存图形,则应在导入图形之前访问(例如)`tf.contrib.resampler',因为在首次访问模块时,contrib ops是延迟注册的。
以上两种方法的加载错误似乎是由于tf版本不一致造成的,但我已经尝试了很多tf版本,都没有解决。是否有人在TF1对象检测模型动物园中成功运行mobiledet模型?

操作系统:linux


TF版本:TF 1.15

@Shane Zhao-您计划使用自定义数据集进行培训,还是按原样使用预训练图?据我所知,Tensorflow的版本只在培训期间起作用。无论如何,请在Colab-
https://colab.research.google.com/github/luxonis/depthai-ml-training/blob/master/colab-notebooks/Easy_Object_Detection_Demo_Training.ipynb#scrollTo=JDddx2rPfex9

@Shane Zhao-您计划使用自定义数据集进行培训,还是按原样使用预训练图?据我所知,Tensorflow的版本只在培训期间起作用。无论如何,请在Colab-
https://colab.research.google.com/github/luxonis/depthai-ml-training/blob/master/colab-notebooks/Easy_Object_Detection_Demo_Training.ipynb#scrollTo=JDddx2rPfex9

不,我只是试着做推断。预训练模型的版本似乎与我的TF不匹配。请在推理中尝试此操作….
saved_model_path='
model=TF.saved_model.load(saved_model_path)model=model.signatures['serving_default']`..在TF 1.15中训练模型并在TF 2.2中使用推理管道之后,我尝试了此操作。不,我只是尝试进行推理。预训练模型的版本似乎与我的TF不匹配。请在推断中尝试此操作….
saved_model_path=''
model=TF.saved_model.load(saved_model_path)model=model.signatures['service_default']`…在TF 1.15中的培训模型和TF 2.2中的推理管道之后,我尝试了这个方法。根据第一条错误消息:我发现了一条与此相关的错误消息。关于第一条错误消息:我发现了一条与此相关的错误消息。