FCOS : 找到訣竅了,anchor-free的one-stage目標檢測算法也能夠很準 | ICCV 2019

論文提出anchor-free和proposal-free的one-stage的目標檢測算法FCOS,再也不須要anchor相關的的超參數,在目前流行的逐像素(per-pixel)預測方法上進行目標檢測,根據實驗結果來看,FCOS可以與主流的檢測算法相比較,達到SOTA,爲後面的大熱的anchor-free方法提供了很好的參考

來源:【曉飛的算法工程筆記】 公衆號算法

論文: FCOS: Fully Convolutional One-Stage Object Detection微信

Introduction


  大多目標檢測網絡都是anchor-based,雖然anchor能帶來很大的準確率提高,但也會帶來一些缺點:網絡

  • 準確率對anchor的尺寸、長寬比和數量較爲敏感,這些超參都會人工細調
  • anchor的尺寸和長寬是固定的,若是目標的相關屬性相差較大,會比較難預測
  • 爲了高召回,一般會使用密集的anchor佈滿輸入,大多爲負樣本,致使訓練不平衡
  • anchor須要如IOU的複雜計算

  近期,FCNs在各視覺任務中都有不錯的表現,但目標檢測因爲anchor的存在,不能進行純逐像素預測,因而論文拋棄anchor,提出逐像素全卷積目標檢測網絡FCOS網絡,總結以下:app

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

Our Approach


Fully Convolutional One-Stage Object Detector

  讓$F_i\in \mathbb{R}^{H\times W\times C}$爲層$i$的特徵圖,$s$爲層的總stride,輸入的GT爲${B_i}$,$B_i=(x_0{(i)},y_0{(i)},x_1{(i)},y_1{(i)},c^{(i)})\in \mathbb{R}^4\times {1,2...C }$分別爲box的左上角和右下角座標以及類別,$C$爲類別數。特徵圖$F_i$的每一個位置$(x,y)$,能夠經過$(\lfloor\frac{s}{2}\rfloor + xs, \lfloor\frac{s}{2}\rfloor + ys)$映射回原圖,FCOS直接預測相對於當前像素的box位置,而不是anchor的那樣將像素做爲中心再回歸ide

  當像素$(x,y)$落在GT中則認爲是正樣本,將類別$c*$設置爲目標類別,不然設置爲0。除了類別,還有4D向量$t=(l*,t,r*,b*)$做爲迴歸目標,分別爲box的四條邊與像素的距離。當像素落在多個GT中時,直接選擇區域最小的做爲迴歸目標。相對於anchor-based的IOU判斷,FCOS能生成更多的正樣原本訓練迴歸器性能

  • Network Outputs

  網絡最終輸出80D分類標籤向量$p$和4D box座標向量$t=(l,t,r,b)$,訓練$C$個二分類器而不是多分類器,在最後特徵後面分別接4個卷積層用於分類和定位分支,在定位分支使用$exp(x)$保證結果爲正,總體輸出比anchor-based少9x倍測試

  • Loss Function

  $L_{cls}$爲focal loss,$L_{reg}$爲UnitBox中的IOU loss,$N_{pos}$爲正樣本數,$\lambda$爲平衡權重,公式2計算特徵圖上的全部結果blog

  • Inference

  對於輸入圖片,推理獲得特徵圖$F_i$的分類分數$p_{x,y}$以及迴歸預測$t_{x,y}$,而後取$p_{x,y}>0.05$的做爲正樣本,公共公式1獲得預測框位置圖片

