YOLOv5~目标检测模型精确度

article/2025/9/12 2:20:30

还是yolo5的基础啊~~ 一些关于目标检测模型的评估指标:IOU、TP&FP&FN&TN、mAP等,并列举了目标检测中的mAP计算。

指标评估(重要的一些定义)

IOU

 也称重叠度表示计算预测回归框和真实回归框的交并比,计算公式如下: 

TP&FP&FN&TN

 

指标的一些基本概念:

  • TP(True Postives):分类器把正例正确的分类-预测为正例。(IOU >=  阈值)

  • FN(False Negatives):分类器把正例错误的分类-预测为负例。(IOU <  阈值)

  • FP(False Postives):分类器把负例错误的分类-预测为正例

  • TN(True Negatives):分类器把负例正确的分类-预测为负例(_yolov5中没有应用到_)

yolov5中没有应用TN的原因: TN代表的是所有可能的未正确检测到的边界框。然而在yolo在目标检测任务中,每个网格会生成很多的预测边界框,有许多的预测边界框是没有相应的真实标签框,导致未正确检测到的边界框数量远远大于正确检测到的边界框,这就是为什么不使用TN的原因。

threshold:  depending on the metric, it is usually set to 50%, 75% or 95%.

Precision

Precision 定义:模型识别相关目标的能力。分类正确的样本在所有样本中的数量比例,公式如下:

 

Recall

Recall 定义:是模型找到真实回归框(即标签标注的框)的能力。计算公式如下:

mAP

多标签图像分类任务中图片的标签不止一个,因此评价不能用普通单标签图像分类的标准,即mean accuracy,该任务采用的是和信息检索中类似的方法—mAP,虽然其字面意思和mean average precision看起来差不多,但是计算方法要繁琐得多,mAP 会统计所有 Confidence 值下的 PR值,而实际使用时,会设定一个 Confidence 阈值,低于该阈值的目标会被丢弃,这部分目标在统计 mAP 时也会有一定的贡献

Confidence(置信度):在统计学中,一个概率样本的置信区间(Confidence interval)是对这个样本的某个总体参数的区间估计。置信区间展现的是这个参数的真实值有一定概率落在测量结果的周围的程度。置信区间给出的是被测量参数测量值的可信程度范围,即前面所要求的“一定概率”。这个概率也被称为置信水平。

