我正在尝试在本地运行Object Detection API。
我相信我已按照TensorFlow Object Detection API文档中的描述设置了所有内容,但是,当我尝试运行model_main.py时,此警告显示并且模型不会训练。 (我无法确定模型是否正在训练,因为该过程没有终止,但没有进一步的日志出现)
警告:tensorflow:Estimator的model_fn(.model_fn位于0x0000024BDBB3D158>)包含params参数,但params不会传递给Estimator。
我传递的代码是:
python tensorflow-models/research/object_detection/model_main.py \
--model_dir=training \
--pipeline_config_path=ssd_mobilenet_v1_coco.config \
--checkpoint_dir=ssd_mobilenet_v1_coco_2017_11_17/model.ckpt \
--num_tain_steps=2000 \
--num_eval_steps=200 \
--alsologtostderr
可能导致此警告的原因是什么?
为什么代码似乎卡住了?
请帮忙!
我遇到了同样的问题,我发现这个警告与模型不起作用的问题无关。我可以使模型工作,因为这个警告显示。
我的错误是我误解了running_locally.md文件中的这一行
“$ {MODEL_DIR}指向将训练检查点和事件写入”的目录“
我将MODEL_DIR更改为{project directory}/models/model
,其中目录的结构是:
+data
-label_map file
-train TFRecord file
-eval TFRecord file
+models
+ model
-pipeline config file
+train
+eval
它奏效了。希望这可以帮助你。
编辑:虽然这可能有效,但在这种情况下model_dir
不包含任何已保存的检查点文件,如果在保存并重新启动某些检查点文件后停止训练,则仍会跳过训练。 doc指定了推荐的目录结构,但没有必要与tfrecord的所有路径具有相同的结构,可以在配置文件中配置预训练检查点。
实际原因是当model_dir
包含已经到达NUM_TRAIN_STEP
的检查点文件时,脚本将假定训练已完成并退出。删除检查点文件并重新启动培训将起作用。
你的脚本好看。我们应该注意的一点是,新的model_main.py不会打印训练日志(如训练步骤,lr,丢失等)。它只打印一个或多个epoches后的评估结果,这将是一个很久。 所以“过程没有终止,但没有进一步的日志出现”是正常的。您可以使用“nvidia-smi”检查gpu情况来确认其运行,或使用tensorboard进行检查。
我也收到了这个错误,因为我之前在不同的数据集/模型/配置文件上训练了一个模型,之前的ckpt文件仍然存在于我正在使用的目录中,将旧的ckpt训练数据移动到另一个目录修复了这个问题
我也遇到了这条警告信息。我检查了nvidia-smi
,似乎训练没有开始。还尝试重新组织输出目录,它没有成功。检查出Configuring the Object Detection Training Pipeline (tensorflow official)后,我发现这是配置问题。通过添加load_all_detection_checkpoint_vars: true
解决了这个问题。