在 Tensorflow 对象检测 API 中摆脱不同 类 的重叠边界框
Get rid of overlapping bounding boxes across different classes in Tensorflow Object Detection API
我正在使用 Tensorflow 对象检测 API 来训练我自己的车辆检测器。当我使用 Object detection tutorial 测试我的模型时,我发现在某些情况下,一辆卡车被检测为汽车和卡车,周围有两个重叠的边界框。我只想留下检测分数最高的那个。
我知道对象检测 API 确实摆脱了重叠的边界框,但它对跨不同 类 的边界框没有这样做。有没有办法摆脱重叠的盒子?我可以更改对象检测 API 代码中的任何地方来实现该目标吗?
您可以对所有 类 使用 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())
有两种方法可以消除重叠的边界框。
1、在文件 visualization_utils.py;
中的 "visualize_boxes_and_labels_on_image_array" 函数中将 "min_score_thresh" 参数设置得更大
2、在配置文件中设置非最大抑制阈值
我正在使用 Tensorflow 对象检测 API 来训练我自己的车辆检测器。当我使用 Object detection tutorial 测试我的模型时,我发现在某些情况下,一辆卡车被检测为汽车和卡车,周围有两个重叠的边界框。我只想留下检测分数最高的那个。
我知道对象检测 API 确实摆脱了重叠的边界框,但它对跨不同 类 的边界框没有这样做。有没有办法摆脱重叠的盒子?我可以更改对象检测 API 代码中的任何地方来实现该目标吗?
您可以对所有 类 使用 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())
有两种方法可以消除重叠的边界框。
1、在文件 visualization_utils.py;
中的 "visualize_boxes_and_labels_on_image_array" 函数中将 "min_score_thresh" 参数设置得更大2、在配置文件中设置非最大抑制阈值