Anchor-free目標檢測綜述 -- Dense Prediction篇

曉飛的演算法工程筆記發表於2022-02-24

  早期目標檢測研究以anchor-based為主,設定初始anchor,預測anchor的修正值,分為two-stage目標檢測與one-stage目標檢測,分別以Faster R-CNN和SSD作為代表。後來,有研究者覺得初始anchor的設定對準確率的影響很大,而且很難找到完美的預設anchor,於是開始不斷得研究anchor-free目標檢測演算法,意在去掉預設anchor的環節,讓網路自行學習anchor的位置與形狀,在速度和準確率上面都有很不錯的表現。anchor-free目標檢測演算法分為兩種,一種是DenseBox為代表的Dense Prediction型別,密集地預測的框的相對位置,另一種則是以CornerNet為代表的Keypoint-bsaed Detection型別,以檢測目標關鍵點為主。
  本文主要列舉幾種Dense Prediction型別的網路,主要涉及以下網路:

YOLO


  YOLOv1是早期的anchor-free演算法,後來的系列則轉型成anchor-based演算法。YOLO同時對多個物體進行分類和定位,沒有proposal的概念,是one-stage實時檢測網路的里程碑,標準版在TitanX達到45 fps,快速版達到150fps,但精度不及當時的SOTA網路。

  將輸入分為$S\times S$的格子,如果GT的中心點在格子中,則格子負責該GT的預測:

  • 每個格子預測$B$個bbox,每個bbox預測5個值: $x,y,w,h$和置信度,分別為中心點座標和bbox的寬高,中心點座標是格子邊的相對值,寬高則是整圖的相對值。置信度可以反應格子是否包含物體以及包含物體的概率,定義為${\Pr}(Object)*IOU_{pred}^{truth}$,無物體則為0,有則為IOU
  • 每個格子預測$C$個類的條件概率$\Pr(Class_i|Object)$,注意這裡按格子進行預測,沒有按bbox進行預測

DenseBox


  DenseBox是早期的Anchor-free目標檢測演算法,當時R-CNN系列在小物體的檢測上有明顯的瓶頸,所以作者提出DenseBox,在小物體的檢測也有不錯的表現。在DenseBox提出的早些時間,著名的Faster R-CNN出現了,其強大的效能主導了目標檢測演算法往anchor-based的方向發展。直到FPN的出現,Anchor-free演算法的效能才有了很大的提升,更多的工作開始涉及Anchor-free領域。目前很多Anchor-free目標檢測研究都有DenseBox的影子,所以DenseBox的設計思路還是很超前的。

  DenseBox的整體設計如圖1所示,單個卷積網路同時輸出多個預測框及其類別置信度,輸出的特徵圖大小為$5\times \frac{m}{4}\times \frac{n}{4}$。假設畫素$i$位於$(x_i, y_i)$,其期望的5維向量為$\hat{t}_i={\hat{s}, \hat{dx^t}=x_i - x_t, \hat{dy^t}=y_i - y_t, \hat{dx^b}=x_i - x_b, \hat{dy^b}=y_i - y_b }$,第一個為分類置信度,後四個為畫素位置到目標邊界的距離,最後,將所有畫素的輸出轉化為預測框,經過NMS處理後進行最後的輸出。

Guided Anchoring


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

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

FSAF


  目標檢測的首要問題就是尺寸變化,許多演算法使用FPN以及anchor box來解決此問題。在正樣本判斷上面,一般先根據目標的尺寸決定預測用的FPN層,越大的目標則使用更高的FPN層,然後根據目標與anchor box的IoU進一步判斷,但這樣的設計會帶來兩個限制:拍腦袋式的特徵選擇以及基於IoU的anchor取樣。

  為了解決上述的問題,FSAF(feature selective anchor-free)在每輪迭代中選擇最優的層進行訓練優化。如圖3所示,FSAF為FPN每層新增anchor-free分支,包含分類與迴歸,在訓練時,根據anchor-free分支的預測結果選擇最合適的FPN層用於訓練,最終的網路輸出可同時綜合FSAF的anchor-free分支結果以及原網路的預測結果。

