0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

YOLOv5全面解析教程:計(jì)算mAP用到的numpy函數(shù)詳解

jf_pmFSk4VX ? 來(lái)源:GiantPandaCV ? 作者:GiantPandaCV ? 2022-11-21 15:27 ? 次閱讀

代碼倉(cāng)庫(kù)地址:https://github.com/Oneflow-Inc/one-yolov5歡迎star one-yolov5項(xiàng)目 獲取最新的動(dòng)態(tài)。如果您有問(wèn)題,歡迎在倉(cāng)庫(kù)給我們提出寶貴的意見。如果對(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)

參數(shù)

a :數(shù)組

axis: 軸索引,整型,若a為n維數(shù)組,則axis的取值范圍為[0,n-1]

dtype: 返回結(jié)果的數(shù)據(jù)類型,若不指定,則默認(rèn)與a一致n

out: 數(shù)據(jù)類型為數(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)#指定輸出的特定的類型
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ù)沒有指定那么就必須是遞增的 否則,在使用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ù),類型為浮點(diǎn)數(shù)或復(fù)數(shù)(對(duì)應(yīng)于fp值) 當(dāng)x < xp[0]時(shí)的插值返回值,默認(rèn)為fp[0].

right: 可選參數(shù),類型為浮點(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形狀相同

注意!

在沒有設(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')#畫插值
plt.show()
70f3fac8-6759-11ed-8abf-dac502259ad0.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圖片

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圖片
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圖片

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4277

    瀏覽量

    62325
  • MAP
    MAP
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    15121

原文標(biāo)題:《YOLOv5全面解析教程》五,計(jì)算mAP用到的numpy函數(shù)詳解

文章出處:【微信號(hào):GiantPandaCV,微信公眾號(hào):GiantPandaCV】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    YOLOv5】LabVIEW+YOLOv5快速實(shí)現(xiàn)實(shí)時(shí)物體識(shí)別(Object Detection)含源碼

    前面我們給大家介紹了基于LabVIEW+YOLOv3/YOLOv4的物體識(shí)別(對(duì)象檢測(cè)),今天接著上次的內(nèi)容再來(lái)看看YOLOv5。本次主要是和大家分享使用LabVIEW快速實(shí)現(xiàn)yolov5
    的頭像 發(fā)表于 03-13 16:01 ?2062次閱讀

    Yolov5算法解讀

    yolov5于2020年由glenn-jocher首次提出,直至今日yolov5仍然在不斷進(jìn)行升級(jí)迭代。 Yolov5YOLOv5s、YOLOv5
    的頭像 發(fā)表于 05-17 16:38 ?8409次閱讀
    <b class='flag-5'>Yolov5</b>算法解讀

    YOLOv5】LabVIEW+TensorRT的yolov5部署實(shí)戰(zhàn)(含源碼)

    今天主要和大家分享在LabVIEW中使用純TensoRT工具包快速部署并實(shí)現(xiàn)yolov5的物體識(shí)別
    的頭像 發(fā)表于 08-21 22:20 ?1261次閱讀
    【<b class='flag-5'>YOLOv5</b>】LabVIEW+TensorRT的<b class='flag-5'>yolov5</b>部署實(shí)戰(zhàn)(含源碼)

    龍哥手把手教你學(xué)視覺-深度學(xué)習(xí)YOLOV5

    可以實(shí)現(xiàn)理想的檢測(cè)效果。在本套視頻,有別于常見的深度學(xué)習(xí)教程以理論為主進(jìn)行全面講解,以沒有任何深度學(xué)習(xí)理論基礎(chǔ)的學(xué)員學(xué)習(xí)角度,以實(shí)際應(yīng)用為目標(biāo),講解如何設(shè)計(jì)一個(gè)完整的yolov5工業(yè)外觀檢測(cè),手把手教學(xué)
    發(fā)表于 09-03 09:39

    怎樣使用PyTorch Hub去加載YOLOv5模型

    在Python>=3.7.0環(huán)境中安裝requirements.txt,包括PyTorch>=1.7。模型和數(shù)據(jù)集從最新的 YOLOv5版本自動(dòng)下載。簡(jiǎn)單示例此示例從
    發(fā)表于 07-22 16:02

    YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)解析

    1、YOLOv5 網(wǎng)絡(luò)結(jié)構(gòu)解析  YOLOv5針對(duì)不同大?。╪, s, m, l, x)的網(wǎng)絡(luò)整體架構(gòu)都是一樣的,只不過(guò)會(huì)在每個(gè)子模塊中采用不同的深度和寬度,  分別應(yīng)對(duì)yaml文件中
    發(fā)表于 10-31 16:30

    YOLOv5全面解析教程之目標(biāo)檢測(cè)模型精確度評(píng)估

    ):分類器把負(fù)例正確的分類-預(yù)測(cè)為負(fù)例(yolov5中沒有應(yīng)用到)  yolov5中沒有應(yīng)用TN的原因: TN代表的是所有可能的未正確檢測(cè)到的邊界框。然而在yolo在目標(biāo)檢測(cè)任務(wù)中,每個(gè)網(wǎng)格會(huì)生成很多的預(yù)測(cè)
    發(fā)表于 11-21 16:40

    淺析在one-yolov5項(xiàng)目中計(jì)算mAP用到的一些numpy操作

    引言本文主要介紹在 one-yolov5 項(xiàng)目中 計(jì)算mAP用到的一些numpy操作,這些numpy
    發(fā)表于 11-24 15:04

    如何YOLOv5測(cè)試代碼?

    使用文檔“使用 YOLOv5 進(jìn)行對(duì)象檢測(cè)”我試圖從文檔第 10 頁(yè)訪問(wèn)以下鏈接(在 i.MX8MP 上部署 yolov5s 的步驟 - NXP 社區(qū)) ...但是這樣做時(shí)會(huì)被拒絕訪問(wèn)。該文檔沒有說(shuō)明需要特殊許可才能下載 test.zip 文件。NXP 的人可以提供有關(guān)如
    發(fā)表于 05-18 06:08

    基于YOLOv5的目標(biāo)檢測(cè)文檔進(jìn)行的時(shí)候出錯(cuò)如何解決?

    你好: 按Milk-V Duo開發(fā)板實(shí)戰(zhàn)——基于YOLOv5的目標(biāo)檢測(cè) 安裝好yolov5環(huán)境,在執(zhí)行main.py的時(shí)候會(huì)出錯(cuò),能否幫忙看下 main.py: import torch
    發(fā)表于 09-18 07:47

    在C++中使用OpenVINO工具包部署YOLOv5模型

    下載并轉(zhuǎn)換YOLOv5預(yù)訓(xùn)練模型的詳細(xì)步驟,請(qǐng)參考:《基于OpenVINO?2022.2和蝰蛇峽谷優(yōu)化并部署YOLOv5模型》,本文所使用的OpenVINO是2022.3 LTS版。
    的頭像 發(fā)表于 02-15 16:53 ?4454次閱讀

    使用旭日X3派的BPU部署Yolov5

    本次主要介紹在旭日x3的BPU中部署yolov5。首先在ubuntu20.04安裝yolov5,并運(yùn)行yolov5并使用pytoch的pt模型文件轉(zhuǎn)ONNX。
    的頭像 發(fā)表于 04-26 14:20 ?825次閱讀
    使用旭日X3派的BPU部署<b class='flag-5'>Yolov5</b>

    YOLOv8+OpenCV實(shí)現(xiàn)DM碼定位檢測(cè)與解析

    YOLOv8是YOLO系列模型的最新王者,各種指標(biāo)全面超越現(xiàn)有對(duì)象檢測(cè)與實(shí)例分割模型,借鑒了YOLOv5、YOLOv6、YOLOX等模型的設(shè)計(jì)優(yōu)點(diǎn),
    的頭像 發(fā)表于 08-10 11:35 ?1219次閱讀
    <b class='flag-5'>YOLOv</b>8+OpenCV實(shí)現(xiàn)DM碼定位檢測(cè)與<b class='flag-5'>解析</b>

    yolov5和YOLOX正負(fù)樣本分配策略

    整體上在正負(fù)樣本分配中,yolov7的策略算是yolov5和YOLOX的結(jié)合。因此本文先從yolov5和YOLOX正負(fù)樣本分配策略分析入手,后引入到YOLOv7的
    發(fā)表于 08-14 11:45 ?2165次閱讀
    <b class='flag-5'>yolov5</b>和YOLOX正負(fù)樣本分配策略

    YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練策略詳解

    前面已經(jīng)講過(guò)了Yolov5模型目標(biāo)檢測(cè)和分類模型訓(xùn)練流程,這一篇講解一下yolov5模型結(jié)構(gòu),數(shù)據(jù)增強(qiáng),以及訓(xùn)練策略。
    的頭像 發(fā)表于 09-11 11:15 ?2069次閱讀
    <b class='flag-5'>YOLOv5</b>網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練策略<b class='flag-5'>詳解</b>