0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

YOLOv5全面解析教程:计算mAP用到的numpy函数详解

jf_pmFSk4VX 来源:GiantPandaCV 作者:GiantPandaCV 2022-11-21 15:27 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

代码仓库地址:https://github.com/Oneflow-Inc/one-yolov5欢迎star one-yolov5项目 获取最新的动态。如果您有问题,欢迎在仓库给我们提出宝贵的意见。如果对您有帮助,欢迎来给我Star呀~

引言

本文主要介绍在 one-yolov5 项目中 计算mAP用到的一些numpy操作,这些numpy操作使用在 utils/metrics.py (https://github.com/Oneflow-Inc/one-yolov5/blob/734609fca9d844ac48749b132fb0a5777df34167/utils/metrics.py)中。这篇文章是《YOLOv5全面解析教程》四,目标检测模型精确度评估 的补充,希望能帮助到小伙伴们。

用到的 numpy 操作比如:np.cumsum()、np.interp()、np.maximum.accumulate()、np.trapz()等。接下来将在下面逐一介绍。

importnumpyasnp

np.cumsum()

返回元素沿给定轴的累积和。

numpy.cumsum(a, axis=None, dtype=None, out=None) 源码(https://github.com/numpy/numpy/blob/v1.23.0/numpy/core/fromnumeric.py#L2497-L2571)

参数

a :数组

axis: 轴索引,整型,若a为n维数组,则axis的取值范围为[0,n-1]

dtype: 返回结果的数据类型,若不指定,则默认与a一致n

out: 数据类型为数组。用来放置结果的替代输出数组,它必须具有与输出结果具有相同的形状和数据缓冲区长度

返回

沿着指定轴的元素累加和所组成的数组,其形状应与输入数组a一致

np.cumsum(a)#计算累积和的轴。默认(无)是在展平的数组上计算cumsum。
array([ 1,  3,  6, 10, 15, 21])
a=np.array([[1,2,3],[4,5,6]])
np.cumsum(a,dtype=float)#指定输出的特定的类型
array([ 1.,  3.,  6., 10., 15., 21.])
np.cumsum(a,axis=0)#3列中每一列的行总和
array([[1, 2, 3],
       [5, 7, 9]])
x=np.ones((3,4),dtype=int)
np.cumsum(x,axis=0)
array([[1, 1, 1, 1],
       [2, 2, 2, 2],
       [3, 3, 3, 3]])
np.cumsum(a,axis=1)#2行中每行的列总和
array([[ 1,  3,  6],
       [ 4,  9, 15]])

np.interp()

参数

x: 数组 待插入数据的横坐标

xp: 一维浮点数序列 原始数据点的横坐标,如果period参数没有指定那么就必须是递增的 否则,在使用xp = xp % period正则 化之后,xp在内部进行排序

fp: 一维浮点数或复数序列 原始数据点的纵坐标,和xp序列等长.

left: 可选参数,类型为浮点数或复数(对应于fp值) 当x < xp[0]时的插值返回值,默认为fp[0].

right: 可选参数,类型为浮点数或复数(对应于fp值),当x > xp[-1]时的插值返回值,默认为fp[-1].

period: None或者浮点数,可选参数 横坐标的周期 此参数使得可以正确插入angular x-coordinates. 如果该参数被设定,那么忽略left参数和right参数

返回

浮点数或复数(对应于fp值)或ndarray. 插入数据的纵坐标,和x形状相同

注意!

在没有设置period参数时,默认要求xp参数是递增序列

#插入一个值
importnumpyasnp
importmatplotlib.pyplotasplt
x=2.5
xp=[1,2,3]
fp=[3,2,0]
y=np.interp(x,xp,fp)#1.0
plt.plot(xp,fp,'-o')
plt.plot(x,y,'x')#画插值
plt.show()
70f3fac8-6759-11ed-8abf-dac502259ad0.png图片
#插入一个序列
importnumpyasnp
importmatplotlib.pyplotasplt

x=[0,1,1.5,2.72,3.14]
xp=[1,2,3]
fp=[3,2,0]
y=np.interp(x,xp,fp)#array([3.,3.,2.5,0.56,0.])
plt.plot(xp,fp,'-o')
plt.plot(x,y,'x')
plt.show()

71154110-6759-11ed-8abf-dac502259ad0.png图片

np.maximum.accumulate

计算数组(或数组的特定轴)的累积最大值

importnumpyasnp
d=np.random.randint(low=1,high=10,size=(2,3))
print("d:
",d)
c=np.maximum.accumulate(d,axis=1)
print("c:
",c)
d:
 [[1 9 5]
 [2 6 1]]
c:
 [[1 9 9]
 [2 6 6]]

np.trapz()

numpy.trapz(y, x=None, dx=1.0, axis=- 1)使用复合梯形规则沿给定轴积分。

importmatplotlib.pyplotasplt
importnumpyasnp
y=[1,2,3];x=[i+1foriinrange(len(y))]
print(np.trapz(x))
plt.fill_between(x,y)
plt.show()#(1+3)*(3-1)/2=4
4.0
713d4fa2-6759-11ed-8abf-dac502259ad0.png图片
importmatplotlib.pyplotasplt
importnumpyasnp
y=[1,2,3]
x=[4,6,8]
print(np.trapz(y,x))
plt.fill_between(x,y)
plt.show()#(3+1)*(8-4)/2=8
8.0
7155da4a-6759-11ed-8abf-dac502259ad0.png图片

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66838
  • MAP
    MAP
    +关注

    关注

    0

    文章

    49

    浏览量

    15785

原文标题:《YOLOv5全面解析教程》五,计算mAP用到的numpy函数详解

文章出处:【微信号:GiantPandaCV,微信公众号:GiantPandaCV】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    YOLOv5】LabVIEW+YOLOv5快速实现实时物体识别(Object Detection)含源码

    前面我们给大家介绍了基于LabVIEW+YOLOv3/YOLOv4的物体识别(对象检测),今天接着上次的内容再来看看YOLOv5。本次主要是和大家分享使用LabVIEW快速实现yolov5
    的头像 发表于 03-13 16:01 3076次阅读

    Yolov5算法解读

    yolov5于2020年由glenn-jocher首次提出,直至今日yolov5仍然在不断进行升级迭代。 Yolov5YOLOv5s、YOLOv5
    的头像 发表于 05-17 16:38 1.4w次阅读
    <b class='flag-5'>Yolov5</b>算法解读

    YOLOv5】LabVIEW+TensorRT的yolov5部署实战(含源码)

    今天主要和大家分享在LabVIEW中使用纯TensoRT工具包快速部署并实现yolov5的物体识别
    的头像 发表于 08-21 22:20 2037次阅读
    【<b class='flag-5'>YOLOv5</b>】LabVIEW+TensorRT的<b class='flag-5'>yolov5</b>部署实战(含源码)

    龙哥手把手教你学视觉-深度学习YOLOV5

    可以实现理想的检测效果。在本套视频,有别于常见的深度学习教程以理论为主进行全面讲解,以没有任何深度学习理论基础的学员学习角度,以实际应用为目标,讲解如何设计一个完整的yolov5工业外观检测,手把手教学
    发表于 09-03 09:39

    YOLOv5网络结构解析

    1、YOLOv5 网络结构解析  YOLOv5针对不同大小(n, s, m, l, x)的网络整体架构都是一样的,只不过会在每个子模块中采用不同的深度和宽度,  分别应对yaml文件中
    发表于 10-31 16:30

    YOLOv5全面解析教程之目标检测模型精确度评估

    ):分类器把负例正确的分类-预测为负例(yolov5中没有应用到)  yolov5中没有应用TN的原因: TN代表的是所有可能的未正确检测到的边界框。然而在yolo在目标检测任务中,每个网格会生成很多的预测
    发表于 11-21 16:40

    浅析在one-yolov5项目中计算mAP用到的一些numpy操作

    引言本文主要介绍在 one-yolov5 项目中 计算mAP用到的一些numpy操作,这些numpy
    发表于 11-24 15:04

    如何YOLOv5测试代码?

    使用文档“使用 YOLOv5 进行对象检测”我试图从文档第 10 页访问以下链接(在 i.MX8MP 上部署 yolov5s 的步骤 - NXP 社区) ...但是这样做时会被拒绝访问。该文档没有说明需要特殊许可才能下载 test.zip 文件。NXP 的人可以提供有关如
    发表于 05-18 06:08

    基于YOLOv5的目标检测文档进行的时候出错如何解决?

    你好: 按Milk-V Duo开发板实战——基于YOLOv5的目标检测 安装好yolov5环境,在执行main.py的时候会出错,能否帮忙看下 main.py: import torch
    发表于 09-18 07:47

    使用旭日X3派的BPU部署Yolov5

    本次主要介绍在旭日x3的BPU中部署yolov5。首先在ubuntu20.04安装yolov5,并运行yolov5并使用pytoch的pt模型文件转ONNX。
    的头像 发表于 04-26 14:20 1668次阅读
    使用旭日X3派的BPU部署<b class='flag-5'>Yolov5</b>

    YOLOv8+OpenCV实现DM码定位检测与解析

    YOLOv8是YOLO系列模型的最新王者,各种指标全面超越现有对象检测与实例分割模型,借鉴了YOLOv5YOLOv6、YOLOX等模型的设计优点,
    的头像 发表于 08-10 11:35 2142次阅读
    <b class='flag-5'>YOLOv</b>8+OpenCV实现DM码定位检测与<b class='flag-5'>解析</b>

    yolov5和YOLOX正负样本分配策略

    整体上在正负样本分配中,yolov7的策略算是yolov5和YOLOX的结合。因此本文先从yolov5和YOLOX正负样本分配策略分析入手,后引入到YOLOv7的
    发表于 08-14 11:45 3506次阅读
    <b class='flag-5'>yolov5</b>和YOLOX正负样本分配策略

    YOLOv5网络结构训练策略详解

    前面已经讲过了Yolov5模型目标检测和分类模型训练流程,这一篇讲解一下yolov5模型结构,数据增强,以及训练策略。
    的头像 发表于 09-11 11:15 5612次阅读
    <b class='flag-5'>YOLOv5</b>网络结构训练策略<b class='flag-5'>详解</b>

    yolov5训练部署全链路教程

    1.Yolov5简介YOLOv5模型是Ultralytics公司于2020年6月9日公开发布的。YOLOv5模型是基于YOLOv3模型基础上改进而来的,有
    的头像 发表于 07-25 15:22 1343次阅读
    <b class='flag-5'>yolov5</b>训练部署全链路教程

    基于瑞芯微RK3576的 yolov5训练部署教程

    1.Yolov5简介 YOLOv5 模型是 Ultralytics 公司于 2020 年 6 月 9 日公开发布的。YOLOv5 模型是基于 YOLOv3 模型基础上改进而来的,有
    的头像 发表于 09-11 16:43 2396次阅读
    基于瑞芯微RK3576的 <b class='flag-5'>yolov5</b>训练部署教程