tensorflow 的重复检测 API

Duplicate detections by the tensorflow API

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

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

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

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

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

希望对您有所帮助!

试试这个去研究>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% 的阈值。这也删除了其他概率较低的边界框 add-on 您可以使用上面的脚本

更改边界框的边框厚度和颜色