吳恩達(dá)深度學(xué)習(xí)筆記(99)-目標(biāo)檢測之Anchor Boxes

Anchor Boxes

到目前為止,對(duì)象檢測中存在的一個(gè)問題是每個(gè)格子只能檢測出一個(gè)對(duì)象,如果你想讓一個(gè)格子檢測出多個(gè)對(duì)象,你可以這么做,就是使用anchor box這個(gè)概念。

我們還是先吃一顆栗子:

假設(shè)你有這樣一張圖片,對(duì)于這個(gè)例子,我們繼續(xù)使用3×3網(wǎng)格,注意行人的中點(diǎn)和汽車的中點(diǎn)幾乎在同一個(gè)地方,兩者都落入到同一個(gè)格子中。

所以對(duì)于那個(gè)格子,如果 y 輸出這個(gè)向量y

你可以檢測這三個(gè)類別,行人、汽車和摩托車,它將無法輸出檢測結(jié)果,所以我必須從兩個(gè)檢測結(jié)果中選一個(gè)。

而anchor box的思路是:預(yù)先定義兩個(gè)不同形狀的anchor box,或者anchor box形狀,你要做的是把預(yù)測結(jié)果和這兩個(gè)anchor box關(guān)聯(lián)起來。一般來說,你可能會(huì)用更多的anchor box,可能要5個(gè)甚至更多,但對(duì)于這個(gè)筆記中,我們就用兩個(gè)anchor box,這樣介紹起來簡單一些。

你要做的是定義類別標(biāo)簽,用的向量不再是上面這個(gè):

而是重復(fù)兩次:

前面的p_c,b_x,b_y,b_h,b_w,c_1,c_2,c_3(綠色方框標(biāo)記的參數(shù))是和anchor box 1關(guān)聯(lián)的8個(gè)參數(shù),后面的8個(gè)參數(shù)(橙色方框標(biāo)記的元素)是和anchor box 2相關(guān)聯(lián)。

因?yàn)樾腥说男螤罡愃朴赼nchor box 1的形狀,而不是anchor box 2的形狀,所以你可以用這8個(gè)數(shù)值(前8個(gè)參數(shù)),這么編碼p_c=1,是的,代表有個(gè)行人,用b_x,b_y,b_h和b_w來編碼包住行人的邊界框,然后用c_1,c_2,c_3(c_1=1,c_2=0,c_3=0)來說明這個(gè)對(duì)象是個(gè)行人。

然后是車子,因?yàn)檐囎拥倪吔缈虮绕餫nchor box 1更像anchor box 2的形狀,你就可以這么編碼,這里第二個(gè)對(duì)象是汽車,然后有這樣的邊界框等等,這里所有參數(shù)都和檢測汽車相關(guān)(p_c=1,b_x,b_y,b_h,b_w,c_1=0,c_2=1,c_3=0)。

總結(jié)一下,用anchor box之前,你做的是這個(gè),對(duì)于訓(xùn)練集圖像中的每個(gè)對(duì)象,都根據(jù)那個(gè)對(duì)象中點(diǎn)位置分配到對(duì)應(yīng)的格子中,所以輸出y就是3×3×8,因?yàn)槭?×3網(wǎng)格,對(duì)于每個(gè)網(wǎng)格位置,我們有輸出向量,包含p_c,然后邊界框參數(shù)b_x,b_y,b_h和b_w,然后c_1,c_2,c_3。

現(xiàn)在用到anchor box這個(gè)概念,是這么做的。

現(xiàn)在每個(gè)對(duì)象都和之前一樣分配到同一個(gè)格子中,分配到對(duì)象中點(diǎn)所在的格子中,以及分配到和對(duì)象形狀交并比最高的anchor box中。所以這里有兩個(gè)anchor box,你就取這個(gè)對(duì)象,如果你的對(duì)象形狀是這樣的(編號(hào)1,紅色框),你就看看這兩個(gè)anchor box,anchor box 1形狀是這樣(編號(hào)2,紫色框),anchor box 2形狀是這樣(編號(hào)3,紫色框),然后你觀察哪一個(gè)anchor box和實(shí)際邊界框(編號(hào)1,紅色框)的交并比更高,不管選的是哪一個(gè),這個(gè)對(duì)象不只分配到一個(gè)格子,而是分配到一對(duì),即(grid cell,anchor box)對(duì),這就是對(duì)象在目標(biāo)標(biāo)簽中的編碼方式。

所以現(xiàn)在輸出 y 就是3×3×16,上一張幻燈片中你們看到 y 現(xiàn)在是16維的,或者你也可以看成是3×3×2×8,因?yàn)楝F(xiàn)在這里有2個(gè)anchor box,而 y 是8維的。y 維度是8,因?yàn)槲覀冇?個(gè)對(duì)象類別,如果你有更多對(duì)象,那么y 的維度會(huì)更高。

