1. 程式人生 > 其它 >Guided Anchoring:線上稀疏anchor生成方案,嵌入即提2AP | CVPR 2019

Guided Anchoring:線上稀疏anchor生成方案,嵌入即提2AP | CVPR 2019

Guided Anchoring通過線上生成anchor的方式解決常規手工預設anchor存在的問題,以及能夠根據生成的anchor自適應特徵,在嵌入方面提供了兩種實施方法,是一個很完整的解決方案

來源:曉飛的演算法工程筆記 公眾號

論文: Region Proposal by Guided Anchoring

Introduction


  Anchor是許多目標檢測演算法中一個很重要的機制,但也會帶來兩個問題:

  • 需要預先設計合適的anchor尺寸和長寬比,如果設計不好,對速度和準確率造成很大影響
  • 為了使anchor達到足夠的召回率,需要在特徵圖上鋪設大量的anchor,不僅引入大量負樣本,還耗費計算量

  為此,論文提出Guided Anchoring來根據圖片特徵線上生成anchor。首先判斷目標可能出現的位置,然後學習不同位置上的目標的形狀,可根據圖片特徵線上學習稀疏的候選anchor。然而,線上生成的anchor形狀各異,固定的感受域可能不匹配其形狀,所以Guided Anchoring根據anchor的形狀進行自適應特徵提取,然後再進行預測框精調與分類。

Guided Anchoring


  Guided Anchoring嘗試線上學習不同形狀的anchor及其位置,得到在特徵圖上不均勻分佈的anchor集合。目標可用四元組$(x,y,w,h)$表示,其位置和形狀可認為是服從影象$I$的一種分佈:

  公式1包含兩部分:1) 給定圖片,目標僅存在於某些區域 2) 形狀與位置緊密相關。

  基於公式1,論文設計了圖1的anchor生成器(Anchor generation),包含位置預測和形狀預測兩個分支。給定圖片$I$,首先得到特徵圖$F_I$,位置預測分支根據$F_I$預測該畫素為目標位置的概率,形狀預測分支則預測畫素位置相關的形狀,基於兩個分支選擇概率高於閾值以及每個位置最合適的anchor,得到最終的anchor集合。由於集合中的anchor形狀可能差異很大,每個位置需要獲取不同大小區域的特徵,論文提出特徵自適應模組(Feature adaption),根據anchor形狀自適應提取特徵。
  上述的生成過程是基於單個特徵的,網路的整體架構包含FPN,所以為每層都配備Guided anchoring模組,模組引數是層間共享的。

Anchor Location Prediction

  位置預測分支預測特徵圖$F_I$的概率圖$p(\cdot|F_I)$,每項$p(i,j|F_I)$為該位置是目標中心的概率,對應的輸入圖片中座標$((i+\frac{1}{2})s, (j+\frac{1}{2})s)$,$s$為特徵圖的stride。
  在實現時,通過子網$\mathcal{N}_L$進行概率圖預測,首先使用$1\times 1$卷積提取主幹網路特徵圖$F_I$的objectness分數,再通過element-wise sigmoid函式轉化概率。更復雜的子網可以帶來更高的準確率,論文采用的是準確率和速度最實惠的結構,最後取高於閾值$\epsilon_L$的畫素位置,能夠保證在高召回的前提下過濾90%的無關區域。

Anchor Shape Prediction

  形狀預測分支的目標是預測每個位置對應目標的最佳形狀$(w,h)$,但由於過大的數值範圍,如果直接預測其具體數字會十分不穩定,所以先進行轉化:

  形狀預測分支輸出$dw$和$dh$,根據公式2轉換出形狀$(w,h)$,$s$為特徵圖的stride,$\sigma=8$為人工設定的縮放因子。這個非線性轉換可將[0, 1000]對映到[-1, 1],更容易學習。在實現時,通過子網$\mathcal{N}_S$進行形狀預測,首先使用$1\times 1$卷積獲得兩維特徵圖,分別對應$dw$和$dh$,然後通過公式2進行轉換。由於每個位置的anchor都是學習來的,與預設的固定anchor對比,這種學習的anchor召回率更高。

