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

Precision

精确率是正确的正类预测所占比例:TP / (TP + FP)。了解正类流行率如何影响精确率、检测器如何计算精确率,以及如何提高精确率。

精确率是模型所有正向预测中正确预测所占的比例。它回答的问题是“模型说是时,判断正确的频率有多高?”,计算方法为真正例除以所有正向预测:精确率 = TP / (TP + FP),其中假正例(FP)是模型错误标记的负例。精确率的范围为 0 到 1,因此精确率为 0.95 意味着每 20 次警报中有 1 次误报。阳性预测值(PPV)是医学领域的同义术语,假发现率等于 1 减去精确率。误报代价高时,精确率尤为重要,例如会隐藏真实邮件的垃圾邮件过滤器、会报废合格零件的检测系统,或会因阴影而叫来警卫的安防摄像头。

精确率的计算方法#

精确率取用混淆矩阵中的两个单元格:真正例和假正例,它们合起来构成所有正向预测。漏掉的正例不会进入公式,因此,只标记最确定的一个案例的模型,即使几乎什么都没发现,精确率仍可达到 1.0。因此,报告精确率时通常也会报告召回率,其计算公式为 TP / (TP + FN),正好会惩罚这些漏检;F1 分数则将两者合并为一个数值。如果模型完全没有正向预测,精确率就是 0 / 0,无法定义;scikit-learn 等库会发出警告并将其报告为 0。

类别数超过两个时,会逐类计算精确率,将当前类别视为正类、其他所有类别视为负类,然后再取平均。宏平均精确率对每个类别赋予相同权重;在单标签多分类任务中,微平均精确率等于准确率。

精确率取决于患病率#

召回率和特异度分别描述模型如何处理正例和负例,因此当正例变得更少时,两者保持不变。精确率综合了这两组数据,会随患病率下降而降低,因为相同的假正例率作用于更多负例时,每次真正检出都会伴随更多误报。下面的 scikit-learn 脚本会在两种患病率下评估同一个筛查模型:

import numpy as np
from sklearn.metrics import accuracy_score, precision_score, recall_score

# One screening model at two prevalences: it finds 90% of positives and flags 1% of negatives
for positives in (1000, 100):
    negatives = 10_000 - positives
    tp, fp = int(0.9 * positives), int(0.01 * negatives)
    counts = [tp, positives - tp, fp, negatives - fp]  # TP, FN, FP, TN

    # Rebuild labels and predictions for 10,000 cases from the confusion-matrix counts
    y_true = np.repeat([1, 1, 0, 0], counts)
    y_pred = np.repeat([1, 0, 1, 0], counts)
    accuracy = accuracy_score(y_true, y_pred)
    recall = recall_score(y_true, y_pred)
    precision = precision_score(y_true, y_pred)
    print(f"{positives} positives: accuracy {accuracy:.3f}, recall {recall:.2f}, precision {precision:.2f}")

在 10,000 个案例中有 1,000 个正例时,模型的精确率为 0.91。正例减少到 100 个时,召回率仍为 0.90,准确率甚至上升至 0.989,但 90 个真正例旁边出现了 99 个误报,精确率则降至 0.48。因此,在平衡测试集上测得的精确率会高估模型在正例更少的部署环境中的精确率,例如罕见疾病筛查。

目标检测中的精确率#

在目标检测中,所有高于置信度阈值的预测框都是正向预测。预测结果按置信度从高到低依次匹配;只有当一个框与同类别的标注目标之间的交并比(IoU)达到或超过阈值,且该目标尚未被置信度更高的框匹配时,该框才算真正例。背景上的框、类别错误的框、定位不准的框,以及落在已匹配目标上的重复框,都算作假正例。

提高置信度阈值会移除低分框,而低分框更容易出错,因此精确率通常会上升、召回率则会下降。绘制各个阈值下的精确率和召回率,就能得到精确率-召回率曲线;曲线下面积就是平均精度(AP)。平均精度均值(mAP)会对各类别的 AP 取平均;对于 mAP50-95,还会对 10 个 IoU 阈值取平均。YOLO26验证会将每个类别在各置信度阈值下的精确率保存为 BoxP_curve.png,并在平均 F1 分数达到峰值的置信度下报告精确率(P),同时报告召回率和 mAP。

提高精确率#

  • 提高置信度阈值:最快捷的解决方法,但代价是召回率降低。
  • 加入难负样本:将容易混淆、会触发误报的物体和空场景加入训练数据,让模型学会哪些情况不该标记。以这种方式挑选最容易混淆的负样本,称为难负样本挖掘。
  • 修复缺失标签: 标注人员漏标的对象即使被正确检测到,也会被计为假阳性,因此不完整的真实标签会让精确率看起来比实际更低。
  • 区分容易混淆的类别: 混淆矩阵会显示模型容易混淆哪些类别;为这些类别对补充更多示例或明确类别定义,就能减少类别错误导致的假阳性。
  • 召回率: 模型找出的实际正例占所有实际正例的比例,即 TP / (TP + FN)。它统计漏检,而精确率统计误报。
  • 特异度: 被正确判定为负例的实际负例所占比例,即 TN / (TN + FP)。当正例很少时,即使特异度达到 0.99,精确率仍可能低于 0.5,筛查脚本就展示了这一点。
  • 准确率: 所有预测中正确预测所占的比例;在数据不平衡时,它主要受多数类支配。
  • 数值精度: 存储每个数值所用的位数,例如 32 位或16 位浮点数;这是同一个词的另一种无关含义。
  • 测量精密度: 多次重复测量结果彼此接近的程度;准确度则描述测量结果与真实值的接近程度。始终读数偏重 2 kg 的秤精密度高,但准确度低。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 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 的未来!

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