import numpy as np
import torch
import torch.nn as nn
def compute_giou(boxes1, boxes2):
boxes1 = regularize_boxes(boxes1)
boxes2 = regularize_boxes(boxes2)
inter_area, union_area, enclose_area = compute_inter_union_area(boxes1, boxes2)
iou = inter_area / union_area
giou = iou - (enclose_area - union_area) / enclose_area
return giou
def regularize_boxes(boxes):
boxes = torch.cat([boxes[..., :2] - boxes[..., 2:] * 0.5, boxes[.