[ 目标检测 ] 经典网络模型——性能评价指标 AP、mAP


🤵 AuthorHorizon John

编程技巧篇各种操作小结

🎇 机器视觉篇会变魔术 OpenCV

💥 深度学习篇简单入门 PyTorch

🏆 神经网络篇经典网络模型

💻 算法篇再忙也别忘了 LeetCode



🚀 正负样本——TP TN FP FN

TP(True Positives):被 正确 的划分为 正样本

TN(True Negatives): 被 正确 的划分为 负样本

FP(False Positives): 被 错误 的划分为 正样本

FN(False Negatives):被 错误 的划分为 负样本


在这里插入图片描述


🚀 Precision、Recall、Accuracy

精确率(Precision):预测 正确 的部分在 预测框 中的占比,即 Precision = T P T P + F P \frac {TP} {TP+FP} TP+FPTP

召回率(Recall):预测 正确 的部分在 真实框 中的占比,即 Recall = T P T P + F N \frac {TP} {TP+FN} TP+FNTP

准确率(Accuracy):预测 正确 的部分在样本整体中的占比,即 Accuracy = T P + T N T P + T N + F P + F N \frac {TP+TN} {TP+TN+FP+FN} TP+TN+FP+FNTP+TN


🚀 Precision-Recall 曲线

PR曲线:通过改变置信度为每个目标类别绘制出一条 Precision-Recall 曲线 ;


🚀 AP、mAP

AP(Average Precision):识别正确的样本数占识别样本总数的百分数,对应着PR曲线下面的面积 ;

mAP(Mean Average Precision):所有类别AP值的平均数,通常将mAP作为评估模型性能的最终指标 ;


🚀 IoU (Intersection over Union)

IoU:表示预测框与真实框之间的重叠层度,IoU = 交集 并集 \frac {交集} {并集} 并集交集 = T P T P + F P + F N \frac {TP} {TP+FP+FN} TP+FP+FNTP


在这里插入图片描述


🚀 FPS (Frames Per Second)

FPS :帧每秒,用于评估模型检测的速度,FPS越高实时性越好 ;




### 目标检测模型评估指标 mAP (Mean Average Precision) #### 定义 均值平均精度(mAP, Mean Average Precision)是一个综合性的度量标准,用于评估目标检测模型的整体表现。该指标不仅考虑了模型对不同类别的识别能力,还考量了其定位准确性。 对于单个类别而言,先计算出各个置信阈值下的精确率(Precision)和召回率(Recall),进而获得该类别的平均精度(AP)[^1]。具体来说,在给定一系列预测框的情况下,通过设定不同的IoU交并比阈值来判断哪些预测被认为是正确的(True Positive),从而统计TP、FP(False Positive)以及FN(False Negative),最终得出Precision和Recall曲线图上的多个点位数据[^3]。 #### 计算过程 为了求得某个特定类别的AP: - 对于每一个测试样本中的真实对象实例,按照预测得分从高到低排序; - 遍历这些预测结果,每当遇到一个新的True Positive时更新当前累计的TP数,并据此重新计算此时此刻为止所累积起来的所有预测案例中TP占总数量的比例作为新的Precision值;同时记录下对应的Recall比率; - 将上述过程中形成的若干组(P,R)坐标连接成一条PR曲线; - AP等于这条曲线下方面积大小,可以采用积分法近似估算或者简单地取固定间隔处的最大Precision值得分加权平均而得。 当完成了所有类别的AP计算之后,就可以很容易地得到整个系统的mAP——只需将各单独类目的AP相加以总数除之即可完成最后一步运算[^2]。 ```python def calculate_ap(precisions, recalls): """Calculate the area under PR curve.""" ap = 0. for i in range(len(recalls)-1): delta_recall = recalls[i+1] - recalls[i] avg_precision = (precisions[i]+precisions[i+1])/2 ap += delta_recall * avg_precision return ap def mean_average_precision(all_precisions, all_recalls): """Compute mAP over multiple classes""" class_aps = [] for precisions, recalls in zip(all_precisions.values(), all_recalls.values()): ap = calculate_ap(precisions, recalls) class_aps.append(ap) map_score = sum(class_aps)/len(class_aps) return map_score ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Horizon John

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值