交并比 iou

交并比

在判定预测框和真实框之间的准确度的时候,我们可以用iou进行量化,如下图,黑框为真实框,红框为预测框,

  • 并集:橙色部分面积+蓝色部分面积
  • 交集:蓝色部分面积
    通过计算 交集 / 并集 的比值来量化预测结果的准确度,如果为1表示预测框和真实框重合
    交并比 iou
def box_iou(box, boxes):
    """

    :param box: [4,](x1,y1,x2,y2)
    :param boxes: [n,4]
    :return: [n]
    """
    # box 面积
    box_area = ((box[2] - box[0] + 1) * (box[3] - box[1] + 1))
    # boxs 面积 [n,]
    boxes_area = (boxes[:, 2] - boxes[:, 0] + 1) * (boxes[:, 3] - boxes[:, 1] + 1)
    # 重叠部分左上右下坐标
    xx1 = np.maximum(box[0], boxes[:, 0])
    yy1 = np.maximum(box[1], boxes[:, 1])
    xx2 = np.minimum(box[2], boxes[:, 2])
    yy2 = np.minimum(box[3], boxes[:, 3])

    # 重叠部分长宽
    w = np.maximum(0, xx2 - xx1 + 1)
    h = np.maximum(0, yy2 - yy1 + 1)
    # 计算重叠面积
    inter = w * h
    iou = inter / (box_area + boxes_area - inter + 1e-10)
    return iou
上一篇:[LeetCode] 962. Maximum Width Ramp 最大宽度坡


下一篇:面试问题 - SQL 中存储过程与函数的区别