目標(biāo)檢測(cè)基礎(chǔ)

1. 目標(biāo)檢測(cè)和邊界框

實(shí)際上是人工生成一系列有限個(gè)框,然后給這些框打標(biāo)簽

2. 錨框

目標(biāo)檢測(cè)算法通常會(huì)在輸入圖像中采樣大量的區(qū)域,然后判斷這些區(qū)域中是否包含我們感興趣的目標(biāo),并調(diào)整區(qū)域邊緣從而更準(zhǔn)確地預(yù)測(cè)目標(biāo)的真實(shí)邊界框(ground-truth bounding box)。不同的模型使用的區(qū)域采樣方法可能不同。這里我們介紹其中的一種方法:它以每個(gè)像素為中心生成多個(gè)大小和寬高比(aspect ratio)不同的邊界框。這些邊界框被稱為錨框(anchor box)。

2.1 生成多個(gè)錨框

假設(shè)輸入圖像高為h,寬為w。我們分別以圖像的每個(gè)像素為中心生成不同形狀的錨框。設(shè)大小為s∈(0,1]且寬高比為r>0,那么錨框的寬和高將分別為ws\sqrt{r}和 hs/\sqrt{r} 。當(dāng)中心位置給定時(shí),已知寬和高的錨框是確定的。

下面我們分別設(shè)定好一組大小 s_1,…,s_n 和一組寬高比r_1,…,r_m。如果以每個(gè)像素為中心時(shí)使用所有的大小與寬高比的組合,輸入圖像將一共得到 whnm個(gè)錨框。雖然這些錨框可能覆蓋了所有的真實(shí)邊界框,但計(jì)算復(fù)雜度容易過(guò)高。因此,我們通常只對(duì)包含s_1r_1的大小與寬高比的組合感興趣,即

(s_1,r_1),(s_1,r_2),…,(s_1,r_m),(s_2,r_1),(s_3,r_1),…,(s_n,r_1).

也就是說(shuō),以相同像素為中心的錨框的數(shù)量為n+m?1。對(duì)于整個(gè)輸入圖像,我們將一共生成wh(n+m?1)個(gè)錨框。

2.2 交并比

我們剛剛提到某個(gè)錨框較好地覆蓋了圖像中的狗。如果該目標(biāo)的真實(shí)邊界框已知,這里的“較好”該如何量化呢?一種直觀的方法是衡量錨框和真實(shí)邊界框之間的相似度。我們知道,Jaccard系數(shù)(Jaccard index)可以衡量?jī)蓚€(gè)集合的相似度。給定集合 A 和 B ,它們的Jaccard系數(shù)即二者交集大小除以二者并集大?。?/p>

J(A,B)=\frac{|A∩B|}{|A∪B|}.

實(shí)際上,我們可以把邊界框內(nèi)的像素區(qū)域看成是像素的集合。如此一來(lái),我們可以用兩個(gè)邊界框的像素集合的Jaccard系數(shù)衡量這兩個(gè)邊界框的相似度。當(dāng)衡量?jī)蓚€(gè)邊界框的相似度時(shí),我們通常將Jaccard系數(shù)稱為交并比(Intersection over Union,IoU),即兩個(gè)邊界框相交面積與相并面積之比,如圖9.2所示。交并比的取值范圍在0和1之間:0表示兩個(gè)邊界框無(wú)重合像素,1表示兩個(gè)邊界框相等。


IoU

2.3 標(biāo)注訓(xùn)練集的錨框

在訓(xùn)練集中,我們將每個(gè)錨框視為一個(gè)訓(xùn)練樣本。為了訓(xùn)練目標(biāo)檢測(cè)模型,我們需要為每個(gè)錨框標(biāo)注兩類標(biāo)簽:一是錨框所含目標(biāo)的類別,簡(jiǎn)稱類別;二是真實(shí)邊界框相對(duì)錨框的偏移量,簡(jiǎn)稱偏移量(offset)。在目標(biāo)檢測(cè)時(shí),我們首先生成多個(gè)錨框,然后為每個(gè)錨框預(yù)測(cè)類別以及偏移量,接著根據(jù)預(yù)測(cè)的偏移量調(diào)整錨框位置從而得到預(yù)測(cè)邊界框,最后篩選需要輸出的預(yù)測(cè)邊界框。

