Tensorflow 自定义对象检测器:model_main_tf2 未开始训练

时间:2021-03-26 09:05:39

标签: python python-3.x tensorflow machine-learning object-detection-api

问题摘要:当我按照文档中的指南进行操作时,tensorflow 自定义对象检测器永远不会开始微调。它也不会抛出异常。

我做了什么:我已经安装了对象检测器 api 并按照 docs 运行了一个成功的测试。

然后我按照有关训练自定义对象检测器算法 here 的指南进行操作,包括修改 pipeline.config 文件。根据我运行的指南

model_main_tf2.py  --model_dir=<path1> --pipeline_config_path=<path2> --alsologtostderr

其中 path1 和 path2 是类似的路径

 D:/COCO/models/workspace/duck-demo/pre-trained-models/efficientdet_d1_coco17_tpu-32/pipeline.config

输出如下所示。根据指南,输出(包括其许多警告)是预期的输出。不过,预计之后会开始训练。相反,它只是返回,没有错误也没有训练。这里似乎有什么问题?

输出:

...
WARNING:tensorflow:Unresolved object in checkpoint: (root).model._feature_extractor._bifpn_stage.node_input_blocks.7.0.1.1.gamma
W0326 09:24:46.180965 16300 util.py:160] Unresolved object in checkpoint: (root).model._feature_extractor._bifpn_stage.node_input_blocks.7.0.1.1.gamma
WARNING:tensorflow:Unresolved object in checkpoint: (root).model._feature_extractor._bifpn_stage.node_input_blocks.7.0.1.1.beta
W0326 09:24:46.180965 16300 util.py:160] Unresolved object in checkpoint: (root).model._feature_extractor._bifpn_stage.node_input_blocks.7.0.1.1.beta
...
WARNING:tensorflow:A checkpoint was restored (e.g. tf.train.Checkpoint.restore or tf.keras.Model.load_weights) but not all checkpointed values were used. See above for specific issues. 
Use expect_partial() on the load status object, e.g. tf.train.Checkpoint.restore(...).expect_partial(), to silence these warnings, or use assert_consumed() to make the check explicit. See https://www.tensorflow.org/guide/checkpoint#loading_mechanics for details.
W0326 09:24:46.181965 16300 util.py:168] A checkpoint was restored (e.g. tf.train.Checkpoint.restore or tf.keras.Model.load_weights) but not all checkpointed values were used. See above for specific issues. 
Use expect_partial() on the load status object, e.g. tf.train.Checkpoint.restore(...).expect_partial(), to silence these warnings, or use assert_consumed() to make the check explicit. See https://www.tensorflow.org/guide/checkpoint#loading_mechanics for details.

2 个答案:

答案 0 :(得分:1)

有一个 GitHub 问题 here,针对您的问题,针对不同类型的 TensorFlow 2 模型讨论了许多可能的解决方案。他们中的一个很有可能会有所帮助。

根据经验,在实际进行任何训练以尽早诊断任何可能的问题之前,始终通过运行命令 python object_detection/builders/model_builder_tf2_test.py 来测试您的安装是一个好主意

答案 1 :(得分:0)

等一下,这可能需要一段时间,这是开发人员warned about

<块引用>

输出通常看起来像是“冻结”了,但不要急于取消该过程。训练默认每 100 步输出一次日志,因此如果您等待一段时间,您应该会看到第 100 步的损失日志。

<块引用>

您应该等待的时间可能会有很大差异,具体取决于您是否使用 GPU 以及在配置文件中为 batch_size 选择的值,因此请耐心等待。

如果它没有崩溃,它似乎可以正常工作。您可以在 model_main_tf2.py 的某处更改日志参数。如果您想更频繁地查看详细信息,可以从 100 减少到 5 或 10。