(红色曲线代表,人为的方式将PR曲线变成单调递减,使得计算面积更容易。) 

  • AP(Average Percision):AP为平均精度,指的是所有图片内的具体某一类的PR曲线下的面积(横轴为Recall,纵轴为Precision)。

  • AP衡量的是对一个类检测好坏,mAP就是对多个类的检测好坏。在多类多目标检测中,计算出每个类别的AP后,再除于类别总数,即所有类别AP的平均值,比如有两类,类A的AP值是0.5,类B的AP值是0.2,那么 =(0.5+0.2)/2=0.35。

  • MAP: 是指所有图片内的所有类别的AP的平均值,map越高代表模型预测精度值越高。

  • 目标检测中的mAP计算

    yolov5计算IOU源码解析

    源代码地址:https://github.com/Oneflow-Inc/one-yolov5/blob/main/utils/metrics.py#L224-L261

    # 计算两框的特定iou (DIou, DIou, CIou)   
    def bbox_iou(box1, box2, xywh=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-7):  # Returns Intersection over Union (IoU) of box1(1,4) to box2(n,4)  # Get the coordinates of bounding boxes 下面条件语句作用是:进行坐标转换从而获取yolo格式边界框的坐标  if xywh:  # transform from xywh to xyxy  (x1, y1, w1, h1), (x2, y2, w2, h2) = box1.chunk(4, 1), box2.chunk(4, 1)  w1_, h1_, w2_, h2_ = w1 / 2, h1 / 2, w2 / 2, h2 / 2  b1_x1, b1_x2, b1_y1, b1_y2 = x1 - w1_, x1 + w1_, y1 - h1_, y1 + h1_  b2_x1, b2_x2, b2_y1, b2_y2 = x2 - w2_, x2 + w2_, y2 - h2_, y2 + h2_  else:  # x1, y1, x2, y2 = box1  b1_x1, b1_y1, b1_x2, b1_y2 = box1.chunk(4, 1)  b2_x1, b2_y1, b2_x2, b2_y2 = box2.chunk(4, 1)  w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1  w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1  # Intersection area 获取两个框相交的面积。  """  left_line = max(b1_x1, b2_x1)  reft_line = min(b1_x2, b2_x2)  top_line = max(b1_y1, b2_y1)  bottom_line = min(b1_y2, b2_y2)  intersect = (reight_line - left_line) * (bottom_line - top_line)  """  inter = (flow.min(b1_x2, b2_x2) - flow.max(b1_x1, b2_x1)).clamp(0) * \  (flow.min(b1_y2, b2_y2) - flow.max(b1_y1, b2_y1)).clamp(0)  # Union Area  两个框并到面积  union = w1 * h1 + w2 * h2 - inter + eps  # IoU   iou = inter / union  if CIoU or DIoU or GIoU:  cw = flow.max(b1_x2, b2_x2) - flow.min(b1_x1, b2_x1)  # convex (smallest enclosing box) width  ch = flow.max(b1_y2, b2_y2) - flow.min(b1_y1, b2_y1)  # convex height  if CIoU or DIoU:  # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1  c2 = cw ** 2 + ch ** 2 + eps  # convex diagonal squared  rho2 = ((b2_x1 + b2_x2 - b1_x1 - b1_x2) ** 2 + (b2_y1 + b2_y2 - b1_y1 - b1_y2) ** 2) / 4  # center dist ** 2  if CIoU:  # https://github.com/Zzh-tju/DIoU-SSD-pyflow.blob/master/utils/box/box_utils.py#L47  v = (4 / math.pi ** 2) * flow.pow(flow.atan(w2 / (h2 + eps)) - flow.atan(w1 / (h1 + eps)), 2)  with flow.no_grad():  alpha = v / (v - iou + (1 + eps))  return iou - (rho2 / c2 + v * alpha)  # CIoU  return iou - rho2 / c2  # DIoU  c_area = cw * ch + eps  # convex area  return iou - (c_area - union) / c_area  # GIoU https://arxiv.org/pdf/1902.09630.pdf  return iou  # IoU  

    yolov5计算AP源码逐行解析

    源代码地址:

    https://github.com/Oneflow-Inc/one-yolov5/blob/main/utils/metrics.py#L96-L121

    # 根据PR曲线计算AP   
    def compute_ap(recall, precision):  """ Compute the average precision, given the recall and precision curves  # Arguments  recall:    The recall curve (list)  precision: The precision curve (list)  # Returns  Average precision, precision curve, recall curve  """  # Append sentinel values to beginning and end 将开区间给补上,补成闭合的区间。  mrec = np.concatenate(([0.0], recall, [1.0]))   mpre = np.concatenate(([1.0], precision, [0.0]))  # Compute the precision envelope   """  人为的把PR曲线变成单调递减的,例如:  np.maximum(accumulate(np.array([21, 23, 18, 19, 20, 13, 12, 11]) ) => np.array([23, 23, 20, 20, 20, 13, 12, 11])  """  mpre = np.flip(np.maximum.accumulate(np.flip(mpre)))  # Integrate area under curve  method = 'interp'  # methods: 'continuous', 'interp'  if method == 'interp': # 默认采用 interpolated-precision 曲线,  x = np.linspace(0, 1, 101)  # 101-point interp (COCO)  ap = np.trapz(np.interp(x, mrec, mpre), x)  # integrate  else:  # 'continuous'  i = np.where(mrec[1:] != mrec[:-1])[0]  # points where x axis (recall) changes  ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1])  # area under curve  return ap, mpre, mrec  
    

