博客專欄

EEPW首頁(yè) > 博客 > Anchor-free目標(biāo)檢測(cè) | 工業(yè)應(yīng)用更友好的新網(wǎng)絡(luò)(1)

Anchor-free目標(biāo)檢測(cè) | 工業(yè)應(yīng)用更友好的新網(wǎng)絡(luò)(1)

發(fā)布人:CV研究院 時(shí)間:2021-09-16 來(lái)源:工程師 發(fā)布文章

1.jpg

隨著 CVPR 2020和ICCV 2020的結(jié)束,一大批目標(biāo)檢測(cè)的論文在arXiv上爭(zhēng)先恐后地露面,更多的論文都可以直接下載。

下面幾篇paper有異曲同工之妙,開(kāi)啟了anchor-based和anchor-free的輪回。

1. Feature Selective Anchor-Free Module for Single-Shot Object Detection

2. FCOS: Fully Convolutional One-Stage Object Detection

3. FoveaBox: Beyond Anchor-based Object Detector

4. High-level Semantic Feature Detection: A New Perspective for Pedestrian Detection

這幾篇論文不約而同地將矛頭對(duì)準(zhǔn)了Anchor這個(gè)檢測(cè)里面的基礎(chǔ)模塊,采用anchor-free的方法在單階段檢測(cè)器上達(dá)到了和anchor-based方法類似或者更好的效果。

anchor-free和anchor-based區(qū)別

這個(gè)問(wèn)題首先需要回答為什么要有anchor。在深度學(xué)習(xí)時(shí)代,物體檢測(cè)問(wèn)題通常都被建模成對(duì)一些候選區(qū)域進(jìn)行分類和回歸的問(wèn)題。在單階段檢測(cè)器中,這些候選區(qū)域就是通過(guò)滑窗方式產(chǎn)生的anchor;在兩階段檢測(cè)器中,候選區(qū)域是RPN生成的proposal,但是RPN本身仍然是對(duì)滑窗方式產(chǎn)生的anchor進(jìn)行分類和回歸。

而在上面幾篇論文的anchor-free方法中,是通過(guò)另外一種手段來(lái)解決檢測(cè)問(wèn)題的。同樣分為兩個(gè)子問(wèn)題,即確定物體中心和對(duì)四條邊框的預(yù)測(cè)。預(yù)測(cè)物體中心時(shí),具體實(shí)現(xiàn)既可以像1、3那樣定義一個(gè)hard的中心區(qū)域,將中心預(yù)測(cè)融入到類別預(yù)測(cè)的target里面,也可以像2、4那樣預(yù)測(cè)一個(gè)soft的centerness score。對(duì)于四條邊框的預(yù)測(cè),則比較一致,都是預(yù)測(cè)該像素點(diǎn)到ground truth框的四條邊距離,不過(guò)會(huì)使用一些trick來(lái)限制 regress 的范圍。

為什么anchor-free能卷土重來(lái)

anchor-free 的方法能夠在精度上媲美 anchor-based 的方法,最大的功勞我覺(jué)得應(yīng)該歸于 FPN,其次歸于 Focal Loss。(內(nèi)心OS:RetinaNet 賽高)。在每個(gè)位置只預(yù)測(cè)一個(gè)框的情況下,F(xiàn)PN 的結(jié)構(gòu)對(duì)尺度起到了很好的彌補(bǔ),F(xiàn)ocalLoss 則是對(duì)中心區(qū)域的預(yù)測(cè)有很大幫助。當(dāng)然把方法調(diào) work 并不是這么容易的事情,相信有些細(xì)節(jié)會(huì)有很大影響,例如對(duì)重疊區(qū)域的處理,對(duì)回歸范圍的限制,如何將 target assign 給不同的 FPN level,head 是否 share 參數(shù)等等。

anchor-free 和 single anchor

上面提到的 anchor-free 和每個(gè)位置有一個(gè)正方形 anchor 在形式上可以是等價(jià)的,也就是利用 FCN 的結(jié)構(gòu)對(duì) feature map 的每個(gè)位置預(yù)測(cè)一個(gè)框(包括位置和類別)。但 anchor-free 仍然是有意義的,我們也可以稱之為 anchor-prior-free。另外這兩者雖然形式上等價(jià),但是實(shí)際操作中還是有區(qū)別的。在 anchor-based 的方法中,雖然每個(gè)位置可能只有一個(gè) anchor,但預(yù)測(cè)的對(duì)象是基于這個(gè) anchor 來(lái)匹配的,而在 anchor-free 的方法中,通常是基于這個(gè)點(diǎn)來(lái)匹配的。

anchor-free的局限性

雖然上面幾種方法的精度都能夠與 RetinaNet 相媲美,但也沒(méi)有明顯優(yōu)勢(shì)(或許速度上有),離兩階段和級(jí)聯(lián)方法相差仍然較遠(yuǎn)。和 anchor-based 的單階段檢測(cè)器一樣,instance-level 的 feature representation 是不如兩階段檢測(cè)器的,在 head 上面的花樣也會(huì)比較少一些。順便吐槽一下,上面的少數(shù) paper 為了達(dá)到更好看的結(jié)果,在實(shí)驗(yàn)上隱藏了一些細(xì)節(jié)或者有一些不公平的比較。

