- 1、基本概念
- 真正例(TP):样本的实际类别为正类,并且模型将其预测为正类。
- 假正例(FP):样本的实际类别为负类,并且模型将其预测为正类。
- 真负例(TN):样本的实际类别为负类,并且模型将其预测为负类。
- 假负例(FN):样本的实际类别为正类,并且模型将其预测为负类。
T和F可以是看做模型的预测结果(P和N)的定语。
实际\预测 | 预测为正类 | 预测为负类 |
---|---|---|
实际正类 | 真正例(TP) | 假负例(FN) |
实际负类 | 假正例(FP) | 真负例(TN) |
-
2、精准率
- 定义:预测为正类的数据中,实际为正类的样本占比。
- 计算公式: P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP
-
3、召回率
- 定义:实际为正类的样本数据中,预测为正类的样本占比。
- 计算公式: R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP
- 分母为真正例+假负例的样本数量相加。为什么加假负,因为模型的预测结果为假的负样本,那实际上就是真的正样本。
-
4、目标检测任务的真正例、假正例、假负例如何划分
- 1) T P TP TP:真正例,模型预测出一个框,与标注框的IOU大于阈值且分类正确。
- 2) F P FP FP:假正例(误报),模型预测出一个框,与标注框的IOU小于阈值或者预测类别为背景或者分类错误。FP是相对于预测框。
- 3) F N FN FN:假负例(漏报),图片中有一个标注框,但是没有任何一个预测框能匹配上,要么IOU低于阈值 ,要么类别对不上。FN是相对于标注框(Ground Truth来说的)。
- 4) T N TN TN:真负例。在目标检测领域不考虑,因为真负例可以被理解为所有未预测且不含目标的区域,而这样的框是有连续且无穷多的。
-
5、论文是如何计算相关指标的
Faster R-CNN、SSD、YOLO等算法在训练阶段的正负样本的划分有各自的细节,但在最终测试和验证阶段评估精准率和召回率时,流程和算法本质上是一致的:对网络输出的所有预测框做阈值过滤和NMS,然后与标注框做IOU比较。统计TP、FP和FN。
- 计算离散 R-P曲线
对于单一类别C、固定的IOU:- 1)收集并保留模型对"类别C"做出的所有预测框(即模型输出标签 = C 的那些框)
- 2)按置信度对预测框从大到小排序
- 2)将这些框与"类别C"的标注框进行IOU匹配,判断那些是TP和FP。
- 3)从i=1到i=N,一次只加入一个预测框,检查它是否与某个标注框是否匹配成功(IOU大于阈值),如果成功就是TP,否则就是FP。
- 4)同时累计到目前为止的TP数、FP数。
- 5)计算截止到当前预测框为止的精准率和召回率
P r e c i s i o n i = T P i T P i + F P i Precision_{i}=\frac{TP_{i}}{TP_{i}+FP_{i}} Precisioni=TPi+FPiTPi
R e c a l l i = T P i T P i + F N i Recall_{i}=\frac{TP_{i}}{TP_{i}+FN_{i}} Recalli=TPi+FNiTPi
- AP计算
- 通过插值或积分,对离散的PR曲线计算面积,得到该类别的AP
- 计算所有类别AP的均值,得到mAP.
- 计算离散 R-P曲线
-
6、目标检测的3个阈值
- IOU阈值:用于判定一个预测框是否与某个标注框"匹配成功",从而记为TP。
- 置信度阈值:用于筛选预测框(比如只保留置信度 > 0.5 >0.5 >0.5的预测框),绘制PR曲线就是取的不同的置信度阈值。
- NMS中的IOU阈值:用于在预测框之间进行去重,比如只要两个预测框的IOU超过0.5,救认为他们检测到的目标高度重合,去掉置信度分数低的那个。