欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mAP計(jì)算目標(biāo)檢測精確度實(shí)現(xiàn)源碼

 更新時(shí)間:2022年05月09日 10:09:01   作者:Bubbliiiing  
這篇文章主要為大家介紹了mAP計(jì)算目標(biāo)檢測精確度的實(shí)現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

好多人都想算一下目標(biāo)檢測的精確度,mAP的概念雖然不好理解,但是理解了就很懂。

GITHUB代碼下載

這個(gè)是用來繪制mAP曲線的

這個(gè)是用來獲取繪制mAP曲線所需的txt的

1、IOU的概念

IOU的概念應(yīng)該比較簡單,就是衡量預(yù)測框和真實(shí)框的重合程度。下圖是一個(gè)示例:圖中綠色框?yàn)閷?shí)際框(好像不是很綠……),紅色框?yàn)轭A(yù)測框,當(dāng)我們需要判斷兩個(gè)框之間的關(guān)系時(shí),主要就是判斷兩個(gè)框的重合程度。

計(jì)算IOU的公式為:

可以看到IOU是一個(gè)比值,即交并比。

在分子部分,值為預(yù)測框和實(shí)際框之間的重疊區(qū)域;

在分母部分,值為預(yù)測框和實(shí)際框所占有的總區(qū)域。

交區(qū)域和并區(qū)域的比值,就是IOU。

2、TP TN FP FN的概念

TP TN FP FN里面一共出現(xiàn)了4個(gè)字母,分別是T F P N。

T是True;

F是False;

P是Positive;

N是Negative。

T或者F代表的是該樣本 是否被正確分類。

P或者N代表的是該樣本 被預(yù)測成了正樣本還是負(fù)樣本。

TP(True Positives)意思就是被分為了正樣本,而且分對了。

TN(True Negatives)意思就是被分為了負(fù)樣本,而且分對了,

FP(False Positives)意思就是被分為了正樣本,但是分錯(cuò)了(事實(shí)上這個(gè)樣本是負(fù)樣本)。

FN(False Negatives)意思就是被分為了負(fù)樣本,但是分錯(cuò)了(事實(shí)上這個(gè)樣本是這樣本)。

在mAP計(jì)算的過程中主要用到了,TP、FP、FN這三個(gè)概念。

3、precision(精確度)和recall(召回率)

TP是分類器認(rèn)為是正樣本而且確實(shí)是正樣本的例子,F(xiàn)P是分類器認(rèn)為是正樣本但實(shí)際上不是正樣本的例子,Precision翻譯成中文就是“分類器認(rèn)為是正類并且確實(shí)是正類的部分占所有分類器認(rèn)為是正類的比例”。

TP是分類器認(rèn)為是正樣本而且確實(shí)是正樣本的例子,F(xiàn)N是分類器認(rèn)為是負(fù)樣本但實(shí)際上不是負(fù)樣本的例子,Recall翻譯成中文就是“分類器認(rèn)為是正類并且確實(shí)是正類的部分占所有確實(shí)是正類的比例”。

4、概念舉例

如圖所示,藍(lán)色的框是 真實(shí)框。綠色和紅色的框是 預(yù)測框,綠色的框是正樣本,紅色的框是負(fù)樣本。一般來講,當(dāng)預(yù)測框和真實(shí)框IOU>=0.5時(shí),被認(rèn)為是正樣本。

因此對于這幅圖來講。

真實(shí)框一共有3個(gè),正樣本一共有2個(gè),負(fù)樣本一共有2個(gè)。

此時(shí)

5、單個(gè)指標(biāo)的局限性

在目標(biāo)檢測算法里面有一個(gè)非常重要的概念是置信度,如果置信度設(shè)置的高的話,預(yù)測的結(jié)果和實(shí)際情況就很符合,如果置信度低的話,就會(huì)有很多誤檢測。

假設(shè)一幅圖里面總共有3個(gè)正樣本,目標(biāo)檢測對這幅圖的預(yù)測結(jié)果有10個(gè),其中3個(gè)實(shí)際上是正樣本,7個(gè)實(shí)際上是負(fù)樣本。對應(yīng)置信度如下。

