我目前正在使用tensorflow对象检测API,但是在图像上创建边界框时,该API倾向于在单个项目上创建多个边界框。无论如何,我可以做到这一点,以便在单个项目上仅创建一个唯一的边界框。
我用于对象检测的当前模型是在开放图像数据集上训练的更快的rcnn模型(来自g3doc模型库)
答案 0 :(得分:0)
根据我的经验,这是检测器的标准行为。假设它们很吵,并且根据盒子的放置方式,同一项目可以被多次检测为不同的对象。
这就是为什么我认为检测器需要过滤功能来过滤出错误的预测的原因。使用 IoU 的概念,您可以轻松地执行类似的操作:联合上的交集。可以找到一个示例here,还可以使用一些代码。
基本上,以通常的方式使用冻结的模型执行检测。然后,对预测框进行检查,并丢弃以某种方式覆盖的框,即e。您可以舍弃相对于另一个具有较低置信度得分的覆盖框。
希望有帮助!
答案 1 :(得分:0)
尝试此操作以研究> 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%。这样一来,其他可能性较低的边界框也将删除,另外,您还可以使用上述脚本更改边界框边界的厚度和颜色