Tensorflow 1.9 /对象检测:model_main.py仅评估一张图片

时间:2018-08-01 15:01:41

标签: tensorflow object-detection object-detection-api

我已经更新到Tensorflow 1.9和对象检测API的最新版本。在运行以前运行良好的培训/评估会议(我认为版本1.6)时,培训似乎按预期进行,但是我仅获得一个图像的评估和指标(第一个)。

在Tensorboard中,图像标记为“ Detections_Left_Groundtruth_Right”。评估步骤本身也非常迅速地进行,这使我相信这不仅仅是Tensorboard问题。

在model_lib.py中,我看到一些可疑的代码(在第349行附近):

  eval_images = (
      features[fields.InputDataFields.original_image] if use_original_images
      else features[fields.InputDataFields.image])
  eval_dict = eval_util.result_dict_for_single_example(
      eval_images[0:1],
      features[inputs.HASH_KEY][0],
      detections,
      groundtruth,
      class_agnostic=class_agnostic,
      scale_to_absolute=True)

这听起来像是评估者始终在第一张图像上进行一次评估。有没有人看到和/或解决这个问题?如果更改上述工作,我将进行更新。

3 个答案:

答案 0 :(得分:1)

是的,对象检测仅支持1的批次大小进行评估。评估数等于评估步数。评估指标跨批次累计。

顺便说一句,在Tensorboard中查看更多评估图像的更改刚刚提交给master。

答案 1 :(得分:0)

使用model_main.py模块时,我遇到相同的问题。但是,当使用object_detection/legacy/目录中的train.py和eval.py函数时,我可以在张量板上看到多个图像。

我还没有足够的时间浏览代码以完全了解正在发生的事情。我认为这个eval函数不会调用您引用的代码部分,因为tensorboard中的图像是不同的。除了显示预测/ ground_truth的左右图像对之外,只显示了预测的边界框。

答案 2 :(得分:0)

对于Tensorflow 1.14并使用models,我将其添加到了配置中:

num_visualizations: <number of images to evaluate>

示例:

eval_config: {
num_visualizations: 288
num_examples: 288
max_evals: 288

}

我不确定num_examples或num_evals,但100%的配置中需要num_visualizations才能查看更多图像。

https://github.com/tensorflow/models/issues/5067

这在这里也被引用: Show more images in Tensorboard - Tensorflow object detection