如果我們將可以接受的置信度設(shè)置為0.95的話,那么目標(biāo)檢測算法就會(huì)將序號為1的樣本作為正樣本,其它的都是負(fù)樣本。此時(shí)TP = 1,F(xiàn)P = 0,F(xiàn)N = 2。

此時(shí)Precision非常高,但是事實(shí)上我們只檢測出一個(gè)正樣本,還有兩個(gè)沒有檢測出來,因此只用Precision就不合適。

這個(gè)時(shí)候如果我們將可以接受的置信度設(shè)置為0.35的話,那么目標(biāo)檢測算法就會(huì)將序號為1的樣本作為正樣本,其它的都是負(fù)樣本。此時(shí)TP = 3,F(xiàn)P = 3,F(xiàn)N = 0。

此時(shí)Recall非常高,但是事實(shí)上目標(biāo)檢測算法認(rèn)為是正樣本的樣本里面,有3個(gè)樣本確實(shí)是正樣本,但有三個(gè)是負(fù)樣本,存在非常嚴(yán)重的誤檢測,因此只用Recall就不合適。

二者進(jìn)行結(jié)合才是評價(jià)的正確方法。

什么是AP

AP事實(shí)上指的是,利用不同的Precision和Recall的點(diǎn)的組合,畫出來的曲線下面的面積。如下面這幅圖所示。

當(dāng)我們?nèi)〔煌闹眯哦?,可以獲得不同的Precision和不同的Recall,當(dāng)我們?nèi)〉弥眯哦葔蛎芗臅r(shí)候,就可以獲得非常多的Precision和Recall。

此時(shí)Precision和Recall可以在圖片上畫出一條線,這條線下部分的面積就是某個(gè)類的AP值。

mAP就是所有的類的AP值求平均。

繪制mAP

我們首先在下載繪制mAP所需的代碼

在這個(gè)代碼中,如果想要繪制mAP則需要三個(gè)內(nèi)容。分別是:

detection-results:指的是預(yù)測結(jié)果的txt。

ground-truth:指的是真實(shí)框的txt。

image-optional:指的是圖片,有這個(gè)可以可視化,但是這個(gè)可以沒有。

我們需要生成這三個(gè)內(nèi)容,此時(shí)下載第二個(gè)庫,這個(gè)是我拿我制作的ssd代碼寫的一個(gè)可以生成對應(yīng)txt的例子。

點(diǎn)擊下載

我們首先將整個(gè)VOC的數(shù)據(jù)集放到VOCdevikit中

然后修改voc2ssd.py里面的trainval_percent,一般用數(shù)據(jù)集的10%或者更少用于測試。如果大家放進(jìn)VOCdevikit的數(shù)據(jù)集不是全部數(shù)據(jù),而是已經(jīng)篩選好的測試數(shù)據(jù)集的話,那么就把trainval_percent設(shè)置成0,表示全部的數(shù)據(jù)都用于測試。

然后運(yùn)行voc2ssd.py。此時(shí)會(huì)生成test.txt,存放用于測試的圖片的名字。

然后依次運(yùn)行主目錄下的get_dr_txt.py和get_gt_txt.py獲得預(yù)測框?qū)?yīng)的txt和真實(shí)框?qū)?yīng)的txt。get_dr_txt.py是用來檢測測試集里面的圖片的,然后會(huì)生成每一個(gè)圖片的檢測結(jié)果,我重寫了detect_image代碼,用于生成預(yù)測框的txt。利用for循環(huán)檢測所有的圖片。

get_dr_txt.py是用來獲取測試集中的xml,然后根據(jù)每個(gè)xml的結(jié)果生成真實(shí)框的txt。利用for循環(huán)檢測所有的xml。

完成后我們會(huì)在input獲得三個(gè)文件夾。

此時(shí)把input內(nèi)部的文件夾復(fù)制到mAP的代碼中的input文件夾內(nèi)部就可以了,然后我們運(yùn)行mAP的代碼中的main.py,運(yùn)行結(jié)束后,會(huì)生成mAP相關(guān)的文件。

結(jié)果生成在Result里面。

以上就是mAP計(jì)算目標(biāo)檢測精確度實(shí)現(xiàn)源碼的詳細(xì)內(nèi)容,更多關(guān)于mAP目標(biāo)檢測的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論