交并比为目标检测中一个重要的概念,来进行预测框(ground truth)与标注框的重合率来对检测的正确率进行比较。图示如下:
交并比计算公式:
I
O
U
=
C
⋂
G
C
⋃
G
IOU=\frac{C \bigcap G }{C \bigcup G}
IOU=C⋃GC⋂G
代码示例:
# -*-coding:utf-8 -*-
# 计算图像的(IOU)交并比
def Iou(box1,box2):
xmin1, ymin1, xmax1, ymax1 = box1
xmin2, ymin2, xmax2, ymax2 = box2
# 求交集部分左上角的点
xmin = max(xmin1,xmin2)
ymin = max(ymin1,ymin2)
# 求交集部分右下角的点
xmax = min(xmax1,xmax2)
ym=ax = min(ymax1,ymax2)
# 计算输入的两个矩形的面积
s1 = (xmax1-xmin1) * (ymax1 - ymin1)
s2 = (xmax2-xmin2) * (ymax2 - ymin2)
#计算总面积
s = s1 + s2
# 计算交集
inter_area = (xmax - xmin) * (ymax - ymin)
iou = inter_area / (s - inter_area)
return iou
if __name__ == '__main__':
b1 = [1,1,3,3]
b2 = [2,2,4,4]
print(Iou(b1,b2)) # 0.14285714285714285
计算交并比的方法多种多样,在目标检测中也不止交并比一个值来计算检测的准确性,其他方法有待发现。。。