交并比(Intersection-over-Union,IoU),目标检测中使用的一个概念,我们在进行目标检测算法测试时,重要的指标,是产生的预测框(candidate bound)与标记框(ground truth bound)的交叠率,即它们的交集与并集的比值。最理想情况是完全重叠,即比值为1。
通常,我们所说的目标检测检测的框是规则的矩形框,计算IOU也非常简单,一般两种方法:
两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重叠矩形的高。
右下角的最小值减去左上角的最大值就是重叠矩形的宽,同比高。
上述规则四边形(矩形)IOU计算方式一的 Python实现
def calculate_regular_iou(rec1, rec2):
"""
computing IoU
:param rec1: (y0, x0, y1, x1), which reflects
(top,left, bottom,right)
:param rec2: (y0, x0, y1, x1)
:return: scala valueofIoU
"""
S_rec1 = (rec1[2] - rec1[0]) * (rec1[3] - rec1[1])
S_rec2 = (rec2[2] - rec2[0]) * (rec2[3] - rec2[1])
sum_area = S_rec1 + S_rec2
left_line = max(rec1[