【发布时间】:2018-08-30 14:38:44
【问题描述】:
我使用train.py 和eval.py 成功训练了一个带有自定义示例的对象检测模型。并行运行这两个程序,我能够在训练期间在 tensorboard 中可视化训练和评估指标。
然而,这两个程序都被移到了legacy 文件夹中,model_main.py 似乎是运行训练和评估的首选方式(通过仅执行一个进程)。但是,当我使用以下 pipeline.config 开始 model_main.py 时:
train_config {
batch_size: 1
num_steps: 40000
...
}
eval_config {
# entire evaluation set
num_examples: 821
# for continuous evaluation
max_evals: 0
...
}
我在model_main.py 的输出中看到启用了 INFO 日志记录,训练和评估是按顺序执行的(而不是像以前的两个进程同时执行),并且在每个单独的训练步骤之后都会进行一次完整的评估。
INFO:tensorflow:Saving 'checkpoint_path' summary for global step 35932: ...
INFO:tensorflow:Saving checkpoints for 35933 into ...
INFO:tensorflow:Calling model_fn.
...
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Starting evaluation at 2018-08-30-10:06:47
...
INFO:tensorflow:Restoring parameters from .../model.ckpt-35933
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Evaluation [82/821]
...
INFO:tensorflow:Evaluation [738/821]
INFO:tensorflow:Evaluation [820/821]
INFO:tensorflow:Evaluation [821/821]
...
INFO:tensorflow:Finished evaluation at 2018-08-30-10:29:35
INFO:tensorflow:Saving dict for global step 35933: ...
INFO:tensorflow:Saving 'checkpoint_path' summary for global step 35933: .../model.ckpt-35933
INFO:tensorflow:Saving checkpoints for 35934 into .../model.ckpt.
INFO:tensorflow:Calling model_fn.
...
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Starting evaluation at 2018-08-30-10:29:56
...
INFO:tensorflow:Restoring parameters from .../model.ckpt-35934
这当然会以几乎没有进展的方式减慢训练速度。当我使用model_main 的命令行参数--num_eval_steps 将评估步骤减少到1 时,训练速度和以前一样快(使用train.py 和eval.py),但是评估指标变得无用(例如DetectionBoxes_Precision/mAP... 变为常量并具有类似1、0 甚至-1 的值。对我来说,它似乎不断地只为同一张图像计算这些值。
那么,什么是启动model_main.py 的正确方法,这样才能取得合理的快速进展,并从整个评估集中并行计算评估指标。
【问题讨论】:
标签: tensorflow object-detection