代碼倉(cāng)庫(kù)地址:https://github.com/Oneflow-Inc/one-yolov5歡迎star one-yolov5項(xiàng)目 獲取最新的動(dòng)態(tài)。如果您有問(wèn)題,歡迎在倉(cāng)庫(kù)給我們提出寶貴的意見(jiàn)。如果對(duì)您有幫助,歡迎來(lái)給我Star呀~
引言
本文主要介紹在 one-yolov5 項(xiàng)目中 計(jì)算mAP用到的一些numpy操作,這些numpy操作使用在 utils/metrics.py (https://github.com/Oneflow-Inc/one-yolov5/blob/734609fca9d844ac48749b132fb0a5777df34167/utils/metrics.py)中。這篇文章是《YOLOv5全面解析教程》四,目標(biāo)檢測(cè)模型精確度評(píng)估 的補(bǔ)充,希望能幫助到小伙伴們。
用到的 numpy 操作比如:np.cumsum()、np.interp()、np.maximum.accumulate()、np.trapz()等。接下來(lái)將在下面逐一介紹。
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 :數(shù)組
axis: 軸索引,整型,若a為n維數(shù)組,則axis的取值范圍為[0,n-1]
dtype: 返回結(jié)果的數(shù)據(jù)類(lèi)型,若不指定,則默認(rèn)與a一致n
out: 數(shù)據(jù)類(lèi)型為數(shù)組。用來(lái)放置結(jié)果的替代輸出數(shù)組,它必須具有與輸出結(jié)果具有相同的形狀和數(shù)據(jù)緩沖區(qū)長(zhǎng)度
返回
沿著指定軸的元素累加和所組成的數(shù)組,其形狀應(yīng)與輸入數(shù)組a一致
np.cumsum(a)#計(jì)算累積和的軸。默認(rèn)(無(wú))是在展平的數(shù)組上計(jì)算cumsum。
array([ 1, 3, 6, 10, 15, 21])
a=np.array([[1,2,3],[4,5,6]]) np.cumsum(a,dtype=float)#指定輸出的特定的類(lèi)型
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()
參數(shù)
x: 數(shù)組 待插入數(shù)據(jù)的橫坐標(biāo)
xp: 一維浮點(diǎn)數(shù)序列 原始數(shù)據(jù)點(diǎn)的橫坐標(biāo),如果period參數(shù)沒(méi)有指定那么就必須是遞增的 否則,在使用xp = xp % period正則 化之后,xp在內(nèi)部進(jìn)行排序
fp: 一維浮點(diǎn)數(shù)或復(fù)數(shù)序列 原始數(shù)據(jù)點(diǎn)的縱坐標(biāo),和xp序列等長(zhǎng).
left: 可選參數(shù),類(lèi)型為浮點(diǎn)數(shù)或復(fù)數(shù)(對(duì)應(yīng)于fp值) 當(dāng)x < xp[0]時(shí)的插值返回值,默認(rèn)為fp[0].
right: 可選參數(shù),類(lèi)型為浮點(diǎn)數(shù)或復(fù)數(shù)(對(duì)應(yīng)于fp值),當(dāng)x > xp[-1]時(shí)的插值返回值,默認(rèn)為fp[-1].
period: None或者浮點(diǎn)數(shù),可選參數(shù) 橫坐標(biāo)的周期 此參數(shù)使得可以正確插入angular x-coordinates. 如果該參數(shù)被設(shè)定,那么忽略left參數(shù)和right參數(shù)
返回
浮點(diǎn)數(shù)或復(fù)數(shù)(對(duì)應(yīng)于fp值)或ndarray. 插入數(shù)據(jù)的縱坐標(biāo),和x形狀相同
注意!
在沒(méi)有設(shè)置period參數(shù)時(shí),默認(rèn)要求xp參數(shù)是遞增序列
#插入一個(gè)值 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')#畫(huà)插值 plt.show()
![70f3fac8-6759-11ed-8abf-dac502259ad0.png](https://file1.elecfans.com//web2/M00/97/DA/wKgZomTnQ_WANjslAABGwJ5PJ2I388.png)
#插入一個(gè)序列 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](https://file1.elecfans.com//web2/M00/97/DA/wKgZomTnQ_WAPRXEAABDVkhQaOU643.png)
np.maximum.accumulate
計(jì)算數(shù)組(或數(shù)組的特定軸)的累積最大值
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)使用復(fù)合梯形規(guī)則沿給定軸積分。
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](https://file1.elecfans.com//web2/M00/97/DA/wKgZomTnQ_WANAOeAAA79Uh-_34822.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](https://file1.elecfans.com//web2/M00/97/DA/wKgZomTnQ_aAYX_3AAA47gEgWm0387.png)
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
63020 -
MAP
+關(guān)注
關(guān)注
0文章
49瀏覽量
15186
原文標(biāo)題:《YOLOv5全面解析教程》五,計(jì)算mAP用到的numpy函數(shù)詳解
文章出處:【微信號(hào):GiantPandaCV,微信公眾號(hào):GiantPandaCV】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
【YOLOv5】LabVIEW+YOLOv5快速實(shí)現(xiàn)實(shí)時(shí)物體識(shí)別(Object Detection)含源碼
【YOLOv5】LabVIEW+TensorRT的yolov5部署實(shí)戰(zhàn)(含源碼)
![【<b class='flag-5'>YOLOv5</b>】LabVIEW+TensorRT的<b class='flag-5'>yolov5</b>部署實(shí)戰(zhàn)(含源碼)](https://file1.elecfans.com/web2/M00/81/CF/wKgaomQO1LqAUJBGAAIyJFtbKj0277.png)
龍哥手把手教你學(xué)視覺(jué)-深度學(xué)習(xí)YOLOV5篇
怎樣使用PyTorch Hub去加載YOLOv5模型
YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)解析
YOLOv5全面解析教程之目標(biāo)檢測(cè)模型精確度評(píng)估
淺析在one-yolov5項(xiàng)目中計(jì)算mAP用到的一些numpy操作
如何YOLOv5測(cè)試代碼?
基于YOLOv5的目標(biāo)檢測(cè)文檔進(jìn)行的時(shí)候出錯(cuò)如何解決?
在C++中使用OpenVINO工具包部署YOLOv5模型
使用旭日X3派的BPU部署Yolov5
![使用旭日X3派的BPU部署<b class='flag-5'>Yolov5</b>](https://file1.elecfans.com/web2/M00/82/4B/wKgZomRIxXiAO1k3AAAQ1gcwo0w607.jpg)
YOLOv8+OpenCV實(shí)現(xiàn)DM碼定位檢測(cè)與解析
![<b class='flag-5'>YOLOv</b>8+OpenCV實(shí)現(xiàn)DM碼定位檢測(cè)與<b class='flag-5'>解析</b>](https://file1.elecfans.com/web2/M00/90/01/wKgZomTUW2uAdbtqAAAg9NuNq4g524.png)
yolov5和YOLOX正負(fù)樣本分配策略
![<b class='flag-5'>yolov5</b>和YOLOX正負(fù)樣本分配策略](https://file1.elecfans.com/web2/M00/90/65/wKgZomTZpAGAL2OrAAALvAFuRhg212.jpg)
YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練策略詳解
![<b class='flag-5'>YOLOv5</b>網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練策略<b class='flag-5'>詳解</b>](https://file1.elecfans.com/web2/M00/A3/D6/wKgaomT-hseABToSAABEbyu0dCc818.png)
評(píng)論