def max(a,b):
if a>b:
return a
else:
return b
def minx(a,b):
if a<b:
return a
else:
return b
def IOU(boxes_preds,boxes_labels):
box1_x1 = boxes_preds[0]
box1_y1 = boxes_preds[1]
box1_x2 = boxes_preds[0]+boxes_preds[2]
box1_y2 = boxes_preds[1]+boxes_preds[3]
# (N, 1)
box2_x1 = boxes_labels[0]
box2_y1 = boxes_labels[1]
box2_x2 = boxes_labels[0]+boxes_labels[2]
box2_y2 = boxes_labels[1]+boxes_labels[3]
x1 = max(box1_x1, box2_x1)
y1 = max(box1_y1, box2_y1)
x2 = min(box1_x2, box2_x2)
y2 = min(box1_y2, box2_y2)
# .clamp(0) is for the case when they do not intersect
intersection = (x2 - x1) * (y2 - y1)
box1_area = abs((box1_x2 - box1_x1) * (box1_y2 - box1_y1))
box2_area = abs((box2_x2 - box2_x1) * (box2_y2 - box2_y1))
return intersection / (box1_area + box2_area - intersection + 1e-6)
pred =[ 30, 30, 10, 10]
label =[ 25, 25, 10, 10]
loss=IOU(pred,label)
print(loss)
python 计算 IOU代码
最新推荐文章于 2023-07-15 20:49:39 发布