whaosoft aiot  http://143ai.com 


http://chatgpt.dhexx.cn/article/dFfdSdCm.shtml

相关文章

睿智的目标检测20——利用mAP计算目标检测精确度

睿智的目标检测20——利用mAP计算目标检测精确度 学习前言GITHUB代码下载知识储备1、IOU的概念2、TP TN FP FN的概念3、precision&#xff08;精确度&#xff09;和recall&#xff08;召回率&#xff09;4、概念举例5、单个指标的局限性 什么是AP绘制mAP 学习前言 好多人都想算…

误差与精度

机械专业用于教授学生误差与精度概念的课程叫做《公差与测量》或者叫做《机械精度设计》&#xff0c;而公差或者精度的本质含义就是误差的大小&#xff0c;公差越小&#xff0c;误差越小&#xff0c;精度越高。所以机械专业这门课其本质教授的还是误差理论。 在学校并没有好好学…

层次分析法 AHP

层次分析法&#xff08;Analytic Hierarchy Process&#xff0c;简称 AHP&#xff09;是对一些较为复杂、较为模糊的问题作出决策的简易方法&#xff0c;它特别适用于那些难于完全定量分析的问题。它是美国运筹学家 T. L. Saaty 教授于上世纪 70 年代初期提出的一种简便、灵活而…

权重计算方法一:层次分析法(AHP)

目录 1.层次分析法原理介绍 2.层次分析法建模步骤 3.案例分析 3.1 题目简述 3.2 确定评价指标&#xff0c;建立层次关系 3.3 构造判断矩阵 3.3.1 标度定义 3.3.2 构造判断矩阵 3.4 一致性检验 3.5 层次总排序 4.代码实现 1.层次分析法原理介绍 关于层次分析法的具体原…

【数学建模】层次分析法(AHP)

层次分析法 文章目录 层次分析法用途一、模型介绍一道典型例题1.建立层次结构2.对于同一层次的个元素关于上一层次中的某一准则的重要性进行两两比较&#xff0c;构造两两比较矩阵&#xff08;判断矩阵&#xff09;。2.1 O-C矩阵&#xff08;确定指标的权重&#xff09;2.2 准则…

什么是AHP 层次分析法?

AHP层次分析法(The analytic hierarchy process)是一种解决多目标复杂问题的定性和定量相结合进行计算决策权重的研究方法。该方法将定量分析与定性分析结合起来&#xff0c;用决策者的经验判断各衡量目标之间能否实现的标准之间的相对重要程度&#xff0c;并合理地给出每个决策…

[评价体系] 2、层次分析法AHP原理、例题

目录 1 基本介绍 2 建立步骤 2.1 建立递阶式层次结构模型 2.2 构造比较判断矩阵 2.3 层次单排序及一致性检验 2.4 层次总排序及其一致性检验 2.5 数据加权 3 案例&#xff1a;某学科创新能力评价指标体系 3.1 构建评价指标体系 3.2 构造判断矩阵及一致性检验 3.3 …

数学建模方法——层次分析法(AHP)

目录&#xff1a; 层次分析法简介层次分析法基本原理构造判断矩阵一致性检验一致性检验通过的判断矩阵求权重 4.1 算数平均法求权重 4.2 几何平均法求权重 4.3 特征值法求权重总结 0. 层次分析法简介 层次分析法&#xff08;Analytic Hierarchy Process&#xff0c;简称AHP&…

层次分析法(AHP)算法简介

一、模型介绍 层次分析法&#xff08;AHP&#xff09;是美国运筹学家萨蒂于上世纪70年代初&#xff0c;为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时&#xff0c;应用网络系统理论和多目标综合评价方法&#xff0c;提出的一种层次权重决策分…

层次分析法(AHP)原理_例题应用及代码

层次分析法(AHP)原理应用及代码 1.AHP算法步骤2.算法举例第一步:建立递阶层次图第二步:建立判断矩阵计算五个指标的判断矩阵计算三个方案相对于某一指标的权重第三步:进行一致性检验一致性检验的步骤第一步:计算一致性指标 C I CI CI第二步:查找对应的平均随机一致性指标…

小话层次分析法(AHP)

在目标决策领域&#xff0c;有的决策数据信息是量化的&#xff0c;如一个项目的未来收益、消耗成本等&#xff0c;通过对各种信息进行计算可以做出较好的决策&#xff1b;但有的决策数据信息并不全是数字化的&#xff0c;如项目信息为“这个收益更好”、“这个成本更高”这样的…

清风数学建模学习笔记——层次分析法(AHP)

层次分析法 层次分析法&#xff08;analytic hierarchy process&#xff09;&#xff0c;简称AHP。是建模比赛中比较基础的模型之一&#xff0c;其主要解决评价类的问题。如选择哪种方案最好&#xff0c;哪位员工表现最好等。 它是一个较为 主观 的评价方法&#xff0c;其在赋权…

层次分析法-yaahp软件使用

yaahp下载资源&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Y08-wgn0YTzrDCaqToZLRg 提取码&#xff1a;avkc 目录 一.打开yaahp软件 1.新建AHP空白文件 2.进入画布页面。 3.点击检查模型按钮&#xff0c;检查模型是否正确 二、构造判断矩阵 1.先创建决策…

AHP层次分析法详解

APH简介 起源 层次分析法&#xff08;AHP&#xff09;是美国运筹学家Saaty于上世纪70年代初&#xff0c;应用网络系统理论和多目标综合评价方法&#xff0c;提出的一种层次权重决策分析方法。层次分析法是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将…

AHP(层次分析法)的全面讲解及python实现

一、层次分析法的使用流程&#xff1a; 1. 建立层次结构模型 首先绘出层次结构图&#xff0c;正常三层是比较常见的&#xff1a;决策的目标、考虑的决策准则因素和决策对象。按它们之间的相互关系分为最高层、中间层和最低层&#xff08;如下图是四层结构的&#xff09; 2. 分…

层次分析法(AHP)基础概念整理+步骤总结

层次分析法是用来根据多种准则&#xff0c;或是说因素从候选方案中选出最优的一种数学方法 递阶层次的建立与特点 一般分为三层&#xff0c;最上面为目标层&#xff0c;最下面为方案层&#xff0c;中间是准则层或指标层。 最顶层是我们的目标&#xff0c;比如说选leader&…

层次分析法(AHP)模型的应用案例

层次分析法&#xff08;AHP&#xff09;模型的特点就是通过搭建递阶的层次结构&#xff0c;把我们生活中的判断事件转化到两两比较层次上面&#xff0c;从而把难于定性的判断来变为可实现数据操作的重要程度方面。在实际情况下&#xff0c;决策者可使用层次分析法&#xff08;A…

层次分析法(AHP)详细步骤

1. 算法简介 层次分析法&#xff08;AHP&#xff09;是美国运筹学家萨蒂于上世纪70年代初&#xff0c;为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时&#xff0c;应用网络系统理论和多目标综合评价方法&#xff0c;提出的一种层次权重决策分…

第一讲 综合评价分析—层次分析法(AHP)

写在前面&#xff1a;本文仅用于记录清风数模课程的笔记总结 AHP的主要特点是通过建立递阶层次结构&#xff0c;把人类的判断转化到若干因 素两两之间重要度的比较上&#xff0c;从而把难于量化的定性判断转化为可操作的重 要度的比较上面。在许多情况下&#xff0c;决策者可以…

层次分析法(AHP法)

目录 一、介绍 二、层次分析法的基本原理 三、层次分析法的主要步骤 四、层次分析法评价过程 1&#xff0c;建立多级阶梯的层次结构 2&#xff0c;求判断矩阵A 3&#xff0c;计算相对权重 1&#xff09;求和法 2&#xff09;求根法 4,结果 5&#xff0c;综合重要度计算 一…