Anchor free Detector:FCOS

文章鏈接:FCOS: Fully Convolutional One-Stage Object Detection

github地址:https://github.com/tianzhi0549/FCOS

1.網絡整體介紹

本文提出了一種全卷積one-stage目標檢測算法(FCOS),以逐像素預測的方式解決目標檢測問題,類似於語義分割。目前最流行的不論是one-stage目標檢測算法,如RetinaNet,SSD,YOLOv3,還是two-stage目標檢測算法,如Faster R-CNN。這兩類算法大都依賴於預定義的錨框(anchor boxes)。相比之下,本文提出的目標檢測算法FCOS不需要錨框。通過消除預定義的錨框,FCOS避免了與錨框相關的複雜計算,例如在訓練期間計算重疊等,並且顯著減少了訓練內存。更重要的是,FCOS還避免了設定與錨框相關的所有超參數,這些參數通常對最終檢測性能非常敏感。FCOS算法憑藉唯一的後處理:非極大值抑制(NMS),實現了優於以前基於錨框的one-stage檢測算法的效果。

其實最著名的無anchor的目標檢測網絡是YOLOv1算法,YOLOv1算法純粹是爲了告訴大家,迴歸網絡也可以進行目標檢測,該網絡由於其召回率過低而使其並無太多實用價值,因此YOLO作者在其基礎上提出了基於anchor的YOLOv2算法。而本文提出的FCOS算法相當於保留了無anchor機制,並且引入了逐像素迴歸預測,多尺度特徵以及center-ness三種策略,主要流程框架如下圖所示,最終實現了在無anchor的情況下效果能夠比肩各類主流基於anchor的目標檢測算法。

2.逐像素迴歸預測

YOLOv1中也使用了無anchor策略,但基於YOLOv1在預測邊界框的過程中,提出的cell概念,導致YOLOv1只預測了目標物體中心點附近的點的邊界框。這很顯然預測的框少,召回率自然也就低了。基於此,本文提出的FCOS算法爲了提升召回率,則對目標物體框中的所有點都進行邊界框預測。當然這種逐像素的邊界框預測肯定會導致最終預測得到的邊界框質量不高,因此作者在後續還會提出彌補策略。
FCOS目標檢測算法在邊界框預測中使用的策略和YOLOv1有所不同,本文提出的預測策略如下:

如上兩張圖所示,FCOS算法在對目標物體框中所有的點進行目標框迴歸時,是用的距離各個邊的長度的(left,top,right,bottom)。之所以使用這種策略,而不使用主流目標檢測算法的策略,其主要原因是爲了後續使用center-ness做準備的。

由於FCOS算法是基於目標物體框中的點進行逐像素迴歸的,因此執行迴歸的目標都是正樣本,所以作者使用了exp()函數將回歸目標進行拉伸,我個人認爲此操作是爲了最終的特徵空間更大,辨識度更強。

最後,逐像素迴歸預測除了能夠帶來更多的框以外,更重要的是利用了儘可能多的前景樣本來訓練迴歸器,而傳統的基於anchor的檢測器,只考慮具有足夠高的IOU的anchor box作爲正樣本。作者認爲,這可能是FCOS優於基於anchor的同類檢測器的原因之一。

3. 多尺度策略

對於基於anchor的檢測算法,由於較大的降採樣操作而導致的低召回率可以通過降低正anchor所需的IOU閾值做一定程度上的補償,進行召回率的提升。然而對於FCOS算法,如果降採樣的尺度過大,那麼網絡不可能回憶起一個在最終特徵圖上沒有位置編碼的對象的初始框的,基於此作者提出了基於FPN的多尺度策略。(雖然作者在文中說,即使沒有FPN策略,逐像素檢測網絡在召回率上表現的也不遜色基於anchor的網絡。)

如上圖所示,FCOS算法那使用了{P3, P4, P5, P6, P7}這五個尺度的特徵映射。其中P3、P4、P5由主幹CNNs網絡的特徵層 C3、C4、C5經過一個1*1的卷積得到的,而,P6、P7則是接着P5進行了步長爲2的卷積操作得到的(相當於降採樣,看註解)。最終對這五個尺度都做逐像素迴歸。
當然,本文爲了能夠更好的利用這種多尺度特徵,在每一個尺度的特徵層都限定了邊界框迴歸的範圍,不讓其野蠻生長。(基於anchor的檢測網絡也有類似策略,比如YOLOv3中將不同大小的anchor分配到不同特徵層級中作迴歸)更具體地說,作者首先計算所有特徵層上每個位置的迴歸目標

第一:計算當前層級中的迴歸目標:l、t、r、b。
第二:判斷max(l, t, r, b) > mi 或者 max(l, t, r, b) < mi -1是否滿足。
第三:若滿足,則不對此邊界框進行迴歸預測。
第四:mi是作爲當前尺度特徵層的最大回歸距離。

而且這種約束帶來的額外的效果在於,由於不同尺寸的物體被分配到不同的特徵層進行迴歸,又由於大部分重疊發生在尺寸相差較大的物體之間,因此多尺度預測可以在很大程度上緩解目標框重疊情況下的預測性能。

Note: 由於作者認爲,不同的特徵層需要回歸不同的尺寸範圍(例如,P3的尺寸範圍爲[0,64],P4的尺寸範圍爲[64,128],因此在不同的特徵層使用相同的輸出激活是不合理的。因此,作者沒有使用標準的exp(x)函數,而是使用exp(si,x)其中si是一個可訓練的標量si,能夠通過si來自動調整不同層級特徵的指數函數的基數,這從經驗上提高了檢測性能。

4.center-ness

由於FCOS算法使用了逐像素迴歸策略,在提升召回率的同時,會產生許多低質量的中心點偏移較多的預測邊界框。基於此,作者提出了一個簡單而有效的策略center-ness來抑制這些低質量檢測到的邊界框,且該策略不引入任何超參數。

在這裏插入圖片描述

如上圖所示,center-ness策略在每一個層級預測中添加了一個分支,該分支與分類並行,相當於給網絡添加了一個損失,而該損失保證了預測的邊界框儘可能的靠近中心。該損失的公式如下,其中l,r,t,b表示的爲如下圖左圖中所示的預測值。
在這裏插入圖片描述
紅色、藍色和其他顏色分別表示1,0和它們之間的值。center-ness由上式計算,當位置偏離物體中心時,中心度從1衰減到0。在測試時,將網絡預測的中心度與分類分數相乘,這樣就可以降低遠離物體中心位置預測的低質量邊界框的權重。
在這裏插入圖片描述
而該策略之所以能夠有效,主要是在訓練的過程中我們會約束上述公式中的值,使得其接近於0,這就導致如下圖右圖中的藍色框中的短邊能夠向黃邊靠近,使得分佈在目標位置邊緣的低質量框能夠儘可能的靠近中心。這樣的話,在最終使用該網絡的過程中,非極大值抑制(NMS)就可以濾除這些低質量的邊界框,提高檢測性能。

5.網絡效果

FCOS與其他最先進的two-stage或one-stage目標檢測算法的比較。在相同主幹網絡的情況下,FCOS的性能比基於anchor的RetinaNet高出1.9%。FCOS的性能也優於最近推出的無anchor的one-stage檢測網絡CornerNet,且設計複雜度大大降低。
在這裏插入圖片描述
原文地址:https://blog.csdn.net/qiu931110/article/details/89073244

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