两个矩形框的交集/并集
IOU=(A)/(A+B+C)
box_areas=(box[2]-box[0])*(box[3]-box[1])
boxes_areas=(box[:,2]-box[:,0])*(box[:,3]-box[:,1])
l_x=torch.maximum(box[0],boxes[:,0])
l_y=torch.maximum(box[1],boxes[:,1])
r_x=torch.minimum(box[2],boxes[:2])
r_y=torch.minimum(box[3],boxes[:3])
h=torch.maximum(torch.tensor(0),r_y-l_y)
w=torch.maximum(torch.tensor(0),r_x-l_x)
inter_area=w*h
iou_val=inter_area/(box_areas+boxes_areas-inter_area)
交并比(IoU,Intersection over Union)在计算机视觉和图像处理领域中有多种重要用途:
- 目标检测:用于评估检测框与真实框的重合程度,从而判断目标检测算法的准确性。较高的 IoU 值表示检测结果更接近真实情况。
- 例如,在自动驾驶中,准确检测车辆、行人等目标对于安全至关重要,通过计算检测框和真实框的 IoU 来衡量检测效果。
- 图像分割:评估分割结果与真实标注的匹配程度。
- 比如在医学图像分割中,判断肿瘤区域的分割是否准确。
- 跟踪算法评估:衡量跟踪框在不同帧之间与目标真实位置的匹配情况。
- 例如在监控视频中的人物跟踪,IoU 可以反映跟踪的稳定性和准确性。
- 模型选择和比较:在训练不同的模型或使用不同的参数时,通过计算 IoU 来比较它们的性能,选择最优的模型或参数设置。
- 数据标注质量评估:帮助检查标注数据的一致性和准确性,如果标注者之间的 IoU 值较低,可能表明标注存在较大的差异或错误。