【问题标题】:Duplicate detections by the tensorflow APItensorflow API 的重复检测
【发布时间】:2019-11-25 21:17:04
【问题描述】:

我目前正在使用 tensorflow 对象检测 API,但是在为图像创建边界框时,该 API 倾向于在单个项目上创建多个边界框。无论如何我可以做到这样,在单个项目上只创建一个唯一的边界框。

我用于对象检测的当前模型是在开放图像数据集(来自 g3doc 模型动物园)上训练的更快的 rcnn 模型

【问题讨论】:

  • 这是很多物体检测算法的通病,有没有尝试使用非极大值抑制?

标签: python tensorflow object-detection-api


【解决方案1】:

试试这个去 research>object-detection>utils>visualisation_utils.py,然后改变 min_score_threshold 值:

def visualize_boxes_and_labels_on_image_array(
    image,
    boxes,
    classes,
    scores,
    category_index,
    instance_masks=None,
    instance_boundaries=None,
    keypoints=None,
    use_normalized_coordinates=False,
    max_boxes_to_draw=20,
    min_score_thresh=.90,
    agnostic_mode=False,
    line_thickness=4,
    groundtruth_box_visualization_color='black',
    skip_scores=False,
    skip_labels=False):

在我的例子中,我使用大于 90% 的阈值。这将删除其他概率较低的边界框,也可以作为附加组件,您可以使用上述脚本更改边界框的边框厚度和颜色

【讨论】:

  • 我最终将第二轮阈值更改为 90 以上,以便只保留初始边界框。只要项目是不同的(通常在我的用例中),我似乎能够在第一次迭代中检测到它。
【解决方案2】:

根据我的经验,这是检测器的标准行为。假设它们很嘈杂,并且根据盒子的放置方式,可以将同一物品多次检测为不同的物体。

这就是为什么我认为检测器需要一个过滤功能来过滤掉不正确的预测。您可以使用 IoU 的概念轻松地做类似的事情:交集优于联合。一个例子可以找到here,还有一些代码你可以使用。

基本上,以通常的方式使用您的冻结模型执行检测。然后,对预测的框进行检查并丢弃以某种方式被覆盖的框,即。 e.您可以丢弃相对于另一个置信度得分较低的重叠框。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2018-05-15
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2017-12-01
    • 2019-11-14
    相关资源
    最近更新 更多