論文筆記:FCOS: Fully Convolutional One-Stage Object Detection

一、基本信息

標題:FCOS: Fully Convolutional One-Stage Object Detection
時間:2019
論文領域:目標檢測、深度學習
引用格式:Tian Z, Shen C, Chen H, et al. Fcos: Fully convolutional one-stage object detection[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 9627-9636.

二、研究背景

RetinaNet, SSD,YOLOv3, Faster R-CNN 依賴預定義的錨框,FCOS沒有依賴這種機制。除了不需要計算錨框重疊外,還能避免敏感的超參數。僅需要最後使用NMS處理,且整體更簡單。

基於錨的檢測器有一些缺點:

  • 檢測性能對錨框的大小、長寬比和數量非常敏感
  • 預定義的錨定框還會影響檢測器的泛化能力
  • 太多錨框且絕大多數是負樣本,導致訓練時正負樣本不平衡
  • 錨框涉及複雜計算IoU

相關工作

  • Anchor-based Detectors
    基於滑動窗檢測器的思想:
    Faster R-CNN, Faster R-CNN, SSD,YOLOv2
  • Anchor-free Detectors
    YOLOv1預測bbox,只有靠近中心的點被使用但是recall太低
    CornerNet檢測bbox的一對角,分組,形成最終檢測到的bbox。CornerNet需要更復雜的後處理來對屬於同一實例的角進行分組。爲了分組需要學習額外的距離度量。
    DenseBox難以處理重疊bbox,召回率較低。

三、創新點

  • 基於FCN,類似語義分割,逐個像素點預測
  • 不需要錨框,較少參數,訓練時更簡單
  • 不需要計算IOU
  • 比基於錨框的RPN表現更好
  • 可以快速應用在其他視覺任務上

Fully Convolutional OneStage Object Detector

在這裏插入圖片描述
如上圖左,一個像素屬於多個框時,取最小的
迴歸目標計算公式如下:
l=xx0(i),t=yy0(i)r=x1(i)x,b=y1(i)y\begin{array}{l} l^{*}=x-x_{0}^{(i)}, t^{*}=y-y_{0}^{(i)} \\ r^{*}=x_{1}^{(i)}-x, \quad b^{*}=y_{1}^{(i)}-y \end{array}
那麼4維向量t=(l,t,r,b)\boldsymbol{t}=(l, t, r, b)
p是80維分類標籤
損失函數
L({px,y},{tx,y})=1Nposx,yLcls(px,y,cx,y)+λNposx,y1{cx,y>0}Lreg(tx,y,tx,y)\begin{aligned} L\left(\left\{\boldsymbol{p}_{x, y}\right\},\left\{\boldsymbol{t}_{x, y}\right\}\right) &=\frac{1}{N_{\mathrm{pos}}} \sum_{x, y} L_{\mathrm{cls}}\left(\boldsymbol{p}_{x, y}, c_{x, y}^{*}\right) \\ &+\frac{\lambda}{N_{\mathrm{pos}}} \sum_{x, y} \mathbb{1}_{\left\{c_{x, y}^{*}>0\right\}} L_{\mathrm{reg}}\left(\boldsymbol{t}_{x, y}, \boldsymbol{t}_{x, y}^{*}\right) \end{aligned}

LclsL_{\mathrm{cls}}是焦點的損失,用於計算類別
LregL_{\mathrm{reg}}是IOU損失,用於計算BBox
Npos N_{\text {pos }}是正樣本點數目
1{ci>0}\mathbb{1}\left\{c_{i}^{*}>0\right\}是類別指示函數

實驗中將p>0.05的作爲正樣本,使用公式1進行邊界框預測
在這裏插入圖片描述
Multilevel Prediction with FPN for FCOS
解決2個問題:

  • 大步長(16* 16)導致較低BPR,對於FCOS,不可能因爲大的步伐導致對象沒有在最終特徵地圖編中召回一個。BPR不是FCOS主要的問題。而且通過FPN特徵金字塔網絡可以達到基於錨的最大上限。
  • 通過FPN,預測不同尺度下特徵圖。主幹CNNs網絡的特徵層 C3、C4、C5經過一個1*1的卷積得到P3,P4,P5。P6,P7在P5、P6基礎上進行步長爲2的卷積(降採樣),最終對這五個尺度都做逐像素迴歸。mi<max(l,t,r,b)mi1m_{i}<\max \left(l^{*}, t^{*}, r^{*}, b^{*}\right)m_{i-1}限定特定層檢測特定大小的物體(由於大部分重疊發生在尺寸相差較大的物體之間,因此多尺度預測可以在很大程度上緩解目標框重疊情況下的預測性能)

最後提到共享head在不同特徵層等級,改進性能。使用exp(six)\exp \left(s_{i} x\right),其中sis_i能夠通自動調整不同層級特徵的指數函數的基數,這從經驗上提高了檢測性能。

Centerness for FCOS
在這裏插入圖片描述

使用了FPN的FCOS仍然與機遇錨的檢測器有差距,主要是因爲大量低質量的預測BBox遠離了實物中心。提出簡單有效centernes:

 centerness =min(l,r)max(l,r)×min(t,b)max(t,b)\text { centerness }^{*}=\sqrt{\frac{\min \left(l^{*}, r^{*}\right)}{\max \left(l^{*}, r^{*}\right)} \times \frac{\min \left(t^{*}, b^{*}\right)}{\max \left(t^{*}, b^{*}\right)}}
遠離中心的min/max分數更小,所以把這項加入到前面提到的損失中,最後後這些盒子經過NMS會被抑制掉,提高檢測性能。

如上圖3,隨着位置偏離物體中心,中心度從1衰減到0。測試時,將網絡預測的中心度與分類分數相乘,可以對遠離物體中心的位置預測的質量較差的邊界盒進行減重。

四、實驗結果

主幹網絡使用ResNet-50和RetinaNet同樣的超參數。

BPR(best possible recall)對比:
在這裏插入圖片描述
和最好的RetinaNet相差一點點,對於IOU>=0.4的RetinaNet則提示很多。

FPN對比:
在這裏插入圖片描述
有效降低ambiguous區域/樣本。

各層對比:
在這裏插入圖片描述
直接使用FCOS可以達到比RetinaNet更好的AP和AR

center-ness對比
在這裏插入圖片描述
FCOS vs. Anchor-based Detectors
在這裏插入圖片描述

在這裏插入圖片描述

五、結論與思考

作者結論

我們已經提出了一個無錨和無建議的onestage探測器FCOS。實驗表明,FCOS比流行的基於錨的onestage檢測器(包括RetinaNet、YOLO和SSD)更好,但設計複雜度低得多。FCOS完全避免了所有與錨盒相關的計算和超參數,以逐像素預測的方式解決了目標檢測問題,類似於語義分割等稠密預測任務。在單級探測器中,FCOS也達到了最先進的性能。我們還表明,FCOS可以作爲快速R-CNN的兩級檢測器的rpn,並在很大程度上優於其rpn。鑑於其有效性和效率,我們希望FCOS能夠成爲目前主流的基於錨點的探測器的一種強大而簡單的替代方案。我們也相信FCOS可以擴展到解決許多其他的實例級識別任務。

總結

思考

參考

FCOS:Fully Convolutional One-Stage Object Detection--------論文理解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章