预测框,真实框贴合评价指标 IoU
定义: 交集面积除以并集面积
通常设置阈值为0.5,IoU大于则认为预测框是有效预测
python 代码实现
def IoU(boxA, boxB):
#计算重合框顶点坐标,图片左上角为坐标原点
left_max = max(boxA[0], boxB[0])
right_min = min(boxA[2], boxB[2])
top_max = max(boxA[1], boxB[1])
bottom_min = min(boxA[3], boxB[3])
#计算交集面积
inter = max(0, (right_min-left_max))*max(0, (bottom_min-top_max))
#计算并集面积
Sa = (boxA[2]-boxA[0])*(boxA[3]-boxA[1])
Sb = (boxB[2]-boxB[0])*(boxB[3]-boxB[1])
union = Sa+Sb-inter
#计算IoU
return inter/union
print(IoU([0,0,5,5],[3,3,6,6]))
物体检测名词
- mAP:AP指一个类别的检测精度,m代表各个类别的平均值
- Dets:预测值包括物体类别,得分,边框位置的四个预测值
- GTs:标签值包括物体类别,边框位置的四个真值
- TP:正确检测框
- FP:误检框,将背景检测为物体
- FN:漏检框,框内本需要检测出的物体未检出
- TN:正确背景框,正确检测出背景
AP的计算过程:
- 将所有预测框的得分从高到低排序,然后按序遍历
- 对于遍历过程中的某一个预测框,计算其与测试图中同类别的所有变迁框的IoU(一张测试图可能有多个相同的检测目标),并选取IoU最大的目标作为当前预测框的匹配对象。
- 如果IoU小于阈值则将当前预测框作为误检框,如果IoU大于阈值则要看对应的标签框是否有更高得分的预测框与其对应,若有则将低分预测框作为FP(将背景检测未物体),若无则作为TP(正确检测)
- 遍历完所有预测框之后可以得到所有预测框的属性,然后通过TP(正确检测)的数量来计算模型的召回率,即被检测出的标签和总标签数的比值。
- 同时计算遍历过的预测框中,正确预测边框和预测框的比值,记为正确率。
召回率和准确率的图像如下
召回率和准确率很难兼得,所以定义评价指标AP为曲线与坐标轴围成区域的总面积,这样就不会对其中一个变量有所偏好。最后如果是检测多个物体就需要求每个检测类别的AP的平均值作为评价指标