溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行目標(biāo)檢測中Anchor的本質(zhì)分析

發(fā)布時(shí)間:2021-12-29 13:45:57 來源:億速云 閱讀:142 作者:柒染 欄目:大數(shù)據(jù)

如何進(jìn)行目標(biāo)檢測中Anchor的本質(zhì)分析,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

導(dǎo)讀

 下面以人臉識(shí)別為例解釋了目標(biāo)檢測中Anchor的本質(zhì),也就是多尺度的滑動(dòng)窗口。通過與傳統(tǒng)的detection的做法進(jìn)行比較凸顯Anchor的優(yōu)點(diǎn),文末還附有Retina-Face的代碼鏈接以及相關(guān)論文。

在object detection的一些非常有名的model上面,有一個(gè)最開始非常難以理解的概念----Anchor。這個(gè)Anchor在Faster RCNN上面也叫reference boxes,也就是參考框。參考框的意思肯定是會(huì)帶來先驗(yàn)的知識(shí)。首先考慮目標(biāo)檢測的任務(wù),輸入圖片,輸出的是包含目標(biāo)類別的矩形框(Bounding Boxes)具體可以看下圖:

如何進(jìn)行目標(biāo)檢測中Anchor的本質(zhì)分析  

那么一個(gè)比較核心的問題,就是這個(gè)框的形狀和大小,對(duì)應(yīng)的就是在各種anchor-based的文章里面提的非常多的ratio和scale。ratio很簡單,就是長寬之比(1:1,1:2, 2:1....),scale可以理解為邊長。那為什么會(huì)有Anchor這種東西?其起到的作用是什么?其實(shí)Anchor的本質(zhì)就是多尺度的滑動(dòng)窗口(sliding window in multi-scale)。好像現(xiàn)在還沒有人這樣去理解他,下面具體來分析。

首先看下傳統(tǒng)的detection是怎么做的,比如haar、hog特征的人臉、行人、車輛檢測。這些方法是在CNN-based之前的主流方法,只不過后來被CNN打敗。其具體的流程如下:

1.生成圖像金字塔,因?yàn)榇龣z測的物體的scale是變化的

如何進(jìn)行目標(biāo)檢測中Anchor的本質(zhì)分析

2.用滑動(dòng)窗口在圖片金字塔上面滾動(dòng)生成很多候選區(qū)域(如下面動(dòng)圖所示)

如何進(jìn)行目標(biāo)檢測中Anchor的本質(zhì)分析  

3.各種特征提?。╤og)和分類器(svm)來對(duì)上面產(chǎn)生的候選區(qū)域中的圖片信息來分類(比如:是否為人臉)

4.NMS非極大值抑制得到最后的結(jié)果

如何進(jìn)行目標(biāo)檢測中Anchor的本質(zhì)分析

那么CNN以其強(qiáng)大的特征提取能力,自然而然的可以替代步驟3。但是由于步驟1和2的存在是獨(dú)立于CNN之外,而且需要大量的循環(huán)遍歷,速度受到了限制。而且要想好的定位精度,必須有比較多的scale和ratio不同的滑窗,這樣又增加了時(shí)間。那么在深度學(xué)習(xí)中,我們總是在講end2end,那么怎么把1/2步驟融合進(jìn)去?其實(shí)在窗口滑動(dòng)的時(shí)候,本質(zhì)是一個(gè)遍歷像素的過程,那么我們可以直接為每個(gè)像素分配幾個(gè)不同scale和ratio的窗口矩形,這些矩形的中心都是其所屬的像素點(diǎn)。至于scale和ratio的選取,可以根據(jù)一些先驗(yàn)知識(shí)或者像YOLO-v2一樣通過k-means聚類得到。然后每個(gè)像素分配幾個(gè)不同scale和ratio的窗口矩形就是Anchor。其實(shí)本質(zhì)就是把基于像素遍歷的一個(gè)過程直接分配到每個(gè)像素來做,然后CNN是可以直接做基于像素的一個(gè)Dense Map的預(yù)測的。下面可視化一下Anchor(這里只可視化了200個(gè)):

如何進(jìn)行目標(biāo)檢測中Anchor的本質(zhì)分析  

可以看出200個(gè)anchor已經(jīng)基本上覆蓋了整個(gè)圖片了,一般的網(wǎng)絡(luò)模型的anchor都是在幾萬個(gè)左右,比如Retina-Face的anchor在25000左右。那么我們回到步驟3. 現(xiàn)在就是要用CNN來給這么多個(gè)Anchor來分類了,比如是否為人臉。

那么怎么判斷這些anchor的分類就比較簡單了,就是看這些anchor與給定的矩形框的iou是否滿足條件,比如iou>0.5認(rèn)為是Postive,<0.2認(rèn)為是Negtive。iou的計(jì)算也很簡單,如下:

如何進(jìn)行目標(biāo)檢測中Anchor的本質(zhì)分析  

那么我們實(shí)際看一張人臉圖片中,Postive anchor的可視化情況:

如何進(jìn)行目標(biāo)檢測中Anchor的本質(zhì)分析

可以看出這些綠色的anchor都是基本上大部分包含了人臉的,是Postive的樣本??梢钥闯鲞@樣cnn現(xiàn)在對(duì)于分類的基本上沒有問題,但是在定位上面會(huì)有較大的誤差。所以后續(xù)還有基于anchor的bbox的坐標(biāo)的預(yù)測,其實(shí)本質(zhì)也是增加CNN的輸出的depth,來預(yù)測4個(gè)值(x, y, w, h)的offset。這個(gè)可以詳細(xì)看下YOLO系列或者Faster RCNN。那么現(xiàn)在anchor的機(jī)制本質(zhì)上,就是一堆變scale和ratio的滑動(dòng)窗口,只不過通過CNN的Dense Map Prediction的方式整個(gè)嵌入到一個(gè)end2end的框架里面了。

其實(shí)最重要的核心還是弄懂CNN網(wǎng)絡(luò)的輸入與輸出的shape

輸入是圖片、輸出的是一個(gè)表示各個(gè)anchor的classification和localization的預(yù)測值

針對(duì)人臉檢測來看,比如假設(shè)有N個(gè)anchor,那么輸出的shape應(yīng)該是N*(2 + 4),其中2表示分類的預(yù)測,是否為人臉,4表示(x,y,w,h)相對(duì)于anchor的offset的預(yù)測。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI