numpy实现 检测评价函数 intersection-over-union ( IOU )

来源:互联网 发布:影视大全软件下载 编辑:程序博客网 时间:2024/05/16 18:01

在目标检测的评价体系中,有一个参数叫做 IoU ,简单来讲就是模型产生的目标窗口和原来标记窗口的交叠率。具体我们可以简单的理解为: 即检测结果(DetectionResult)与 Ground Truth 的交集比上它们的并集,即为检测的准确率 IoU :

IOU=DetectionResultGroundTruthDetectionResultGroundTruth

如下图所示:GT = GroundTruth; DR = DetectionResult; 

import numpy as npdef IoU(box,boxes):    '''          计算detect box和 gt boxes的IoU值          形参:        box:numpy array,shape(5,):x1,y1,x2,y2,score            input box        boxes:numpy array,shape (n,4):x1,y1,x2,y2            input ground truth boxes              返回值:         ovr: numpy.array, shape (n, )         IoU             '''    box_area=(box[2]-box[0]+1)*(box[3]-box[1]+1)    area = (boxes[:, 2] - boxes[:, 0] + 1) * (boxes[:, 3] - boxes[:, 1] + 1)    xx1=np.maximum(box[0],boxes[:,0])    yy1=np.maximum(box[1],boxes[:,1])    xx2=np.maximum(box[2],boxes[:,2])    yy2=np.maximum(box[3],boxes[:,3])        #计算 bounding box的长宽    w=np.maximum(0,xx2-xx1+1)    h=np.maximum(0,yy2-yy1+1)        inter=w*h    ovr= inter/(box_area+area-inter)    return ovr


阅读全文
0 0
原创粉丝点击