anchor在計算機視覺中有錨點或錨框,目標檢測中常出現的anchor box是錨框,表示固定的參考框。
目標檢測的任務:
在哪里有東西
難點:
目標的類別不確定、數量不確定、位置不確定、尺度不確定
傳統算法的解決方式:
都要金字塔多尺度+遍歷滑窗的方式,逐尺度逐位置判斷"這個尺度的這個位置處有沒有認識的目標",非常笨重耗時,並不能很好的推廣適用。
現狀:
近期頂尖(SOTA)的目標檢測方法幾乎都用了anchor技術
作用:
首先預設一組不同尺度不同位置的固定參考框,覆蓋幾乎所有位置和尺度,每個參考框負責檢測與其交並比大於閾值 (訓練預設值,常用0.5或0.7) 的目標,anchor技術將問題轉換為"這個固定參考框中有沒有認識的目標,目標框偏離參考框多遠",不再需要多尺度遍歷滑窗,真正實現了又好又快,如在Faster R-CNN和SSD兩大主流目標檢測框架及擴展算法中anchor都是重要部分。
舉例:
1.預設anchor

2.識別結果與預設anchor的IOU計算

如按照上圖所示,計算所有紅色與綠色的IOU(交並比),根據閾值來過濾掉我們需要的后,可能如下圖所示:

藍色部分為符合閾值剩余的部分。
當然在實際中存在一些其他的問題來輔助最后的預算,比如非極大值抑制(NMS)來挑選一個置信度最高的相似目標。
注意:
上圖的示例僅僅是一個示例
真實的anchor應該參考如下圖的方式:

b圖中,生成的anchor為:\(8*8*(預設anchor數量)\)
c圖中,生成的anchor為:\(4*4*(預設anchor數量)\)
以上為我根據查找的資料觀摩后的個人理解
並沒有去深究代碼實現和論文
僅供參考
如果理解有誤,希望您能不吝賜教。