anchor-free的其他套路

anchor-free 除了上面說(shuō)的分別確定中心點(diǎn)和邊框之外,還有另一種 bottom-up 的套路,以 CornerNet 為代表。如果說(shuō)上面的 anchor-free 的方法還殘存著區(qū)域分類回歸的思想的話,這種套路已經(jīng)跳出了這個(gè)思路,轉(zhuǎn)而解決關(guān)鍵點(diǎn)定位組合的問(wèn)題。

這里就不詳細(xì)討論每一篇論文的方法(回復(fù)提供下載鏈接),下面開(kāi)始主要分享一下個(gè)人的想法。

早期探索:

DenseBox: https://arxiv.org/abs/1509.04874

YOLO: https://arxiv.org/abs/1506.02640

基于關(guān)鍵點(diǎn):

CornerNet: https://arxiv.org/abs/1808.01244

ExtremeNet: https://arxiv.org/abs/1901.08043

密集預(yù)測(cè):

FSAF: https://arxiv.org/abs/1903.00621

FCOS: https://arxiv.org/abs/1904.01355

FoveaBox: https://arxiv.org/abs/1904.03797v1

DenseBox:

2.jpg

如上圖所示,單個(gè)FCN同時(shí)產(chǎn)生多個(gè)預(yù)測(cè)bbox和置信分?jǐn)?shù)的輸出。測(cè)試時(shí),整個(gè)系統(tǒng)將圖片作為輸入,輸出5個(gè)通道的feature map。每個(gè)pixel的輸出feature map得到5維的向量,包括一個(gè)置信分?jǐn)?shù)和bbox邊界到該pixel距離的4個(gè)值。最后輸出feature map的每個(gè)pixel轉(zhuǎn)化為帶分?jǐn)?shù)的bbox,然后經(jīng)過(guò)NMS后處理。除了NMS之外,檢測(cè)系統(tǒng)的所有組成部分都構(gòu)建在FCN之中。

網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示,基于VGG19進(jìn)行的改進(jìn),整個(gè)網(wǎng)絡(luò)包含16層卷積,前12層由VGG19初始化,輸出conv4_4后接4個(gè)1x1的卷積,前兩個(gè)卷積產(chǎn)生1-channel map用于類別分?jǐn)?shù),后兩個(gè)產(chǎn)生4-channel map用于預(yù)測(cè)相對(duì)位置。最后一個(gè)1x1的卷積擔(dān)當(dāng)這全連接層的作用。

3.png

Refine with Landmark Localization

在DenseBox中由于是全卷積網(wǎng)絡(luò),因此,基于landmark定位可以通過(guò)簡(jiǎn)單添加一些層來(lái)進(jìn)行實(shí)現(xiàn)。通過(guò)融合landmark heatmaps及目標(biāo)score maps來(lái)對(duì)檢測(cè)結(jié)果進(jìn)行增強(qiáng)。如下圖所示,增加了一個(gè)分支用于landmark定位,假設(shè)存在N個(gè)landmarks,landmark 定位分支將會(huì)輸出N個(gè)響應(yīng)maps,其中,每個(gè)像素值代表該位置為landmark的置信分?jǐn)?shù)。該任務(wù)的ground truth maps與檢測(cè)的十分相似,對(duì)于一個(gè)landmark 實(shí)例4.png,landmark k的第i個(gè)實(shí)例,其對(duì)應(yīng)的ground truth 是位于輸出坐標(biāo)空間中第k個(gè)響應(yīng) map上的positive 標(biāo)記的區(qū)域。半徑rl應(yīng)當(dāng)較小從而避免準(zhǔn)確率的損失。與分類任務(wù)相似,landmark 定位損失也是定義為預(yù)測(cè)值與真實(shí)值的L2損失。同樣使用negative mining及ignore region。

5.png

YOLOv1:

YOLO意思是You Only Look Once,創(chuàng)造性的將候選區(qū)和對(duì)象識(shí)別這兩個(gè)階段合二為一,看一眼圖片(不用看兩眼哦)就能知道有哪些對(duì)象以及它們的位置。

實(shí)際上,YOLO并沒(méi)有真正去掉候選區(qū),而是采用了預(yù)定義的候選區(qū)(準(zhǔn)確點(diǎn)說(shuō)應(yīng)該是預(yù)測(cè)區(qū),因?yàn)椴⒉皇荈aster RCNN所采用的Anchor)。也就是將圖片劃分為 7*7=49 個(gè)網(wǎng)格(grid),每個(gè)網(wǎng)格允許預(yù)測(cè)出2個(gè)邊框(bounding box,包含某個(gè)對(duì)象的矩形框),總共 49*2=98 個(gè)bounding box??梢岳斫鉃?8個(gè)候選區(qū),它們很粗略的覆蓋了圖片的整個(gè)區(qū)域。