Anchor-Guided Feature Adaptation

  常規的預設anchor方法由於各位置的anchor是一樣的,可以對每個位置進行一樣的特徵提取,然後再調整anchor和預測分類。但Guided Anchoring每個位置的anchor各不一樣,理想情況下,較大的anchor需要較大的感受域特徵,反之則需要較小的感受域特徵,所以論文設計了基於anchor形狀的特徵自適應模組(anchor-guided feature adaptation component),根據每個位置的anchor形狀轉換特徵:

  $f_i$為$i$位置的特徵,$(w_i, h_i)$為對應的anchor形狀,$\mathcal{N}_T$為$3\times 3$可變形卷積,變形卷積的偏移值由$1\times 1$卷積將位置預測分支輸出轉換獲得,$f^{'}_i$為自適應特徵,用於後續的anchor調整以及分類預測,具體見圖1。

Training


Joint objective

  網路的整體損失函式由4部分構成,分別是分類損失、迴歸損失、anchor位置損失以及anchor形狀損失:

Anchor location targets

  假設目標$(x_g, y_g, w_g, h_g)$在特徵圖上的對映為$(x^{'}_g, y^{'}_g, w^{'}_g, h^{'}_g)$,定義以下三種區域:

  • 中心區域$CR=\mathcal{R}((x^{'}_g, y^{'}_g, \sigma w^{'}_g, \sigma h^{'}_g))$,區域內均為正樣本點
  • 忽略區域$IR=\mathcal{R}(x^{'}_g, y^{'}_g, \sigma_2 w^{'}_g, \sigma_2 h^{'}_g) $\ $CR$,$\sigma_2 > \sigma$,區域內的均為忽略點,不參與訓練
  • 外部區域OR為非IR和CR的區域,區域內均為負樣本點

  主幹網路使用了FPN,FPN的每層應該只負責特定大小範圍內的目標的訓練。由於相鄰層的特徵相似,所以將IR區域對映到相鄰層,這時的IR區域不考慮CR區域,區域內同樣不參與訓練,如圖2所示。當多個目標重疊時,CR區域優先於IR區域,IR區域優先於OR區域,訓練採用Focal loss。

Anchor shape targets

  首先,定義動態anchor $a_{wh}={(x_0, y_0, w, h)| w> 0, h > 0}$與GT間的最優問題為:

  如果對每個位置都進行公式5的求解,這計算量會相當大,為此,論文用取樣的方法來逼近公式5,取樣的範圍為常見的anchor樣例,比如RetinaNet的9種anchor。對於每個位置,選擇IoU最大的anchor作為公式5的結果。取樣的範圍越大,anchor的生成結果更準,但會帶來更多的額外計算量,anchor的採用smooth-L1訓練:

The Use of High-quality Proposals


  將Guided Anchoring嵌入RPN得到增強型GA-RPN,與原版進行對比,從圖3可以看到:

  • GA-RPN的正樣本數量更多
  • GA-RPN的高IoU候選框數量更多

  從結果來看,GA-RPN的效果比RPN好很多,論文直接將RPN替換GA-RPN僅帶來小於1的AP提升。根據觀察發現,使用高質量候選框的前提是,需要根據候選框的分佈來調整訓練資料的分佈。所以,在使用GA-RPN時,需要設定更高的正負樣本閾值,讓網路更加關注高質量的候選框。另外,論文發現GA-RPN也可以fine-tune的形式boost兩階段檢測器的效能,給定訓練好的檢測模型,將RPN替換為GA-RPN進行幾輪迭代,能帶來不錯的效能提升。

Experiments


  與各種候選框方法進行對比。

  嵌入效果對比。

  fine-tune對比。

Conclusion


  Guided Anchoring通過線上生成anchor的方式解決常規手工預設anchor存在的問題,以及能夠根據生成的anchor自適應特徵,在嵌入方面提供了兩種實施方法,是一個很完整的解決方案。但有個不好的點在於anchor target的生成,為了保證效能弄得不夠完美,希望有人能提出更準確且高效的公式5解決方案。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】