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
總結
以上是生活随笔為你收集整理的Anchor free Detector:FCOS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大神手把手教你设计秒杀架构模型
- 下一篇: 美团技术:百亿规模API网关服务Shep