RCNN:我們先來(lái)研究一下圖片,嗯,這些位置很可能存在一些對(duì)象,你們對(duì)這些位置再檢測(cè)一下看到底是哪些對(duì)象在里面。

YOLO:我們把圖片大致分成98個(gè)區(qū)域,每個(gè)區(qū)域看下有沒(méi)有對(duì)象存在,以及具體位置在哪里。

RCNN:你這么簡(jiǎn)單粗暴真的沒(méi)問(wèn)題嗎?

YOLO:當(dāng)然沒(méi)有......咳,其實(shí)是有一點(diǎn)點(diǎn)問(wèn)題的,準(zhǔn)確率要低一點(diǎn),但是我非???!快!快!

RCNN:為什么你用那么粗略的候選區(qū),最后也能得到還不錯(cuò)的bounding box呢?

YOLO:你不是用過(guò)邊框回歸嗎?我拿來(lái)用用怎么不行了。

1)結(jié)構(gòu)

去掉候選區(qū)這個(gè)步驟以后,YOLO的結(jié)構(gòu)非常簡(jiǎn)單,就是單純的卷積、池化最后加了兩層全連接。單看網(wǎng)絡(luò)結(jié)構(gòu)的話,和普通的CNN對(duì)象分類網(wǎng)絡(luò)幾乎沒(méi)有本質(zhì)的區(qū)別,最大的差異是最后輸出層用線性函數(shù)做激活函數(shù),因?yàn)樾枰A(yù)測(cè)bounding box的位置(數(shù)值型),而不僅僅是對(duì)象的概率。所以粗略來(lái)說(shuō),YOLO的整個(gè)結(jié)構(gòu)就是輸入圖片經(jīng)過(guò)神經(jīng)網(wǎng)絡(luò)的變換得到一個(gè)輸出的張量,如下圖所示。

6.jpg

因?yàn)橹皇且恍┏R?guī)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),所以,理解YOLO的設(shè)計(jì)的時(shí)候,重要的是理解輸入和輸出的映射關(guān)系.

2)輸入和輸出的映射關(guān)系

7.jpg

3)輸入

參考圖5,輸入就是原始圖像,唯一的要求是縮放到448*448的大小。主要是因?yàn)閅OLO的網(wǎng)絡(luò)中,卷積層最后接了兩個(gè)全連接層,全連接層是要求固定大小的向量作為輸入,所以倒推回去也就要求原始圖像有固定的尺寸。那么YOLO設(shè)計(jì)的尺寸就是448*448。

4)輸出

輸出是一個(gè) 7*7*30 的張量(tensor)。

4.1)7*7網(wǎng)格

根據(jù)YOLO的設(shè)計(jì),輸入圖像被劃分為 7*7 的網(wǎng)格(grid),輸出張量中的 7*7 就對(duì)應(yīng)著輸入圖像的 7*7 網(wǎng)格。或者我們把 7*7*30 的張量看作 7*7=49個(gè)30維的向量,也就是輸入圖像中的每個(gè)網(wǎng)格對(duì)應(yīng)輸出一個(gè)30維的向量。參考上面圖5,比如輸入圖像左上角的網(wǎng)格對(duì)應(yīng)到輸出張量中左上角的向量。

要注意的是,并不是說(shuō)僅僅網(wǎng)格內(nèi)的信息被映射到一個(gè)30維向量。經(jīng)過(guò)神經(jīng)網(wǎng)絡(luò)對(duì)輸入圖像信息的提取和變換,網(wǎng)格周邊的信息也會(huì)被識(shí)別和整理,最后編碼到那個(gè)30維向量中。

4.2)30維向量

具體來(lái)看每個(gè)網(wǎng)格對(duì)應(yīng)的30維向量中包含了哪些信息。

8.jpg

① 20個(gè)對(duì)象分類的概率

9.png

10.png


綜合來(lái)說(shuō),一個(gè)bounding box的置信度Confidence意味著它 是否包含對(duì)象且位置準(zhǔn)確的程度。置信度高表示這里存在一個(gè)對(duì)象且位置比較準(zhǔn)確,置信度低表示可能沒(méi)有對(duì)象 或者 即便有對(duì)象也存在較大的位置偏差。

簡(jiǎn)單解釋一下IOU。下圖來(lái)自Andrew Ng的深度學(xué)習(xí)課程,IOU=交集部分面積/并集部分面積,2個(gè)box完全重合時(shí)IOU=1,不相交時(shí)IOU=0。

11.jpg

總的來(lái)說(shuō),30維向量 = 20個(gè)對(duì)象的概率 + 2個(gè)bounding box * 4個(gè)坐標(biāo) + 2個(gè)bounding box的置信度

*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。

LCD顯示屏相關(guān)文章:lcd顯示屏原理


lcd相關(guān)文章:lcd原理


關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