其他
YOLOv5全面解析教程⑤:计算mAP用到的Numpy函数详解
本文主要介绍在One-YOLOv5项目中计算mAP用到的一些numpy操作,这些numpy操作使用在utils/metrics.py中。本文是《YOLOv5全面解析教程④:目标检测模型精确度评估》的补充,希望能帮助到小伙伴们。
参数 a:数组 axis: 轴索引,整型,若a为n维数组,则axis的取值范围为[0,n-1] dtype: 返回结果的数据类型,若不指定,则默认与a一致n out: 数据类型为数组。用来放置结果的替代输出数组,它必须具有与输出结果具有相同的形状和数据缓冲区长度 返回 沿着指定轴的元素累加和所组成的数组,其形状应与输入数组a一致
np.cumsum(a, dtype=float) # 指定输出的特定的类型
[5, 7, 9]])
np.cumsum( x ,axis=0)
[2, 2, 2, 2],
[3, 3, 3, 3]])
[ 4, 9, 15]])
参数 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形状相同
import numpy as np
import matplotlib.pyplot as plt
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()
import numpy as np
import matplotlib.pyplot as plt
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()
np.maximum.accumulate
d = np.random.randint(low = 1, high = 10, size=(2,3))
print("d:\n",d)
c = np.maximum.accumulate(d, axis=1)
print("c:\n",c)
np.trapz()
import numpy as np
y = [1, 2, 3] ; x = [i+1 for i in range(len(y))]
print(np.trapz(x))
plt.fill_between(x, y)
plt.show() # (1 + 3)*(3 - 1)/2 = 4
import numpy as np
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