|
摘要:在這之前我們已經(jīng)介紹了神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)的原理、應(yīng)用以及常見的分類神經(jīng)網(wǎng)絡(luò)模型。但在實(shí)際情況中,我們很難直接得到一個(gè)只包含待檢測(cè)物體的圖像來(lái)進(jìn)行分類。本文旨在介紹常用的目標(biāo)檢測(cè)模型,目標(biāo)檢測(cè)的任務(wù)是除了給出待檢測(cè)目標(biāo)的類別信息外,還需要給出物體在圖像中的位置,并用一個(gè)最小的矩形框?qū)⑵浒鼑饋?lái),即分類+定位。自從卷積神經(jīng)網(wǎng)絡(luò)被提出以來(lái),目標(biāo)檢測(cè)領(lǐng)域也得到了飛速的發(fā)展,從Faster-RCNN到Y(jié)OLO再到SSD算法大大提高了目標(biāo)檢測(cè)的準(zhǔn)確率,將目標(biāo)檢測(cè)任務(wù)推向了一個(gè)新的高度。 一、目標(biāo)檢測(cè)任務(wù)在介紹目標(biāo)檢測(cè)網(wǎng)絡(luò)之前,我們要了解目標(biāo)檢測(cè)的任務(wù)是什么,它要完成什么工作,以及評(píng)價(jià)目標(biāo)檢測(cè)效果的指標(biāo)有哪些。 1.1 目標(biāo)檢測(cè)任務(wù)描述目標(biāo)檢測(cè)是圖像處理學(xué)科的一個(gè)重要難題,檢測(cè)任務(wù)除了要實(shí)現(xiàn)目標(biāo)分類外還要在輸入圖片中找出存在的物體的類別和位置(可能存在多種物體)。物體檢測(cè)可能會(huì)存在多個(gè)檢測(cè)目標(biāo),這不僅需要我們判別出各個(gè)物體的類別,而且還要準(zhǔn)確定位出物體的位置,如下圖所示:
1.2目標(biāo)檢測(cè)任務(wù)評(píng)價(jià)指標(biāo)對(duì)于目標(biāo)分類,我們可以通過(guò)評(píng)測(cè)對(duì)于訓(xùn)練樣本的輸出預(yù)測(cè)標(biāo)簽與樣本的實(shí)際標(biāo)簽的對(duì)比來(lái)評(píng)價(jià)算法的準(zhǔn)確性。對(duì)于目標(biāo)檢測(cè)而言,為了對(duì)檢測(cè)算法的效果進(jìn)行評(píng)價(jià),有一些常用的概念,包括Bounding
Bbox概念比較簡(jiǎn)單,它表示包含物體的最小矩形,該物體在最小矩形內(nèi)部。其用一組坐標(biāo) ( x , y , w , h ) (x,y,w,h) (x,y,w,h)來(lái)表達(dá),其中, x , y x,y x,y表示bbox的左下角的坐標(biāo), w , h w,h w,h表示矩形的寬和高。當(dāng)然不同的數(shù)據(jù)集有不同的坐標(biāo)形式。
IoU表示兩個(gè)矩形區(qū)域的重合度,是目標(biāo)檢測(cè)的評(píng)價(jià)指標(biāo)之一,在目標(biāo)檢測(cè)算法中具有指導(dǎo)意義。假設(shè)存在兩個(gè)矩形區(qū)域 R R R和 R ′ R' R′,IoU的計(jì)算公式如下: O ( R , R ′ ) = ∣ R ∩ R ′ ∣ ∣ R ∪ R ′ ∣ O\left( R,R^{'} \right) = \frac{\left| R \cap R^{'} \right|}{\left| R \cup R^{'} \right|} O(R,R′)=∣R∪R′∣∣∣∣?R∩R′∣∣∣??
IoU表示候選框BBOX與標(biāo)定框GT(Ground Truth)的重合程度,在實(shí)際應(yīng)用時(shí),通過(guò)對(duì)比算法給定的BBOX與標(biāo)定框的IoU來(lái)確定該標(biāo)定框是否被采用。
對(duì)于分類任務(wù)而言,我們有多種評(píng)價(jià)指標(biāo),包括精度Accuracy、查準(zhǔn)率Precision及查全率Recall等。假設(shè)有一個(gè)分類器,其分類結(jié)果有如下四種情況:
很自然地,我們會(huì)想到使用精度來(lái)評(píng)價(jià)算法性能。精度表示全局的準(zhǔn)確程度,其用分類正確的樣本除以所有的樣本數(shù)來(lái)表示,即:精度=(TP+TN)/(TP+TN+FP+FN)。但是準(zhǔn)確率有時(shí)候不能完全反映一個(gè)算法的性能,還需要其他的評(píng)價(jià)指標(biāo)來(lái)補(bǔ)充。 查準(zhǔn)率表示分類器分類出來(lái)的正確正樣本數(shù)與分類器分類出來(lái)的所有正樣本總數(shù)之比,即:準(zhǔn)確率=TP/(TP+FP)。 查全率表示分類器分類出來(lái)的正確正樣本數(shù)與實(shí)際為正樣本總數(shù)之比,即:召回率Recall=TP/(TP+FN) 舉個(gè)例子,假如我們有1000個(gè)樣本,其中只有1個(gè)肺結(jié)核病例,其余999個(gè)是正常影像圖像,那么我們訓(xùn)練了一個(gè)分類器,它對(duì)這1000個(gè)樣本的預(yù)測(cè)結(jié)果全部為肺結(jié)核,那么它的分類精度為0.01%,對(duì)肺結(jié)核的分類準(zhǔn)確率為0.01%,對(duì)肺結(jié)核的召回率卻為100%。從上例可以看出查準(zhǔn)率與查全率通常是一對(duì)相互矛盾的指標(biāo)。一般而言,當(dāng)查全率比較高時(shí),查準(zhǔn)率通常比較低;當(dāng)查準(zhǔn)率高時(shí),查全率通常較低。在實(shí)際的模型評(píng)估中,僅用Precision或Recall兩個(gè)值是不夠的,通常使用Recall-Precision曲線來(lái)表征分類器的性能。如果一個(gè)分類器的性能較好,那么它通常有如下特征:在Recall增長(zhǎng)的同時(shí),Precision的值保持在一個(gè)很高的水平。而性能較差的分類器則可能會(huì)損失很多的Precision才能換來(lái)Recall值的提高。Precision-Recall曲線如下圖所示:
之前一直在說(shuō)什么Precision什么Recall,但是這好像是針對(duì)目標(biāo)分類的指標(biāo)啊,和目標(biāo)檢測(cè)沒有關(guān)系?。课覀冎苯油ㄟ^(guò)下面這個(gè)例子來(lái)說(shuō)明,假設(shè)一個(gè)數(shù)據(jù)集的某個(gè)類總共有7張圖片,綠色框表示我們標(biāo)定的真實(shí)標(biāo)定框(GT),紅色框表示我們的網(wǎng)絡(luò)的輸出預(yù)測(cè)結(jié)果,其目標(biāo)檢測(cè)結(jié)果如下:
對(duì)每個(gè)紅色的預(yù)測(cè)框我們的網(wǎng)絡(luò)都會(huì)給定一個(gè)置信度Confidence來(lái)表示檢測(cè)結(jié)果的得分,如果檢測(cè)框與目標(biāo)框的IoU大于0.5,我們就將其記為TP,否則記為FP。如果有多個(gè)檢測(cè)框與目標(biāo)框的IoU大于0.5,則將檢測(cè)框與目標(biāo)框的IoU最大的那個(gè)記為TP,注意這里是IoU最大,而不是Confidence最大。如下表所示:
有了TP和FP以及檢測(cè)圖像中標(biāo)定框的個(gè)數(shù),我們就能計(jì)算Precision和Recall了,將計(jì)算結(jié)果按照Confidence進(jìn)行排序,并分別隨著Confidence的增加計(jì)算TP和FP的和,Acc TP和ACC FP,如下表所示。我們以第一個(gè)為例來(lái)計(jì)算Precision和Recall,由于7幅圖中共有15個(gè)標(biāo)定框,所以TP+FN=15。 P r e c i s i o n = ACC TP ACC TP + ACC FP = 1 1 = 1 Precision = \frac{\text{ACC TP}}{\text{ACC TP + ACC FP}} = \frac{1}{1} = 1 Precision=ACC TP + ACC FPACC TP?=11?=1
R
e
c
a
l
l
=
ACC TP
T
P
+
F
N
=
1
15
=
0.0666
Recall = \frac{\text{ACC TP}}{TP + FN} = \frac{1}{15} = 0.0666
Recall=TP+FNACC TP?=151?=0.0666
有了Precision和Recall就可以計(jì)算AP及mAP了,盡管PR曲線可以反映出檢測(cè)算法的性能,但是總感覺不太直觀,AP就是綜合了Precision和Recall的一個(gè)目標(biāo)檢測(cè)算法的一個(gè)評(píng)價(jià)指標(biāo)。計(jì)算AP有三種不同的方法,這里只介紹VOC2007方法,對(duì)其他方法有興趣的同學(xué)可以閱讀這里。AP的計(jì)算方式是給定一組閾值[0,0.1,0.2,…,1],對(duì)于recall大于每一個(gè)閾值我們都能得到一個(gè)對(duì)應(yīng)的最大的precision。這樣我們就能得到11個(gè)precision,然后計(jì)算這11個(gè)precision即為AP,這種方法也稱為11點(diǎn)插值平均精度(11-point interpolated average precision)。上例中的AP按這種方法的結(jié)果: AP = 1 11 ( 1 + 0.6666 + 0.4285 + 0.4285 + 0.4285 + 0 + 0 + 0 + 0 + 0 + 0 ) = 26.84 % {\text{AP} = \frac{1}{11}\left( 1 + 0.6666 + 0.4285 + 0.4285 + 0.4285 + 0 + 0 + 0 + 0 + 0 + 0 \right)}{= 26.84\%} AP=111?(1+0.6666+0.4285+0.4285+0.4285+0+0+0+0+0+0)=26.84% 但是由于我們的數(shù)據(jù)集通常不止包含一個(gè)類別,比如VOC中有20個(gè)類,COCO數(shù)據(jù)集中有80個(gè)類別,所以我們使用mAP來(lái)衡量整個(gè)數(shù)據(jù)集的性能。mAP的計(jì)算就比較簡(jiǎn)單了,就是分別計(jì)算不同類別的AP的值,然后再對(duì)其求平均值就得到了mAP。 目標(biāo)檢測(cè)的基本任務(wù)及一些常用的概念這里基本就介紹完了,下面我們具體來(lái)針對(duì)一些經(jīng)典的算法來(lái)全面的了解基于深度學(xué)習(xí)的目標(biāo)檢測(cè)是怎么實(shí)現(xiàn)的,其中的精彩程度可是要遠(yuǎn)超目標(biāo)分類算法。 參考文獻(xiàn)[1] Object Detection–RCNN,SPPNet,Fast RCNN,F(xiàn)asterRCNN論文詳解 [2] 目標(biāo)檢測(cè)—評(píng)價(jià)指標(biāo) [3] AP、mAP計(jì)算解析 [4] 非極大值抑制(Non-Maximum Suppression,NMS) |
|
|
來(lái)自: 行走在理想邊緣 > 《機(jī)器學(xué)習(xí)》