问题描述
我正在尝试使用TensorFlow zoo hear中的EfficientDet D3模型使用TensorFlow对象检测API进行对象检测。我在第2节预训练检查点下找到了预训练检查点hear的文件夹。
我需要在.config
文件中指定检查点的路径进行训练。但是我无法从模型中找到.ckpt
文件,也无法从上面下载的经过预先训练的检查点文件夹中找到文件。
我发现洋红色也有类似的问题hear。但这对我不起作用。如果有人知道如何在Tensorflow 2中从model.ckpt
生成model.ckpt-data-00000-of-000001,model.ckpt.index,model.ckpt.Meta
文件,请告诉我它可能可以解决我的问题
我正在使用Google colab的TensorFlow 2
编辑1:我从TensorFlow model zoo下载了模型。它具有波纹管结构。
在路径/content/models/research/object_detection/EfficientDet_D3/ # this is model dir
efficientdet_d3_coco17_tpu-32/
efficientdet_d3_coco17_tpu-32/checkpoint/
efficientdet_d3_coco17_tpu-32/checkpoint/ckpt-0.data-00000-of-00001
efficientdet_d3_coco17_tpu-32/checkpoint/checkpoint
efficientdet_d3_coco17_tpu-32/checkpoint/ckpt-0.index
efficientdet_d3_coco17_tpu-32/pipeline.config
efficientdet_d3_coco17_tpu-32/saved_model/
efficientdet_d3_coco17_tpu-32/saved_model/saved_model.pb
efficientdet_d3_coco17_tpu-32/saved_model/assets/
efficientdet_d3_coco17_tpu-32/saved_model/variables/
efficientdet_d3_coco17_tpu-32/saved_model/variables/variables.data-00000-of-00001
efficientdet_d3_coco17_tpu-32/saved_model/variables/variables.index
我还使用this中EfficientDet自述文件中的github链接下载了检查点。它的结构看起来像波纹管。
在路径/content/models/research/object_detection/efficientdet-d3/ # this is checkpoint dir
efficientdet-d3/
efficientdet-d3/model.Meta
efficientdet-d3/d3_coco_val_softnms.txt
efficientdet-d3/d3_coco_test-dev2017_softnms.txt
efficientdet-d3/model.index
efficientdet-d3/detections_test-dev2017_d3_results.zip
efficientdet-d3/checkpoint
efficientdet-d3/model.data-00000-of-00001
我在下面的.ckpt
中指定了到pipeline.config
的路径。
fine_tune_checkpoint: "/content/models/research/object_detection/efficientdet-d3/model.ckpt"
Traceback (most recent call last):
File "model_main_tf2.py",line 113,in <module>
tf.compat.v1.app.run()
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/app.py",line 40,in run
_run(main=main,argv=argv,flags_parser=_parse_flags_tolerate_undef)
File "/usr/local/lib/python3.6/dist-packages/absl/app.py",line 300,in run
_run_main(main,args)
File "/usr/local/lib/python3.6/dist-packages/absl/app.py",line 251,in _run_main
sys.exit(main(argv))
File "model_main_tf2.py",line 110,in main
record_summaries=FLAGS.record_summaries)
File "/root/.local/lib/python3.6/site-packages/object_detection-0.1-py3.6.egg/object_detection/model_lib_v2.py",line 569,in train_loop
unpad_groundtruth_tensors)
File "/root/.local/lib/python3.6/site-packages/object_detection-0.1-py3.6.egg/object_detection/model_lib_v2.py",line 345,in load_fine_tune_checkpoint
if not is_object_based_checkpoint(checkpoint_path):
File "/root/.local/lib/python3.6/site-packages/object_detection-0.1-py3.6.egg/object_detection/model_lib_v2.py",line 308,in is_object_based_checkpoint
var_names = [var[0] for var in tf.train.list_variables(checkpoint_path)]
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/checkpoint_utils.py",line 98,in list_variables
reader = load_checkpoint(ckpt_dir_or_file)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/checkpoint_utils.py",line 67,in load_checkpoint
return py_checkpoint_reader.NewCheckpointReader(filename)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/py_checkpoint_reader.py",line 99,in NewCheckpointReader
error_translator(e)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/py_checkpoint_reader.py",line 35,in error_translator
raise errors_impl.NotFoundError(None,None,error_message)
tensorflow.python.framework.errors_impl.NotFoundError: Unsuccessful TensorSliceReader constructor: Failed to find any matching files for /content/models/research/object_detection/efficientdet-d3/model.ckpt
解决方法
通常,当您下载预训练的模型时,您有7个文件。
- saved_model,即采用Tensorflow保存格式(https://www.tensorflow.org/guide/saved_model)的模型
- frozen_inference_graph,该模型只能用于推断所有权重已冻结的模型,无法再对其进行训练。
- 三个检查点文件。所有元数据的 .meta ,指向正确检查点的索引以及一个或多个数据文件。
- pipeline.config包含用于先前培训的配置。
- 带有这些行的最后一个 checkpoint 文件:
model_checkpoint_path: "model.ckpt"
all_model_checkpoint_paths: "model.ckpt"
总而言之,您要查找的.ckpt确实不存在,它只是4个检查点文件的组合。要使用它,只需将其放在您的配置文件中:
fine_tune_checkpoint: ".../efficientnet/models/model.ckpt"
关于检查点的Tensorflow文档:https://www.tensorflow.org/guide/checkpoint