2.4 輸出預(yù)測(cè)邊界框

在模型預(yù)測(cè)階段,我們先為圖像生成多個(gè)錨框,并為這些錨框一一預(yù)測(cè)類別和偏移量。隨后,我們根據(jù)錨框及其預(yù)測(cè)偏移量得到預(yù)測(cè)邊界框。當(dāng)錨框數(shù)量較多時(shí),同一個(gè)目標(biāo)上可能會(huì)輸出較多相似的預(yù)測(cè)邊界框。為了使結(jié)果更加簡(jiǎn)潔,我們可以移除相似的預(yù)測(cè)邊界框。常用的方法叫作非極大值抑制(non-maximum suppression,NMS)。

我們來(lái)描述一下非極大值抑制的工作原理。對(duì)于一個(gè)預(yù)測(cè)邊界框B,模型會(huì)計(jì)算各個(gè)類別的預(yù)測(cè)概率。設(shè)其中最大的預(yù)測(cè)概率為p,該概率所對(duì)應(yīng)的類別即B的預(yù)測(cè)類別。我們也將 p 稱為預(yù)測(cè)邊界框 B 的置信度。在同一圖像上,我們將預(yù)測(cè)類別非背景的預(yù)測(cè)邊界框按置信度從高到低排序,得到列表L。從 L 中選取置信度最高的預(yù)測(cè)邊界框 B_1 作為基準(zhǔn),將所有與 B_1的交并比大于某閾值的非基準(zhǔn)預(yù)測(cè)邊界框從L中移除。這里的閾值是預(yù)先設(shè)定的超參數(shù)。此時(shí),L 保留了置信度最高的預(yù)測(cè)邊界框并移除了與其相似的其他預(yù)測(cè)邊界框。 接下來(lái),從L中選取置信度第二高的預(yù)測(cè)邊界框 B_2 作為基準(zhǔn),將所有與 B_2 的交并比大于某閾值的非基準(zhǔn)預(yù)測(cè)邊界框從L 中移除。重復(fù)這一過(guò)程,直到L中所有的預(yù)測(cè)邊界框都曾作為基準(zhǔn)。此時(shí)L中任意一對(duì)預(yù)測(cè)邊界框的交并比都小于閾值。最終,輸出列表L中的所有預(yù)測(cè)邊界框。

3. 多尺度目標(biāo)檢測(cè)

在1.節(jié) 錨框中,我們?cè)趯?shí)驗(yàn)中以輸入圖像的每個(gè)像素為中心生成多個(gè)錨框。這些錨框是對(duì)輸入圖像不同區(qū)域的采樣。然而,如果以圖像每個(gè)像素為中心都生成錨框,很容易生成過(guò)多錨框而造成計(jì)算量過(guò)大。舉個(gè)例子,假設(shè)輸入圖像的高和寬分別為561像素和728像素,如果以每個(gè)像素為中心生成5個(gè)不同形狀的錨框,那么一張圖像上則需要標(biāo)注并預(yù)測(cè)200多萬(wàn)個(gè)錨框561\times728\times5。

減少錨框個(gè)數(shù)并不難。一種簡(jiǎn)單的方法是在輸入圖像中均勻采樣一小部分像素,并以采樣的像素為中心生成錨框。此外,在不同尺度下,我們可以生成不同數(shù)量和不同大小的錨框。值得注意的是,較小目標(biāo)比較大目標(biāo)在圖像上出現(xiàn)位置的可能性更多。舉個(gè)簡(jiǎn)單的例子:形狀為1\times1、1\times2、2\times2的目標(biāo)在形狀為2\times2的圖像上可能出現(xiàn)的位置分別有4、2和1種。因此,當(dāng)使用較小錨框來(lái)檢測(cè)較小目標(biāo)時(shí),我們可以采樣較多的區(qū)域;而當(dāng)使用較大錨框來(lái)檢測(cè)較大目標(biāo)時(shí),我們可以采樣較少的區(qū)域。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容