Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def calculate_iou(lhs_bboxes, rhs_bboxes):
- """Calculate iou of two bboxes
- bbox: (x1, y1, x2, y2)
- Arguments:
- lhs_bboxes {np.ndarray} -- (m, 4)
- rhs_bboxes {np.ndarray} -- (n, 4)
- Returns:
- np.ndarray -- (m, n)
- """
- lhs_bboxes = np.expand_dims(lhs_bboxes, 1)
- x_y_min = np.maximum(lhs_bboxes[:, :, :2], rhs_bboxes[:, :2])
- x_y_max = np.minimum(lhs_bboxes[:, :, 2:], rhs_bboxes[:, 2:])
- w_h = x_y_max - x_y_min
- w_h = np.clip(w_h, a_min=0, a_max=None)
- intersect_area = w_h[:, :, 0] * w_h[:, :, 1]
- lhs_area = ((lhs_bboxes[:, :, 2] - lhs_bboxes[:, :, 0]) *
- (lhs_bboxes[:, :, 3] - lhs_bboxes[:, :, 1]))
- rhs_area = ((rhs_bboxes[:, 2] - rhs_bboxes[:, 0]) *
- (rhs_bboxes[:, 3] - rhs_bboxes[:, 1]))
- union_area = lhs_area + rhs_area - intersect_area
- iou = intersect_area / union_area
- return iou
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement