位置: IT常识 - 正文

YOLOv5~目标检测模型精确度(yolov5目标检测流程图)

编辑:rootadmin
YOLOv5~目标检测模型精确度

推荐整理分享YOLOv5~目标检测模型精确度(yolov5目标检测流程图),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:yolov5目标检测论文,yolov5目标检测算法,yolov5目标检测论文,yolov5目标检测步骤流程图,yolov5目标检测论文,yolov5目标检测算法原理,yolov5目标检测步骤流程图,yolov5目标检测步骤流程图,内容如对您有帮助,希望把文章链接给更多的朋友!

还是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%.

PrecisionYOLOv5~目标检测模型精确度(yolov5目标检测流程图)

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 

本文链接地址:https://www.jiuchutong.com/zhishi/297652.html 转载请保留说明!

上一篇:保姆级人工智能学习成长路径(人工智能机器人保姆什么时候实现)

下一篇:进阶版JavaScript学习【第二期】(宋大叔教音乐第三单元进阶版)

  • 华为nova5摄像头像素是多少呢(华为nova5摄像头参数)

    华为nova5摄像头像素是多少呢(华为nova5摄像头参数)

  • 微信黑名单移出的人应该在哪里找到(怎么样将微信黑名单移出)

    微信黑名单移出的人应该在哪里找到(怎么样将微信黑名单移出)

  • 引用运算符有哪些(引用运算符有哪几个)

    引用运算符有哪些(引用运算符有哪几个)

  • 8488手机是什么牌子(8048是什么手机)

    8488手机是什么牌子(8048是什么手机)

  • 荣耀9i外屏和内屏是一体的吗(华为荣耀9屏幕是内外一体的吗?)

    荣耀9i外屏和内屏是一体的吗(华为荣耀9屏幕是内外一体的吗?)

  • b站弹幕两分钟后怎么删(b站弹幕两分钟后删除)

    b站弹幕两分钟后怎么删(b站弹幕两分钟后删除)

  • 华为nova7se有NFC吗(华为nova7SE有nfc功能在哪里)

    华为nova7se有NFC吗(华为nova7SE有nfc功能在哪里)

  • 华为col-al10是什么手机(华为col-al10是什么型号)

    华为col-al10是什么手机(华为col-al10是什么型号)

  • 火山小视频和抖音是一个公司的吗(火山小视频和抖音的区别)

    火山小视频和抖音是一个公司的吗(火山小视频和抖音的区别)

  • 换手机中框对手机有影响吗(更换手机中框难不难)

    换手机中框对手机有影响吗(更换手机中框难不难)

  • hdr10电视是什么意思(hdr10电视什么意思)

    hdr10电视是什么意思(hdr10电视什么意思)

  • ps中磁性套索怎么用(ps中磁性套索怎么使用)

    ps中磁性套索怎么用(ps中磁性套索怎么使用)

  • 华为mate30可以同时上两个微信吗(华为mate30能相互充电吗)

    华为mate30可以同时上两个微信吗(华为mate30能相互充电吗)

  • 手机上怎样改qq密码(手机上怎样改签火车票)

    手机上怎样改qq密码(手机上怎样改签火车票)

  • iphone11pro怎么复制文字(苹果11pro怎么复制文字)

    iphone11pro怎么复制文字(苹果11pro怎么复制文字)

  • 絮叨的拼音是什么(絮叨的拼音是什么写)

    絮叨的拼音是什么(絮叨的拼音是什么写)

  • 快手加入黑名单对方还能看到我信息吗(快手加入黑名单后对方还能私信我吗)

    快手加入黑名单对方还能看到我信息吗(快手加入黑名单后对方还能私信我吗)

  • 学信网怎么合并账号(学信网合并后无法查询学历)

    学信网怎么合并账号(学信网合并后无法查询学历)

  • 华为stfal10什么型号(stf_al10华为什么型号)

    华为stfal10什么型号(stf_al10华为什么型号)

  • 苹果手机呼吸灯怎么关(苹果手机呼吸灯闪烁怎么设置)

    苹果手机呼吸灯怎么关(苹果手机呼吸灯闪烁怎么设置)

  • 苹果可以查华为定位吗(华为转苹果)

    苹果可以查华为定位吗(华为转苹果)

  • 淘宝怎么上传高清图片(淘宝如何上传)

    淘宝怎么上传高清图片(淘宝如何上传)

  • 怎么找QQ浏览器中加密的文件(怎么找qq浏览器的私密空间)

    怎么找QQ浏览器中加密的文件(怎么找qq浏览器的私密空间)

  • 电脑全角空格怎么打(电脑全角空格怎么打出的是空白)

    电脑全角空格怎么打(电脑全角空格怎么打出的是空白)

  • 苹果只能关机充电(iphone手机只能关机充电)

    苹果只能关机充电(iphone手机只能关机充电)

  • 怎么ping网络地址详细教程(如何pingip地址)

    怎么ping网络地址详细教程(如何pingip地址)

  • hdaudpropshortcut.exe是什么进程 作用是什么 hdaudpropshortcut进程查询

    hdaudpropshortcut.exe是什么进程 作用是什么 hdaudpropshortcut进程查询

  • css三角和css 用户见面样式,vertical-align 属性应用,溢出的文字省略号显示,常见布局技巧(css做三角)

    css三角和css 用户见面样式,vertical-align 属性应用,溢出的文字省略号显示,常见布局技巧(css做三角)

  • 增值税专用发票电子发票可以抵扣吗
  • 组成计税价应该是含税价还是不含税价?
  • 什么是税务代理人
  • 纳税登记的内容
  • 销售扣款怎么开票
  • 银行承兑的商业汇票计入什么科目
  • 其他应收款要做账吗
  • 银行贷款印花税是什么意思
  • 金蝶KIS专业版报表操作数非数值
  • 房地产企业被收购报表处理
  • 自行建造固定资产中的自营工程,在领用工程物资
  • 无形资产增资账务处理
  • 建筑企业简易计税异地预缴
  • 销售旧房不能取得评估价格
  • 复利现值系数和普通年金现值系数关系
  • 营改增后转让土地使用权怎么计算增值税
  • 海运费怎么做会计分录
  • 电子发票作废怎么做
  • 未开票收入跨年度如何申报冲回
  • 如何防御黑客入侵
  • 然后安装电脑系统
  • 租入经营用房屋的改良支出
  • 存货损失账务处理新规定
  • 合作社分红怎么计算
  • 小程序uniacid
  • php如何上传1个g以上的文件
  • thinkphp3.2.3
  • thinkphp5依赖注入
  • 事故赔偿金怎么处理
  • opencv模板匹配多目标旋转
  • docker的常用命令汇总
  • php新手入门教程
  • php构造函数重载
  • 自制原始凭证代码怎么填
  • 定额发票新旧版区别
  • 劳动仲裁要出钱吗
  • 企业所得税的征税对象包括( )
  • 个人重组债务怎么交税
  • 出口企业为什么免税又退税
  • 在建工程过程中取得收入怎么入账
  • 卷票要盖发票专用章吗?
  • 用友T3财务报表没有数据
  • 股权变更后税务登记
  • 新公司成立的文案
  • 境外运费支付属什么费用
  • 现金余额不对怎么处理
  • 出口退税的会计处理
  • 金融资产发生的负债包括
  • 去税局购买税盘要注意什么
  • 应收及预付款项的坏账损失应当于实际发生时计入
  • 出口退税登记的内容
  • 收到劳务费
  • 没有发票就不能保修吗
  • 逼死win8的节奏 Win7升级至Win9仅需30美元 自动升级不需要重新安装
  • freebsd常用命令
  • solaris11.4安装教程
  • windos8怎么样
  • 通过修改注册表修改edge主页
  • winXP系统下qq不能视频聊天该怎么办?
  • mac修改默认系统
  • win7系统如何更改默认浏览器
  • win7系统的图片
  • win8.1启动设置
  • linux最小安装和正常安装
  • pops基本属性
  • 枚举目录时出现错误
  • AddForceAtPosition方法:增加刚体点作用力
  • unity中播放视频
  • 小助手是什么软件
  • js脚本如何获取数据库内容?
  • jquery validate表单校验长度
  • node中的ejs
  • Developing for Android, IV: The Rules: Networking
  • jquery鼠标移入
  • python dask
  • 利润报表怎么填写
  • 中国裁判文书怎么查个人案件
  • 广东省国家税务局网上办税大厅
  • 广西的高速怎么一段收费一段不收费
  • 下列哪些表述是正确的( )
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设