Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Precision-Recall Curve

精确率-召回率曲线绘制了不同阈值下精确率与召回率的关系,展示模型性能以及误报与漏检之间的权衡。

精确率-召回率曲线是一种图表,展示模型的决策阈值变化时,精确率和召回率如何变化。召回率位于横轴,精确率位于纵轴。每个测得的工作点对应一个阈值:模型能找出多少正例,以及模型给出的正类预测有多可靠。这条曲线有助于评估分类器和检测器,尤其适用于误报和漏检代价不同的情况。

精确率-召回率曲线的工作原理#

精确率是正确的正类预测所占的比例:TP / (TP + FP)。召回率,也称灵敏度,是被找出的实际正例所占的比例:TP / (TP + FN)。TP 表示真正例,FP 表示假正例,FN 表示假负例——这些结果都会计入混淆矩阵。

对预测分数应用不同的置信度阈值,就能得到一系列精确率-召回率对。降低阈值会纳入更多预测,因此召回率会提高或保持不变。随着正确和错误的预测进入集合,精确率可能朝任一方向变化,从而形成阶梯状曲线。

Cyril Cleverdon 在其1962 年克兰菲尔德报告中首次提出召回率与相关性关系图,确立了精确率-召回率评估的信息检索渊源。在文档搜索中,检索到的相关文档是真正例,检索到的不相关文档是假正例。

解读曲线及其基线#

如果召回率接近 1 时曲线仍保持较高的精确率,说明模型性能出色。曲线相交时,每个模型在不同的工作区间表现更好。精确率急剧下降的地方,表明新增预测会带来大量误报。

对于没有信息量的随机排序,其基线是正类占比,即标记为正例的样本比例。如果正例占 1%,基线精确率就是 0.01。正例占比变化会改变精确率,因此评估所用的数据群体也是结果的一部分。

受试者工作特征(ROC)曲线则绘制召回率与假正例率之间的关系,假正例率为 FP / (FP + TN),其中 TN 表示真负例。精确率-召回率评估直接体现了警报中正确结果的比例,因此适用于正例稀少的情况。准确率可能会受多数类主导。

选择工作阈值#

根据错误代价,在验证数据上选择工作点。若要求召回率不低于某个最低值,就选择满足要求且精确率最高的点;若要求精确率不低于某个最低值,就选择满足要求且召回率最高的点。最大化F1 分数,即精确率和召回率的调和平均值,可以让两个指标获得同等权重。阈值取值来自底层分数,或精确率-置信度曲线和召回率-置信度曲线。

Ultralytics YOLO 的预测通过 conf 提供这一选择,该参数会筛选带分数的检测结果。在一次学院评估中,使用YOLO26n对四张COCO8验证图像进行评估,IoU 为 0.50;将 conf 从 0.10 提高到 0.25 后,插值所得的人类别精确率/召回率从 0.63/0.80 变为 1.00/0.54:误报减少了,但漏检的人也更多了。

在单独的测试数据上评估时,要保持所选阈值不变。

在 Python 中绘制精确率-召回率曲线#

这个示例使用随附的图像和逻辑回归,将手写数字 9 与其他数字区分开来。使用 pip install scikit-learn matplotlib 安装依赖项,然后调用 scikit-learn 的精确率-召回率绘图 API。

import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import PrecisionRecallDisplay
from sklearn.model_selection import train_test_split

X, digits = load_digits(return_X_y=True)
y = digits == 9
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42)
model = LogisticRegression(max_iter=2000)
model.fit(X_train, y_train)
PrecisionRecallDisplay.from_estimator(model, X_test, y_test)
plt.savefig("precision_recall_curve.png", bbox_inches="tight")

保存的图表展示了留出数字图像在各个可达召回率水平下的精确率。

目标检测与平均精度#

在目标检测中,当预测的边界框与同类别且尚未匹配的标注目标相匹配,并且交并比(IoU)达到或超过阈值时,该预测计为真正例。未匹配的预测(包括重复预测)计为假正例。每个类别都有单独的曲线,且 IoU 要求保持不变。

平均精度(AP)概括了曲线在不同召回率水平上的表现。梯形积分计算的 PR-AUC 和非插值 AP 使用不同的积分规则。平均精度均值(mAP)是各类别 AP 值的平均值。在检测性能指标中,mAP50 使用 IoU 0.50,而 mAP50–95 则对 IoU 从 0.50 到 0.95、步长为 0.05 的十个阈值取平均。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来