Tensorboard eval.py用于目标检测的IoU

5
我正在使用TensorFlow目标检测中的detection model zoo中的ssd_mobilenet_v1_coco模型。 目前,我正在运行训练模型的操作。
python legacy/train.py --logtostderr --train_dir=trainingmobile/ --pipeline_config_path=trainingmobile/pipeline.config

我希望通过运行eval.py来运行评估作业,以获取其他指标,如IOU和PR曲线,但我不知道如何做到这一点。我能够运行命令。

python legacy/eval.py \
--logtostderr \
--checkpoint_dir= path/to/checkpoint \
--eval_dir= path/to/eval \
--pipeline_config_path= path/to/config

然后我运行了这个命令

tensorboard --logdir=path/to/eval

张量板只显示测试图像输出。我如何获取其他指标,如IOU和PR曲线?
1个回答

7

首先,我强烈建议您使用更新的model_main.py脚本进行训练和评估。您可以按照以下方式使用它:

python object_detection/model_main.py \
   --pipeline_config_path=path/to/config \
   --model_dir=path/to/train_dir \
   --num_train_steps=NUM_TRAIN_STEPS \
   --num_eval_steps=NUM_EVAL_STEPS \
   --alsologtostderr

它将训练和评估结合在一起,您可以使用它进入tensorboard。

tensorboard -logdir=path/to/train_dir

Tensorboard不仅会显示训练过程,还会展示您在验证集上的进度。它们默认使用COCO指标作为度量标准!

对于您原来的问题:也许您应该在配置文件中更改评估设置以获得更大的数字:

eval_config: {
  num_examples: 8000
  # Note: The below line limits the evaluation process to 10 evaluations.
  # Remove the below line to evaluate indefinitely.
  max_evals: 10}

如果使用 model_main.py 脚本,评估次数将由标志设置。
值得一提的是,在更新的 model_main.py 脚本中,tensorflow 的信息输出被禁用。可以通过添加来启用它。
tf.logging.set_verbosity(tf.logging.INFO)

在导入部分之后。

嗨,如果num_eval_steps = 10,这是否意味着每隔10个步骤,模型将根据测试数据进行评估以确定IOU或精度等?对不起,我是新手,谢谢。 - Ninja Dude
不用担心!不,num_eval_steps = 10的意思是,在每个评估周期中,它将计算10个步骤。例如,如果您的批量大小为1,则会在验证集中评估10个(随机)图像,并根据这些结果计算mAP和Recall。因此,如果您的验证集中有1000张图像,您应该将num_eval_steps设置为比1000小得多的数字,因为您不希望在每个周期中评估验证集中的所有图像(也许大约50〜100左右就可以了)。 - Thommy257
@Thommy257,这个--num_train_steps=NUM_TRAIN_STEPS和配置文件中的num_steps是一样的吗?我没有设置这三个参数: --num_train_steps=NUM_TRAIN_STEPS --num_eval_steps=NUM_EVAL_STEPS --alsologtostderr。 通过tensorboard,我可以看到训练损失和精度召回率分别的曲线,并输出图像以及真实值。当我在tensorboard上点击pr_curve选项卡时,它没有显示任何内容,我错过了什么?我希望能看到类似于这个链接中的内容:https://github.com/tensorflow/tensorboard/tree/master/tensorboard/plugins/pr_curve - Vendetta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接