【问题标题】:Tensorflow Object Detection: visualization_export_dir in eval_config not saving eval imagesTensorflow 对象检测:eval_config 中的visualization_export_dir 不保存评估图像
【发布时间】:2020-12-31 21:16:00
【问题描述】:

正如标题所述,我想从 Tensorboard 中保存 eval 的检测与地面实况图像。

来自 eval 原型:

// 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 图像,但 /eval_images/ 文件夹为空。

有人能搞定吗?

【问题讨论】:

  • 尝试使用旧文件夹中的旧 eval.py 脚本。

标签: tensorflow object-detection-api


【解决方案1】:

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

【讨论】:

  • 哦,我明白了,所以它没有实现。你知道有什么方法可以让我从张量板上导出这些图像吗?我需要使用它们进行离线评估,我希望能够下载 100 多张图像,而不必一一进行。这样我就可以看到图像,而不必每次都启动 tensorboard 来查看事件文件。
  • @netanel-sam 你知道有没有计划实现这个功能?
  • @DankMasterDan,我不知道。也许当 TF 2.0 发布时,他们会修复一些尚不支持的功能,但这是一个未经证实的猜测。 youngEngineer,他们没有实现配置和可视化功能之间的联系,但是功能是存在的:github.com/tensorflow/models/blob/master/research/…
  • 也许在旧版本中确实如此,但至少从 v1.12(2018 年 11 月)开始,此功能已经实现..
  • 这与TF版本无关,与OD API版本有关。您使用的是当前的 model_main.py 还是已弃用的 eval.py?据我所知,这是已弃用的 eval.py 中的一个可用功能,现在在使用当前 model_main.py 进行评估时不支持该功能。
【解决方案2】:

您的配置看起来正确,并且该功能已在当前 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.13)中不起作用......我什至输入了完整路径以确保。奇怪的行为。
【解决方案3】:

添加行:

    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....的路径中。

谢谢

【讨论】:

    猜你喜欢
    • 2018-08-07
    • 2019-01-09
    • 2020-06-03
    • 2019-05-22
    • 2018-07-22
    • 1970-01-01
    • 2020-08-23
    • 2020-03-04
    • 1970-01-01
    相关资源
    最近更新 更多