您好,登錄后才能下訂單哦!
如何進行目標檢測中Anchor的本質分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
導讀
下面以人臉識別為例解釋了目標檢測中Anchor的本質,也就是多尺度的滑動窗口。通過與傳統的detection的做法進行比較凸顯Anchor的優點,文末還附有Retina-Face的代碼鏈接以及相關論文。在object detection的一些非常有名的model上面,有一個最開始非常難以理解的概念----Anchor。這個Anchor在Faster RCNN上面也叫reference boxes,也就是參考框。參考框的意思肯定是會帶來先驗的知識。首先考慮目標檢測的任務,輸入圖片,輸出的是包含目標類別的矩形框(Bounding Boxes)具體可以看下圖:
那么一個比較核心的問題,就是這個框的形狀和大小,對應的就是在各種anchor-based的文章里面提的非常多的ratio和scale。ratio很簡單,就是長寬之比(1:1,1:2, 2:1....),scale可以理解為邊長。那為什么會有Anchor這種東西?其起到的作用是什么?其實Anchor的本質就是多尺度的滑動窗口(sliding window in multi-scale)。好像現在還沒有人這樣去理解他,下面具體來分析。
首先看下傳統的detection是怎么做的,比如haar、hog特征的人臉、行人、車輛檢測。這些方法是在CNN-based之前的主流方法,只不過后來被CNN打敗。其具體的流程如下:
1.生成圖像金字塔,因為待檢測的物體的scale是變化的
2.用滑動窗口在圖片金字塔上面滾動生成很多候選區域(如下面動圖所示)
3.各種特征提取(hog)和分類器(svm)來對上面產生的候選區域中的圖片信息來分類(比如:是否為人臉)
4.NMS非極大值抑制得到最后的結果
那么CNN以其強大的特征提取能力,自然而然的可以替代步驟3。但是由于步驟1和2的存在是獨立于CNN之外,而且需要大量的循環遍歷,速度受到了限制。而且要想好的定位精度,必須有比較多的scale和ratio不同的滑窗,這樣又增加了時間。那么在深度學習中,我們總是在講end2end,那么怎么把1/2步驟融合進去?其實在窗口滑動的時候,本質是一個遍歷像素的過程,那么我們可以直接為每個像素分配幾個不同scale和ratio的窗口矩形,這些矩形的中心都是其所屬的像素點。至于scale和ratio的選取,可以根據一些先驗知識或者像YOLO-v2一樣通過k-means聚類得到。然后每個像素分配幾個不同scale和ratio的窗口矩形就是Anchor。其實本質就是把基于像素遍歷的一個過程直接分配到每個像素來做,然后CNN是可以直接做基于像素的一個Dense Map的預測的。下面可視化一下Anchor(這里只可視化了200個):
可以看出200個anchor已經基本上覆蓋了整個圖片了,一般的網絡模型的anchor都是在幾萬個左右,比如Retina-Face的anchor在25000左右。那么我們回到步驟3. 現在就是要用CNN來給這么多個Anchor來分類了,比如是否為人臉。
那么怎么判斷這些anchor的分類就比較簡單了,就是看這些anchor與給定的矩形框的iou是否滿足條件,比如iou>0.5認為是Postive,<0.2認為是Negtive。iou的計算也很簡單,如下:
那么我們實際看一張人臉圖片中,Postive anchor的可視化情況:
可以看出這些綠色的anchor都是基本上大部分包含了人臉的,是Postive的樣本。可以看出這樣cnn現在對于分類的基本上沒有問題,但是在定位上面會有較大的誤差。所以后續還有基于anchor的bbox的坐標的預測,其實本質也是增加CNN的輸出的depth,來預測4個值(x, y, w, h)的offset。這個可以詳細看下YOLO系列或者Faster RCNN。那么現在anchor的機制本質上,就是一堆變scale和ratio的滑動窗口,只不過通過CNN的Dense Map Prediction的方式整個嵌入到一個end2end的框架里面了。
其實最重要的核心還是弄懂CNN網絡的輸入與輸出的shape
輸入是圖片、輸出的是一個表示各個anchor的classification和localization的預測值
針對人臉檢測來看,比如假設有N個anchor,那么輸出的shape應該是N*(2 + 4),其中2表示分類的預測,是否為人臉,4表示(x,y,w,h)相對于anchor的offset的預測。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。