FCOS (ICCV2019)

總結:

1. 相當於換了一種形式的anchor, 多層預測, 每層預測指定的尺寸, 然後使用si(也沒有講這個是怎麼來的)來平衡尺寸基數.

2. 主要困難點在於目標之間overlap的處理 和 尺寸不變形問題, 可以說兩者都是通過FPN處理的,

前者假設多數overlap的目標都是尺寸差距較大的, 後者通過每層限定迴歸範圍以及設置si來平衡.

3. ICCV2019的, 整篇讀下來很順暢, 看有人要拿來做一階段實例分割, 有點意思.

 

介紹

基於anchor的幾個缺點:

1. faster rcnn的性能受anchor的sizes, aspect ratios 和數量影響. RetinaNet僅僅改變這些參數就使得性能提升4%.

2. 固定的比例和尺寸不利於多樣的目標檢測, 尤其是小目標.

3. anchor數量太多, 另外過多的anchor還會導致正負比例失衡

4.過多的anchor也增加了IOU計算時的時間和內存成本

 

論文方法

3.1 Fully convolutional one-stage object detector

對於每一層特徵層, 有兩個分支, 一個分支負責每個點的分類: C個通道(80 of COCO), 一個分支負責預測當前點距離box上下左右的距離, 對於重疊區域(如下圖右面)的處理方式, 學習的目標是貪心的選擇最小範圍, (那麼類別應該回歸什麼呢?? 應該是多個類別同時迴歸嗎??)具體處理在後面會介紹.

 

損失函數如下:

 

3.2 Multi-level prediction with FPN for fcos:

FCOS網絡的兩個可能問題:

1. 具有較大stride的深層特徵圖結果有一個比較低的recall. 對於基於anchor的detectors. 可以降低判定爲正anchor box需要的IoU分數來提高recall. 但是FCOS並不存在由於步幅較大而最終特徵圖上沒有位置的對象的召回率低的問題.

2. 當存在覆蓋的問題時, 對於當前特徵點, 應該對哪個目標進行迴歸?

針對覆蓋問題, 一個方法可以很大的緩解這個問題, 就是用多層預測不同大小的目標, 這裏使用了5層, 只要兩個覆蓋的目標有較大的尺寸差異, 就可以在迴歸的時候只回歸在指定範圍內的.(作者說多數存在覆蓋的目標尺寸差距也比較大, 就好比人手裏拿着球拍, 存在覆蓋, 但是不同層迴歸就沒事了)

基於anchor 的方案是在不同深度的特徵圖分配不同大小的特徵圖. 這裏直接限制邊界框迴歸的範圍: 顯示計算在gt box內的特徵點的(l, t, r, b) 只要這四個值得最大值在指定範圍內, 就可以迴歸.

還有就是面對不同的特徵層使用相同級別(exp(x))迴歸是不合理的,最終使用一個帶有可訓練的標量si對於第i層特徵圖, 使用exp(si * x)來調整當前層的基數, 最終改善性能.(其實這裏不用anchor肯定存在尺度不變形問題, 說白了用si就是達到尺度不變性的目標)

 

3.3 Center-ness for FCOS

經過上面的一堆操作, 發現還是有問題, 主要是由於很多遠離邊界框中心點的特徵點預測出了很多低質量的框. 本篇的mvp操作來了:

在分類這個分支的head再插入一個分支"center-ness", 差不多的意思就是定位在box內的點距離中心點的距離來得分, 具體計算方式如下:

 

可以算出, 距離中心點越近, 這個值越接近1, 越偏越小

然後使用BCE損失函數. 把這個損失加入之前那個損失函數.

然後再推理階段把個分數當做NMS的分數. 就可以有效排除那些遠離邊界框中心點的特徵點的預測結果.

 

實驗結果:

 

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