TensorFlow目标检测:eval_config中的visualization_export_dir未保存评估图像

3
如题所述,我想要从Tensorboard中保存评估结果与真实结果的图片。从评估原型中可以看到:
// Path to directory to store visualizations in. If empty, visualization
// images are not exported (only shown on Tensorboard).
optional string visualization_export_dir = 6 [default=""];

因此,我已将其添加到我的model.config文件中,如下所示。请记住,我是从/Object-Detection/目录中工作的。
eval_config: {
  num_examples: 57

  visualization_export_dir: "bevelgear_training/eval_images/"
  num_visualizations: 57
  metrics_set: "pascal_voc_detection_metrics"
}

培训正常结束,我可以在tensorboard中看到所有的评估图像,但是/eval_images/文件夹为空。有人能使其工作吗?

尝试使用位于遗留文件夹内的旧 eval.py 脚本。 - Nouman Riaz Khan
3个回答

1
虽然参数在配置文件中可用,但实际上并不支持此功能。相反,您可以使用TensorBoard,在图像选项卡下查看带有叠加检测的评估图像。

1
哦,我明白了,所以它还没有被实现。你知道有什么方法可以让我从tensorboard中导出这些图像吗?我需要离线评估它们,而且我希望能够一次下载100多张图片,而不必一个一个地下载。这样我就可以在不每次启动tensorboard查看事件文件的情况下查看这些图片了。 - youngEngineer
@netanel-sam,你知道是否有计划实现这个功能吗? - DankMasterDan
@DankMasterDan,我不知道。也许当TF 2.0发布时,他们会修复一些尚未支持的功能,但这只是一个不成熟的猜测。 youngEngineer,他们没有实现配置和可视化功能之间的连接,但该功能确实存在:https://github.com/tensorflow/models/blob/master/research/object_detection/eval_util.py#L81 - netanel-sam
也许在旧版本中这是正确的,但至少从v1.12(2018年11月)开始,该功能已经被实现了。 - 4Oh4
这与TF版本无关,而与OD API版本有关。您正在使用当前的model_main.py还是已弃用的eval.py?据我所知,这是在已弃用的eval.py中可用的功能,但在使用当前的model_main.py进行评估时不再支持。 - netanel-sam

0

你的配置看起来是正确的,并且这个特性已经在目前的TensorFlow版本中实现了。这是我的eval_config:

eval_config: {
  num_examples: 100
  num_visualizations: 20
  visualize_groundtruth_boxes: true
  visualization_export_dir: "F:/project_name/tf-eval/"
  include_metrics_per_category: true
}

我可以在TensorBoard和保存到文件中获得可视化效果。可能是你的相对路径导致了问题,不过通常在.config文件中这不是一个问题。导出目录必须存在,否则将不会输出任何图像。


1
似乎在当前版本(1.13)中无法正常工作...我甚至输入了完整路径以确保。行为很奇怪。 - youngEngineer

0
追加这些行:
    import matplotlib.pyplot as plt
    import os
    vutils.save_image_array_as_png(sbys_image[0], os.path.join(eval_config.visualization_export_dir, 'eval_{}_{}'.format(i,j) + ".png"))

代码执行后应该如下所示:

  for j, sbys_image in enumerate(sbys_image_list):
    tf.compat.v2.summary.image(
        name='eval_side_by_side_{}_{}'.format(i, j),
        step=global_step,
        data=sbys_image,
        max_outputs=eval_config.num_visualizations)
    import matplotlib.pyplot as plt
    import os
    vutils.save_image_array_as_png(sbys_image[0], os.path.join(eval_config.visualization_export_dir, 'eval_{}_{}'.format(i,j) + ".png"))

在 model_lib_v2.py 的第 992 行

请注意,不要修复您克隆的文件。model_lib_v2.py 应该在路径中,类似于 /python-3.6/pakages/object_detection/util....

谢谢


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