本文通过实例介绍目标检测的评价指标,参考的网页有以下:
https://blog.csdn.net/eddy_zheng/article/details/52126641
https://blog.csdn.net/lanchunhui/article/details/71190055
1. intersection-over-union ( IOU )交除并
在目标检测的评价体系中,有一个参数叫做 IoU ,简单来讲就是模型产生的目标窗口和原来标记窗口的交叠率。具体我们可以简单的理解为: 即检测结果(DetectionResult)与 Ground Truth 的交集比上它们的并集,即为检测的准确率 IoU :
I 如下图所示:GT = GroundTruth; DR = DetectionResult; 黄色边框框起来的是:

绿色框框起来的是:  应该够详细了,上幅图直观些。当然最理想的情况就是 DR 与 GT 完全重合,即

IoU的计算综合考虑了交集和并集,如何使得 IoU 最大,需要满足,更大的重叠区域,更小的不重叠的区域。
下面附上图例说明,及 IOU 的python实现,已经测试无误,自行取用。
 原图:

# -*- coding: utf-8 -*-
"""
Created on Sun Aug 07 14:26:51 2016
@author: Eddy_zheng
"""
def IOU(Reframe,GTframe):
"""
自定义函数,计算两矩形 IOU,传入为均为矩形对角线,(x,y) 坐标。
"""
x1 = Reframe[0]
y1 = Reframe[1]
width1 = Reframe[2]-Reframe[0]
height1 = Reframe[3]-Reframe[1]
x2 = GTframe[0]
y2 = GTframe[1]
width2 = GTframe[2]-GTframe[0]
height2 = GTframe[3]-GTframe[1]
endx = max(x1+width1,x2+width2)
startx = min(x1,x2)
width = width1+width2-(endx-startx)
endy = max(y1+height1,y2+height2)
starty = min(y1,y2)
height = height1+height2-(endy-starty)
if width <=0 or height <= 0:
ratio = 0 # 重叠率为 0
else:
Area = width*height # 两矩形相交面积
Area1 = width1*height1
Area2 = width2*height2
ratio = Area*1./(Area1+Area2-Area)
# return IOU
return ratio,Reframe,GTframe
---------------------
作者:Eddy_zheng
来源:CSDN
原文:https://blog.csdn.net/eddy_zheng/article/details/52126641
版权声明:本文为博主原创文章,转载请附上博文链接!
例2:两个矩形窗格分别表示:


左上点、右下点的坐标联合标识了一块矩形区域(bounding box),因此计算两块 Overlapping 的 bounding boxes 的 IoU 如下:
# ((x1[i], y1[i]), (x2[i], y2[i]))
areai = (x2[i]-x1[i]+1)*(y2[i]-y1[i]+1)
areaj = (x2[j]-x1[j]+1)*(y2[j]-y1[j]+1)
xx1 = max(x1[i], x1[j])
yy1 = max(y1[i], y1[j])
xx2 = min(x2[i], x2[j])
yy2 = min(y2[i], y2[j])
h = max(0, yy2-yy1+1)
w = max(0, xx2-xx1+1)
intersection = w * h
iou = intersection / (areai + areaj - intersection)
---------------------
作者:Inside_Zhang
来源:CSDN
原文:https://blog.csdn.net/lanchunhui/article/details/71190055
版权声明:本文为博主原创文章,转载请附上博文链接!
|