所以我們來看一個(gè)具體的例子,對(duì)于這個(gè)格子(編號(hào)2),我們定義一下y,:

所以行人更類似于anchor box 1的形狀,所以對(duì)于行人來說,我們將她分配到向量的上半部分。是的,這里存在一個(gè)對(duì)象,即p_c=1,有一個(gè)邊界框包住行人,如果行人是類別1,那么 c_1=1,c_2=0,c_3=0(編號(hào)1所示的橙色參數(shù))。車子的形狀更像anchor box 2,所以這個(gè)向量剩下的部分是 p_c=1,然后和車相關(guān)的邊界框,然后c_1=0,c_2=1,c_3=0(編號(hào)1所示的綠色參數(shù))。所以這就是對(duì)應(yīng)中下格子的標(biāo)簽 y,這個(gè)箭頭指向的格子(編號(hào)2所示)。

現(xiàn)在其中一個(gè)格子有車,沒有行人,如果它里面只有一輛車,那么假設(shè)車子的邊界框形狀是這樣,更像anchor box 2,如果這里只有一輛車,行人走開了,那么anchor box 2分量還是一樣的,要記住這是向量對(duì)應(yīng)anchor box 2的分量和anchor box 1對(duì)應(yīng)的向量分量,你要填的就是,里面沒有任何對(duì)象,所以 p_c=0,然后剩下的就是don’t care-s(即?)(編號(hào)3所示)。

現(xiàn)在還有一些額外的細(xì)節(jié),如果你有兩個(gè)anchor box,但在同一個(gè)格子中有三個(gè)對(duì)象,這種情況算法處理不好,你希望這種情況不會(huì)發(fā)生,但如果真的發(fā)生了,這個(gè)算法并沒有很好的處理辦法,對(duì)于這種情況,我們就引入一些打破僵局的默認(rèn)手段。

還有這種情況,兩個(gè)對(duì)象都分配到一個(gè)格子中,而且它們的anchor box形狀也一樣,這是算法處理不好的另一種情況,你需要引入一些打破僵局的默認(rèn)手段,專門處理這種情況,希望你的數(shù)據(jù)集里不會(huì)出現(xiàn)這種情況,其實(shí)出現(xiàn)的情況不多,所以對(duì)性能的影響應(yīng)該不會(huì)很大。

這就是anchor box的概念,我們建立anchor box這個(gè)概念,是為了處理兩個(gè)對(duì)象出現(xiàn)在同一個(gè)格子的情況,實(shí)踐中這種情況很少發(fā)生,特別是如果你用的是19×19網(wǎng)格而不是3×3的網(wǎng)格,兩個(gè)對(duì)象中點(diǎn)處于361個(gè)格子中同一個(gè)格子的概率很低,確實(shí)會(huì)出現(xiàn),但出現(xiàn)頻率不高。

也許設(shè)立anchor box的好處在于anchor box能讓你的學(xué)習(xí)算法能夠更有征對(duì)性,特別是如果你的數(shù)據(jù)集有一些很高很瘦的對(duì)象,比如說行人,還有像汽車這樣很寬的對(duì)象,這樣你的算法就能更有針對(duì)性的處理,這樣有一些輸出單元可以針對(duì)檢測很寬很胖的對(duì)象,比如說車子,然后輸出一些單元,可以針對(duì)檢測很高很瘦的對(duì)象,比如說行人。

最后,你應(yīng)該怎么選擇anchor box呢?

人們一般手工指定anchor box形狀,你可以選擇5到10個(gè)anchor box形狀,覆蓋到多種不同的形狀,可以涵蓋你想要檢測的對(duì)象的各種形狀。還有一個(gè)更高級(jí)的版本,我就簡單說一句,你們?nèi)绻佑|過一些機(jī)器學(xué)習(xí),可能知道后期YOLO論文中有更好的做法,就是所謂的k-平均算法,可以將兩類對(duì)象形狀聚類,如果我們用它來選擇一組anchor box,選擇最具有代表性的一組anchor box,可以代表你試圖檢測的十幾個(gè)對(duì)象類別,但這其實(shí)是自動(dòng)選擇anchor box的高級(jí)方法。如果你就人工選擇一些形狀,合理的考慮到所有對(duì)象的形狀,你預(yù)計(jì)會(huì)檢測的很高很瘦或者很寬很胖的對(duì)象,這應(yīng)該也不難做。

所以這就是anchor box,在下一個(gè)筆記中,我們把學(xué)到的所有東西一起融入到Y(jié)OLO算法中。

?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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