FCOS


  論文提出anchor-free和proposal-free的one-stage的目標檢測演算法FCOS,不再需要anchor相關的的超引數,在目前流行的逐畫素(per-pixel)預測方法上進行目標檢測。從實驗結果來看,FCOS能夠與主流的檢測演算法相比較,達到SOTA,為後面的大熱的anchor-free方法提供了很好的參考。

  目標檢測由於anchor的存在,不能進行純逐畫素地快速預測,於是FCOS拋棄anchor,提出逐畫素全卷積目標檢測網路網路,總結如下:

  • 效仿前期的FCNs-based網路,如DenseBox,每個畫素迴歸一個4D向量指代預測框相對於當前畫素位置的偏移,如圖1左
  • 為了預測不同尺寸的目標,DenseBox會縮放或剪裁生成影像金字塔進行預測,而且當目標重疊時,會出現畫素不知道負責預測哪個目標的問題,如圖1右。在對問題進行研究後,論文發現使用FPN能解決以上問題
  • 由於預測的結果會產生許多低質量的預測結果,論文采用center-ness分支來預測當前畫素與對應目標中心點的偏離情況,用來去除低質量預測結果以及進行NMS

FoveaBox


  FoveaBox同時預測每個有效位置為目標中心的可能性及其對應目標的尺寸,輸出類別置信度以及用以轉化目標區域的尺寸資訊。作為與FCOS和FSAF同期的Anchor-free論文,FoveaBox在整體結構上也是基於DenseBox加FPN的策略,主要差別在於FoveaBox只使用目標中心區域進行預測且迴歸預測的是歸一化後的偏移值,還有根據目標尺寸選擇FPN的多層進行訓練。由於FoveaBox的整體實現方案太純粹了,與其它Anchor-free方法很像,所以一直投稿到現在才中了,作者也是相當不容易。

SAPD


  Anchor-free檢測方法分為anchor-point類別和key-point類別兩種,anchor-point類別雖然更快更靈活,但準確率一般比key-point類別要低,所以論文著力於研究阻礙anchor-point類別準確率的因素,提出了SAPD(Soft Anchor-Point Detecto)。

  SAPD的核心如圖3所示,分別為Soft-Weighted Anchor Points以及Soft-Selected Pyramid Levels:

  • Soft-weighted anchor points。anchor-point演算法在訓練時一般將滿足幾何關係的點設定為正樣本點,其損失值權重均為1,這造成定位較不準確的點偶爾分類置信度更高。實際上,不同位置的點的迴歸難度是不一樣的,越靠近目標邊緣的點的損失值權重應該越低,讓網路集中於優質anchor point的學習。
  • Soft-selectedpyramid levels。anchor-point演算法每輪訓練會選擇特徵金字塔的其中一層特徵進行訓練,其它層均忽略,這在一定程度上造成了浪費。因為其他層雖然響應不如被選擇的層強,但其特徵分佈應該與被選擇層是類似的,所以可以賦予多層不同權重同時訓練。

ATSS


  在仔細比對了anchor-based和anchor-free目標檢測方法後,結合實驗結果,論文認為兩者的效能差異主要來源於正負樣本的定義,假如訓練過程中使用相同的正負樣本,兩者的最終效能將會相差無幾,於是論文提出ATSS( Adaptive Training Sample Selection)方法。

  ATSS能夠自動根據與GT的相關統計特徵選擇合適的anchor box作為正樣本進行訓練,在不帶來額外計算量和引數的情況下,能夠大幅提升模型的效能,十分有用。

FCOSv2


  圖2為FCOSv2中的主幹網路結構,主幹網路依然採用FPN,每層特徵使用共同的head預測類別資訊、尺寸資訊以及Center-ness,整體思想基本與FCOS一致。對FCOS的小修小改,最終效能達到了50.4AP,可謂相當強勁了,在工程上可以參考其中的改進以及提升方法。

DDBNet


  作者認為當前anchor-free方法存在兩個問題,中心關鍵點與目標的語義不一致以及區域性特徵的迴歸有侷限性。為了解決上述兩個問題,作者提出了十分大膽的方法DDBNet。

  DDBNet包含box分解/組合模組以及語義一致模組,分別用於解決中心關鍵點的迴歸不准問題以及中心關鍵點與目標的語義不一致問題,結果如圖2中的實線框。論文的主要貢獻如下:

  • 基於anchor-free架構提出新的目標檢測演算法DDBNet,能夠很好地解決中心關鍵點的迴歸問題以及中心關鍵點的語義一致性。
  • 驗證了中心關鍵點和GT的語義一致性,能夠幫助提升目標檢測網路的收斂性。
  • DDBNet能夠達到SOTA精度(45.5%),並且能夠高效地擴充到其它anchor-free檢測器中。




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

work-life balance.

相關文章