Multi-level Prediction with FPN for FCOS

  下面講下FCOS如何使用FPN來解決以前提到的問題:ci

  • 因爲large stride,一般最後的特徵圖都會面臨較低的最大可能召回(best possible recall, BPR)問題。在anchor based detector中,能夠經過下降IOU閾值來彌補,而實驗發現,FCN-based的FCOS自己就能在large stride狀況下還有更好的BPR,加上FPN,BPR則會更高
  • 目標框重疊會致使難解的歧義,例如不知道像素對應哪一個迴歸目標,論文使用多層預測來解決這個問題,甚至FCN-based效果比anchor-based要好

  如圖2,FPN使用${P_3,P_4,P_5,P_6,P_7 }$層特徵,其中$P_3$、$P_4$和$P_5$分別經過$C_3$、$C_4$和$C_5$的$1\times 1$卷積以及top-down connection生成,$P_6$和$P_7$則是分別經過$P_5$和$P_6$進行stride爲2的$1\times1$卷積生成,各特徵的stride分別爲8,16,32,64和128
  anchor-based方法對不一樣的層使用不一樣的大小,論文則直接限制每層的bbox迴歸範圍。首先計算$l*$,$t$,$r*$和$b$,若是知足$max(l*,t,r8,b)>m_i$或$max(l*,t,r8,b)<m_{i-1}$,則設爲負樣本,不須要進行bbox迴歸。$m$爲層$i$的最大回歸距離,$m_2$,$m_3$,$m_4$,$m_5$,$m_6$和$m_7$分別爲0,64,128,256,512和$\infty$。若是在這樣設置下,像素仍存在歧義,則選擇區域最小的做爲迴歸目標,從實驗來看,這樣設定的結果很好
  最後,不一樣層間共享head,不只減小參數,還能提升準確率。而因爲不一樣的層負責不一樣的尺寸,因此不該該使用相同的head,所以,論文將$exp(x)$改成$exp(s_ix)$,添加可訓練的標量$s_i$來自動調整不一樣層的指數基底

Center-ness for FCOS

  使用FPN後,FCOS與anchor-based detector仍然存在差距,主要來源於低質量的預測box,這些box的大多由距離目標中心點至關遠的像素產生。所以,論文提出新的獨立分支來預測像素的center-ness,用來評估像素與目標中心點的距離

  center-ness的gt計算如公式3,取值$(0,1]$,使用二值交叉熵進行訓練。在測試時,最終的分數是將分類分數與center-ness進行加權,低質量的box分數會下降,最後可能經過NMS進行過濾

  center-ness的另外一種形式是在訓練時僅用目標框的中心區域像素做爲正樣本,這會帶來額外的超參數,目前已經驗證性能會更好

Experiments


Ablation Study

  • Multi-level Prediction with FPN

  best possible recall(BPR)定義爲檢測器可以迴歸的gt比例,若是gt被賦予某個預測結果,即爲可以迴歸。從表1看來,不用FPN的FCOS直接有95.55%,而anchor-based的經典實現只有86.82%,加上FPN後就提升到98.40%

  在原始FCOS中,正樣本中歧義目標的比例爲23.16%,使用FPN後可以下降到7.14%。這裏論文提到,同類別目標的歧義是不要緊的,由於無論預測爲哪一個目標,都是正確的,預測漏的目標能夠由其它更靠近他的像素來預測。因此,只考慮不一樣類別的歧義比例大概爲17.84%,使用FPN後可降爲3.75%。而在最終結果中,僅2.3%的框來自於歧義像素,考慮不一樣類別的歧義,則僅有1.5%的,因此歧義不是FCN-based FCOS的問題

  • With or Without Center-ness

  center-ness分支可以將AP從33.5%升爲37.1%,比直接從迴歸結果中計算的方式要好

  • FCOS vs. Anchor-based Detectors

  相對於RetinaNet,以前FCOS使用了分組卷積(GN)和使用$P_5$來產生$P_6$和$P_7$,爲了對比,去掉以上的改進進行實驗,發現準確率依舊比anchor-based要好

  • Comparison with State-of-the-art Detectors

Extensions on Region Proposal Networks


  將anchor-based的RPNs with FPN替換成FCOS,可以顯著提升$AR{100}$和$AR{1k}$

Class-agnostic Precision-recall Curves


Visualization for Center-ness


CONCLUSION


  論文提出anchor-free和proposal-free的one-stage的目標檢測算法FCOS,再也不須要anchor相關的的超參數,在目前流行的逐像素(per-pixel)預測方法上進行目標檢測,根據實驗結果來看,FCOS可以與主流的檢測算法相比較,達到SOTA,爲後面的大熱的anchor-free方法提供了很好的參考



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

work-life balance.

相關文章
相關標籤/搜索