|
|
@@ -312,7 +312,7 @@ def clip_coords(boxes, img_shape): |
|
|
|
boxes[:, 3].clamp_(0, img_shape[0]) # y2 |
|
|
|
|
|
|
|
|
|
|
|
def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-9): |
|
|
|
def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-7): |
|
|
|
# Returns the IoU of box1 to box2. box1 is 4, box2 is nx4 |
|
|
|
box2 = box2.T |
|
|
|
|
|
|
@@ -348,7 +348,7 @@ def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False, eps= |
|
|
|
elif CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47 |
|
|
|
v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2) |
|
|
|
with torch.no_grad(): |
|
|
|
alpha = v / ((1 + eps) - iou + v) |
|
|
|
alpha = v / (v - iou + (1 + eps)) |
|
|
|
return iou - (rho2 / c2 + v * alpha) # CIoU |
|
|
|
else: # GIoU https://arxiv.org/pdf/1902.09630.pdf |
|
|
|
c_area = cw * ch + eps # convex area |