【问题标题】:Tensorflow Object Detection API: disable nonmaxima suppression for off-the-shelf modelsTensorflow 对象检测 API:禁用现成模型的非极大值抑制
【发布时间】:2017-12-09 15:24:06
【问题描述】:

是否可以和/或容易禁用Tensorflow Object Detection API 中提供的现成对象检测器的非最大值抑制部分?例如,我想运行提供的“在 MSCOCO 上训练的 SSD mobilenet”,最后没有非最大值操作。我怎样才能做到这一点?

【问题讨论】:

    标签: tensorflow object-detection


    【解决方案1】:

    如果您出于速度原因想要执行此操作,唯一的方法是编辑代码本身(请参阅https://github.com/tensorflow/models/blob/master/object_detection/meta_architectures/ssd_meta_arch.py#L331)——这有点涉及,因为您需要将对 NMS 的调用替换为仍然会调用的代码将框放在预期的输出格式中。

    如果只是想摆脱NMS的影响,可以简单的设置config文件后处理部分的score_threshold和iou_threshold: https://github.com/tensorflow/models/blob/master/object_detection/samples/configs/ssd_mobilenet_v1_pets.config#L131 分别为 0.0 和 1.0,这意味着,不要过滤低分框,并且仅当它们完全重叠时才根据 iou 修剪框(实际上永远不会)。

    【讨论】:

    • 更改配置听起来不错,但会影响已保存模型(例如 ssd_mobilenet_v1_coco_11_06_2017)的运行方式吗?我想运行现成的 ssd_mobilenet_v1_coco_11_06_2017。我应该更改哪个配置文件以便简单地删除 NMS 效果?
    • 所以我们提供的“现成的”冻结模型如果你只是改变配置就不会改变——这意味着他们将继续使用旧的 NMS 参数。如果您想重新生成那些现成的 .pb 文件,您可以更改配置文件,然后使用 export_inference_graph.py 脚本重新导出。
    • 谢谢!我不必导出新的 pb 文件。如果我可以 (i) 导入 SSD 冻结模型,(ii) 更改其配置,即 NMS 参数,以及 (iii) 使用配置运行 SSD 模型,那将是完美的。现在我知道如何处理步骤 (ii),我需要步骤 (i) 和 (iii) 的帮助。
    • 我还需要 ssd_mobilenet_v1_coco_11_06_2017 的配置文件,它似乎不包含在 repo 中。如果没有这个文件,我猜你的建议是行不通的。
    • 哦,你应该可以在这里修改 pets 配置文件:github.com/tensorflow/models/blob/master/object_detection/… --- 你需要用适当的 COCO labelmap 替换 Pets labelmap 并更改输出类的数量。 (但没有别的)
    猜你喜欢
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 2020-11-02
    • 2019-11-09
    • 1970-01-01
    • 2018-03-30
    • 2017-08-10
    • 1970-01-01
    相关资源
    最近更新 更多