目標檢測之AnchorBox詳解

2021-10-10 05:55:00 字數 3054 閱讀 2040

anchor在計算機視覺中稱為描點或者描框,在目標檢測中,作為描框anchor box應用於各個目標檢測的網路模型中,也稱為先驗框。

來歷,及應用場景:

anchor最新在faster rcnn被提出及應用,後被yolov2借鑑,及應用與yolo之後的各個版本。之後的各個目標檢測框架都基本採用anchor box進行目標檢測。

那麼就要說到,為什麼要提出anchorbox。那就要追根到之前的目標框的選擇方式。

在fast rcnn中,要提取2000個候選框,通過selective search和edgeboxes等方法,然後對這個2000個候選框再進行判斷及nms等操作,最後篩選出最終的方框。然而,這部分工作存在時間瓶頸,而且每個特徵都可能被重複多次計算,於是faster rcnn採用rpn網路,引入anchor box,通過網路去獲取候選框,從而大大減少了時間開銷。anchorbox的原理是基於sppnet,每個特徵點都可以對映到原的相對應的畫素點。

而對於yolo系列,原本是通過直接**座標從而得出候選框,再faster rcnn採用anchor box之後,yolov2發現使用anchor box可以簡化問題,從而使網路模型更容易學習,於是,yolo也從此應用上了anchorbox

關於anchor box的相關問題

1.faster rcnn及yolo中,anchorbox到真實框的轉換公式

很多人都了解faster rcnn及yolo,也都知道他們都使用了anchor box,然而,卻不知道他們的anchor box的區別。

(1).faster rcnn:

gx = aw * dx + ax

gy = ah * dy + ay

gw = aw * exp(dw)

gh = ah * exp(dh)

其中g代表的是真實框,a代表的是先驗框anchorbox,d代表的是**的輸出值

其中ax,ay為anchorbox的中心點座標,aw,ah為anchorbox在對應原圖的相對寬高。

(2).yolo:

bx = sigmoid(tx) + cx

by = sigmoid(ty) + cy

bw = pw * exp(tw)

bh = ph * exp(th)

其中b代表的是真實框,而cx,cy是grid cell在feature map中的左上角座標,而pw,ph同faster rcnn一致,都為相對原圖的box寬高。

值得注意的是,faster rcnn和yolo在求中心點座標的時候存在差異,因為ax,ay對應的是anchorbox的中心點座標,所以要通過求偏移量aw*dw來對中心點進行校正,因為存在向左或向右偏移,所以偏移量存在正負。而yolo中cx,cy為左上角座標,所以實際中心點座標相對於grid左上角座標,只存在向下及向右偏移,所以採用了sigmoid,將偏移量限定在0-1之間。

2.為什麼faster rcnn的中心點座標偏移量採用aw*dw?

為什麼要乘以anchorbox的aw,而不直接**出偏移量呢?乙個合理的解釋如下:

對於兩個不同尺度的同個物體,cnn提取的特徵y是一致的,假設求邊框回歸的函式對映為f,即f(y)是一致的,這代表了求出來的中心點座標的偏移量也一致,但從上圖可知,大尺寸的座標偏移量會偏大點,所以,要乘以anchorbox的寬高,進行規格化處理。

3.為什麼求寬高時要採用exp函式

其原因有如下兩點

(1).因為寬高都為正數,所以要限制為大於0,所以採用exp函式

(2).因為將尺度縮放至對數空間,可以減小訓練過程中不穩定的梯度變化。

4.訓練過程中,ground truth要與哪個anchor box進行配對。

每個grid cell存在多個anchors box,那麼要與哪個anchor box進行配對呢。在yolo訓練過程中,會通過groud truth的中心點座標將其分配到某個grid cell中,再與當前的grid cell中anchor box進行一一配對,選取iou最大的作為最終配對,正樣本,而剩下的anchor box不進行配對。而現在其他模型,為了提高召回率及平衡正負樣本的比例分布,往往取iou大於某個閾值,比如0.5的均做為正樣本,而在某個範圍內,比如0.4-0.5之間的,作為中立樣本,而低於某個閾值的,比如0.4的,作為負樣本,然後,負樣本會以loss進行倒敘排序,取出前正樣本數*3的負樣本數進行訓練。

5.anchor box的尺寸設定

在大多數目標檢測網路,如faster rcnn,在選取anchor box的尺寸上為人工設定,而對於yolo系列,從yolov2版本使用anchor box開始,便是使用k-mean聚類,通過訓練集,從資料集中獲取anchor box。

6.anchor box的生成

有兩種生成方法:

第一種,有兩個引數,第乙個是scales = [128,256,512],第二個是ratios = [0.5,1,2].

scales代表的是anchor box在輸入的box大小,即面積為scales^2的box。

ratios代表在面積恆定的條件下,對寬高進行縮放,使寬高比例為ratios的box。

第二種,有三個引數,第乙個是base_size = 16,第二個是anchor_scales = [8,16,32],第三個事anchor_ratios = [0.5,1,2]

base_size代表的是特徵層乙個畫素點對應輸入原的大小,因為縮小了16倍,所以特徵輸出層的乙個畫素點的感受野為原的16*16。

anchor_scales是將base_size*anchor_scales 即得到最終的anchor box的大小,即16*[8,16,32] = [128,256,512]

anchor_ratios與第一種方法的含義相同。

值得注意的是,我們提到的anchor box的大小,都是指對應在原輸入的大小,而非輸出特徵層。

scale的邊框大小也是指原輸入的大小,而非輸出特徵層。

目標檢測之Selective Search原理簡述

目標檢測物體的候選框是如何產生的?如今深度學習火熱的今天,rcnn spp net fast rcnn等文章都會談及bounding boxes 候選邊界框 的生成與篩選策略。那麼候選框是如何產生,又是如何進行篩選的呢?其實物體候選框獲取當前主要使用影象分割與區域生長技術。區域生長 合併 主要由於檢...

目標檢測之SSD

ssd single shot multibox detector 翻譯 詳解 圖1 圖2 演算法步驟 1 輸入一幅 300x300 將其輸入到預訓練好的分類網路中來獲得不同大小的特徵對映,修改了傳統的vgg16網路 2 抽取conv4 3 conv7 conv8 2 conv9 2 conv10 ...

目標檢測之 IoU

iou 作為目標檢測演算法效能 map 計算的乙個非常重要的函式 但縱觀 iou 計算的介紹知識,都是直接給出 給出計算方法,沒有人徹底地分析過其中的邏輯,故本人書寫該篇部落格來介紹下其中的邏輯。iou 的全稱為交並比 intersection over union 通過這個名稱我們大概可以猜到 i...