我正在使用Tensorflow Object Detection API来训练我自己的车辆探测器。当我使用Object detection tutorial测试我的模型时,我发现有一种情况是卡车被检测为汽车和卡车,周围有两个重叠的边界框。我只想留下检测得分最高的那个。
我知道对象检测API确实摆脱了重叠的边界框,但对于不同类的边界框,它不会这样做。有没有办法摆脱重叠的盒子?对象检测API代码中是否有任何地方可以更改以实现此目的?
答案 0 :(得分:1)
有两种方法可以消除重叠的边界框。
首先,在文件visualization_utils.py中的“ visualize_boxes_and_labels_on_image_array”函数中将“ min_score_thresh”参数设置得较大;
2,在配置文件中设置非最大抑制阈值
答案 1 :(得分:0)
您可以对所有类使用non_max_suppression:
corners = tf.constant(boxes, tf.float32)
boxesList = box_list.BoxList(corners)
boxesList.add_field('scores', tf.constant(scores))
iou_thresh = 0.1
max_output_size = 100
sess = tf.Session()
nms = box_list_ops.non_max_suppression(
boxesList, iou_thresh, max_output_size)
boxes = sess.run(nms.get())