如何在一个图像中计算多个边界框的IOU?



假设有一个对象检测任务。 图片中有很多汽车。我需要做的,是画盒子来检测这些汽车。 其他人正在执行相同的任务。 我的结果是[car1,car2,car5,car6],某人的结果是[car1,car3,car5,car5,car5,car7].(carx是这个img中 #x 猫的坐标(
我们俩只在img中检测到一些汽车。
现在我想找到一种方法来评估我们结果之间的相似性。
如果我们俩只找到一辆车,这很容易,

def cal_iou(coordinate_x, coordinate_y):
polygon_x = geometry.Polygon(coordinate_x)
polygon_y = geometry.Polygon(coordinate_y)
intersection = polygon_x.intersection(polygon_y).area
total_area = polygon_x.area + polygon_y.area - intersection
if total_area > 0.0:
return float(intersection / total_area)
return 0.0

我可以计算两个盒子之间的 IoU。 如果我们的结果中有多个框怎么办? 不知道别人结果中的哪个框应该和car1比较? 我认为另一种方法是获取结果中的所有区域,并与其他结果进行比较。但是我还没有找到一个好的方法来做到这一点。 请给我一些建议

box1 到 box2 之间的 IoU 与 box2 到 box1 相同。 我大部分时间做的是计算所有 IoU 并选择最高的。可以删除属于此IoU的2个框,并且可以重复该过程。直到所有框都链接或最高 IoU 低于阈值

用一个盒子计算所有盒子 然后,选择最佳框 那是最接近的盒子

最新更新