Skip to content

Instantly share code, notes, and snippets.

@arunm8489
Last active June 5, 2020 06:04
Show Gist options
  • Save arunm8489/465292f9695828069b23ff235adaf62b to your computer and use it in GitHub Desktop.
Save arunm8489/465292f9695828069b23ff235adaf62b to your computer and use it in GitHub Desktop.
def bounding_box_iou(box1, box2):
"""
Returns the IoU of two bounding boxes
"""
#Get the coordinates of bounding boxes
b1_x1, b1_y1, b1_x2, b1_y2 = box1[:,0], box1[:,1], box1[:,2], box1[:,3]
b2_x1, b2_y1, b2_x2, b2_y2 = box2[:,0], box2[:,1], box2[:,2], box2[:,3]
#get the corrdinates of the intersection rectangle
inter_rect_x1 = torch.max(b1_x1, b2_x1)
inter_rect_y1 = torch.max(b1_y1, b2_y1)
inter_rect_x2 = torch.min(b1_x2, b2_x2)
inter_rect_y2 = torch.min(b1_y2, b2_y2)
#Intersection area
intersection_area = torch.clamp(inter_rect_x2 - inter_rect_x1 + 1, min=0) * torch.clamp(inter_rect_y2 - inter_rect_y1 + 1, min=0)
#Union Area
b1_area = (b1_x2 - b1_x1 + 1)*(b1_y2 - b1_y1 + 1)
b2_area = (b2_x2 - b2_x1 + 1)*(b2_y2 - b2_y1 + 1)
iou = intersection_area / (b1_area + b2_area - intersection_area)
return iou
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment