FCOS: Fully Convolutional One-Stage Object Detection

長頸鹿大俠發表於2020-08-12

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

 

 

0.簡介

摘要:

  • one-stage;44.7% in AP with single-model and single-scale testing
  • solve object detection in a per-pixel prediction fashion
  • anchor-free
  • simple。所有anchor相關的超參沒有了;不用通過計算IOU來決定誰是能參與訓練與預測的positive sample。(當然,選出的高分positive樣本,在訓練時,還是要和ground truth計算IOU的)

 

作者點名叫板FasterRCNN, SSD, YOLO這些anchor-based模型,指出如下存在的問題:

  1. 模型效果對anchor的超參敏感。如每個點對應的anchor數量、大小、比例。
  2. 儘管anchor設定了幾個大小、比例,但這些尺寸仍然是固定的。無法處理尺度跨度較大的目標們。
  3. 正負樣本不平衡。每張圖有180K個anchor-boxes,但大部分都是負樣本。
  4. 決定哪些是正樣本來參與訓練與預測,也需要如IOU這樣很大 的運算量。

並呼籲整個領域一起思考,所謂的目標檢測正規化——anchor,真的是必需的嗎?

 

作者稱自己新的框架有如下優勢:

  1. 現在目標檢測和其他任務結合了。可以複用其他領域(語義分割)關於FCN的idea。
  2. 減少了設計的引數。
  3. 避免計算了IOU來決定誰是能參與訓練與預測的positive sample。效率高。
  4. FOCS也可以被當作一個RPN,用到two-stage檢測器中。比anchor-based的RPN更好用。

 

1.網路結構

FCOS

ResNet+FPN網路,後接幾個分支,其中一個是分類,分類採用的C個分類器二分類,這些都不用多說,重點是Regression和Center-ness分支。Regression預測不是anchor-box/proposed-rigon的調整了,而是直接預測feature-map上一點所屬於某一目標的框的大小(l, t , r ,b)。Center-ness是為了減少一些低質量的點預測出的目標框,每個點預測出一個(0,1)的係數,它描述的是此點與預測出的框的中心的舉例。最終給預測框排序是按Center-ness與分類得分乘積的結果來排。

 

2.框迴歸——直接、自由

regression

作者捨棄anchor-based的方法,迴歸階段不是預測anchor-box/proposed-rigon的調整,直接預測一個物體的大小、比例,完全自由,輸出結果(l, t, r ,b)——此點到物體框的左、上、右、下距離,就確定了整個物體框的大小、比例,而點也不是在框的正中心了。如果一個位置的點,落在了多個bounding box裡,就產生了歧義,作者直接規定選擇最小面積的那個作為他的迴歸目標(這裡說的應該是多尺寸網路的問題吧,指特徵圖上一個點在不同尺度分支裡預測了多個物體,返回到原圖正好是一個點,那麼在原圖中選擇要區域小的那個)。

 

3.Center-ness

center-ness

在FOCS中用了多尺度預測後,發現具體那些anchor-based演算法還有不小差距。作者觀察到是因為是由於很多距離物體中心很遠的location點預測出了質量很低的bounding box。於是在網路中加入center-ness ,來抑制這些點。

與分類分支平行的地方加入center-ness分支(在COCO資料集上,如果加在與regression平行的地方會得到更好的AP,但本文預設前者設計,正如第一節中的網路結構圖),對於feature map上的每個點,此分支輸出一個(0,1)的數值,它描述的是此點舉例它負責的物體的框的中心的距離(注意因為在FCOS中,position點已經不是物體框正中心了嘛。),在測試階段,選擇positiive的bounding box所根據的final score排序,來源於center-ness×分類得分。(訓練階段應該是沒有這樣操作一下,只是把這部分算了一下BCE-loss加在總的loss裡了)最後NMS得出最終檢測結果。

center-ness-math

相關文章