【问题标题】:Limitation of number of predictions in Tensorflow Object Detection APITensorflow 对象检测 API 中的预测数量限制
【发布时间】:2019-12-10 04:20:40
【问题描述】:

我使用 Tensorflow 对象检测 API 训练了一个 Faster R-CNN 模型,但遇到了一个奇怪的问题。该模型的输出有 最多 100 个预测,尽管图像中有更多的对象。这是我测试过的每张图片的情况。

我在 Ten GitHub 上发现了类似的问题,但据我所知,他们在这些方面做得并不多。 https://github.com/tensorflow/tensorflow/issues/30464

也许您过去也遇到过类似的问题?知道如何解决这个问题吗?

【问题讨论】:

  • 只是出于个人的好奇,您是否测试过在训练的网络上更改每类的疯狂检测和最大总检测参数是否会导致加载预训练权重时出现问题?我真的很想知道,因为我目前没有测试设置来自己尝试这个
  • 不,这不会导致问题。但是训练期间的评估过程还有另一个问题 - Coco evaluator 无法处理超过 100 个 Dets。所以训练过程很顺利,但指标并不能反映模型的真实性能。我在这里详细描述了这个问题:github.com/tensorflow/tensorflow/issues/…
  • 谢谢!很高兴知道!

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


【解决方案1】:

100 的限制是每个类,那么您的最大总检测数为 300。

这是在pipeline.config 文件的second_stage_post_processing 部分中设置的网络配置参数。比如当前的faster_rcnn_inception_v2_coco.config有:

second_stage_post_processing {
      batch_non_max_suppression {
        score_threshold: 0.0
        iou_threshold: 0.6
        max_detections_per_class: 100
        max_total_detections: 300
      }
      score_converter: SOFTMAX
    }

在训练网络之前更改这些值(虽然我不知道更改它们如何影响网络大小和/或在使用预训练检查点进行微调时是否会导致问题)

【讨论】:

  • 接受的答案解决了训练期间的问题。但是,训练期间的评估过程存在一个问题 - Coco 评估器无法处理超过 100 个数据。所以训练过程很顺利,但指标并不能反映模型的真实性能。我在这里详细描述了这个问题:github.com/tensorflow/tensorflow/issues/…
猜你喜欢
  • 2018-06-28
  • 1970-01-01
  • 2018-03-30
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-17
相关资源
最近更新 更多