論文提出anchor-free和proposal-free的one-stage的目標(biāo)檢測算法FCOS,不再需要anchor相關(guān)的的超參數(shù),在目前流行的逐像素(per-pixel)預(yù)測方法上進行目標(biāo)檢測,根據(jù)實驗結(jié)果來看,F(xiàn)COS能夠與主流的檢測算法相比較,達到SOTA,為后面的大熱的anchor-free方法提供了很好的參考
?
來源:【曉飛的算法工程筆記】 公眾號
論文: FCOS: Fully Convolutional One-Stage Object Detection

Introduction
? 大多目標(biāo)檢測網(wǎng)絡(luò)都是anchor-based,雖然anchor能帶來很大的準(zhǔn)確率提升,但也會帶來一些缺點:
- 準(zhǔn)確率對anchor的尺寸、長寬比和數(shù)量較為敏感,這些超參都會人工細調(diào)
- anchor的尺寸和長寬是固定的,如果目標(biāo)的相關(guān)屬性相差較大,會比較難預(yù)測
- 為了高召回,通常會使用密集的anchor布滿輸入,大多為負樣本,導(dǎo)致訓(xùn)練不平衡
- anchor需要如IOU的復(fù)雜計算

? 近期,F(xiàn)CNs在各視覺任務(wù)中都有不錯的表現(xiàn),但目標(biāo)檢測由于anchor的存在,不能進行純逐像素預(yù)測,于是論文拋棄anchor,提出逐像素全卷積目標(biāo)檢測網(wǎng)絡(luò)FCOS網(wǎng)絡(luò),總結(jié)如下:
- 效仿前期的FCNs-based網(wǎng)絡(luò),如DenseBox,每個像素回歸一個4D向量指代預(yù)測框相對于當(dāng)前像素位置的偏移,如圖1左
- 為了預(yù)測不同尺寸的目標(biāo),DenseBox會縮放或剪裁生成圖像金字塔進行預(yù)測,而且當(dāng)目標(biāo)重疊時,會出現(xiàn)像素不知道負責(zé)預(yù)測哪個目標(biāo)的問題,如圖1右。在對問題進行研究后,論文發(fā)現(xiàn)使用FPN能解決以上問題,后面會細講
- 由于預(yù)測的結(jié)果會產(chǎn)生許多低質(zhì)量的預(yù)測結(jié)果,論文采用center-ness分支來預(yù)測當(dāng)前像素與對應(yīng)目標(biāo)中心點的偏離情況,用來去除低質(zhì)量預(yù)測結(jié)果以及進行NMS
Our Approach

Fully Convolutional One-Stage Object Detector
? 讓為層
的特征圖,
為層的總stride,輸入的GT為
,
分別為box的左上角和右下角坐標(biāo)以及類別,
為類別數(shù)。特征圖
的每個位置
,可以通過
映射回原圖,F(xiàn)COS直接預(yù)測相對于當(dāng)前像素的box位置,而不是anchor的那樣將像素作為中心再回歸

? 當(dāng)像素落在GT中則認為是正樣本,將類別
設(shè)置為目標(biāo)類別,否則設(shè)置為0。除了類別,還有4D向量
作為回歸目標(biāo),分別為box的四條邊與像素的距離。當(dāng)像素落在多個GT中時,直接選擇區(qū)域最小的作為回歸目標(biāo)。相對于anchor-based的IOU判斷,F(xiàn)COS能生成更多的正樣本來訓(xùn)練回歸器
-
Network Outputs
? 網(wǎng)絡(luò)最終輸出80D分類標(biāo)簽向量和4D box坐標(biāo)向量
,訓(xùn)練
個二分類器而不是多分類器,在最后特征后面分別接4個卷積層用于分類和定位分支,在定位分支使用
保證結(jié)果為正,整體輸出比anchor-based少9x倍
-
Loss Function

? 為focal loss,
為UnitBox中的IOU loss,
為正樣本數(shù),
為平衡權(quán)重,公式2計算特征圖上的所有結(jié)果
-
Inference
? 對于輸入圖片,推理得到特征圖的分類分數(shù)
以及回歸預(yù)測
,然后取
的作為正樣本,公共公式1得到預(yù)測框位置
Multi-level Prediction with FPN for FCOS
? 下面講下FCOS如何使用FPN來解決之前提到的問題:
- 由于large stride,通常最后的特征圖都會面臨較低的最大可能召回(best possible recall, BPR)問題。在anchor based detector中,可以通過降低IOU閾值來彌補,而實驗發(fā)現(xiàn),F(xiàn)CN-based的FCOS本身就能在large stride情況下還有更好的BPR,加上FPN,BPR則會更高
- 目標(biāo)框重疊會導(dǎo)致難解的歧義,例如不知道像素對應(yīng)哪個回歸目標(biāo),論文使用多層預(yù)測來解決這個問題,甚至FCN-based效果比anchor-based要好
? 如圖2,F(xiàn)PN使用層特征,其中
、
和
分別通過
、
和
的
卷積以及top-down connection生成,
和
則是分別通過
和
進行stride為2的
卷積生成,各特征的stride分別為8,16,32,64和128
? anchor-based方法對不同的層使用不同的大小,論文則直接限制每層的bbox回歸范圍。首先計算,
,
和
,如果滿足
或
,則設(shè)為負樣本,不需要進行bbox回歸。
為層
的最大回歸距離,
,
,
,
,
和
分別為0,64,128,256,512和
。如果在這樣設(shè)置下,像素仍存在歧義,則選擇區(qū)域最小的作為回歸目標(biāo),從實驗來看,這樣設(shè)定的結(jié)果很好
? 最后,不同層間共享head,不僅減少參數(shù),還能提高準(zhǔn)確率。而由于不同的層負責(zé)不同的尺寸,所以不應(yīng)該使用相同的head,因此,論文將改為
,添加可訓(xùn)練的標(biāo)量
來自動調(diào)整不同層的指數(shù)基底
Center-ness for FCOS

? 使用FPN后,F(xiàn)COS與anchor-based detector仍然存在差距,主要來源于低質(zhì)量的預(yù)測box,這些box的大多由距離目標(biāo)中心點相當(dāng)遠的像素產(chǎn)生。因此,論文提出新的獨立分支來預(yù)測像素的center-ness,用來評估像素與目標(biāo)中心點的距離

? center-ness的gt計算如公式3,取值,使用二值交叉熵進行訓(xùn)練。在測試時,最終的分數(shù)是將分類分數(shù)與center-ness進行加權(quán),低質(zhì)量的box分數(shù)會降低,最后可能通過NMS進行過濾

? center-ness的另一種形式是在訓(xùn)練時僅用目標(biāo)框的中心區(qū)域像素作為正樣本,這會帶來額外的超參數(shù),目前已經(jīng)驗證性能會更好
Experiments
Ablation Study
-
Multi-level Prediction with FPN

? best possible recall(BPR)定義為檢測器能夠回歸的gt比例,如果gt被賦予某個預(yù)測結(jié)果,即為能夠回歸。從表1看來,不用FPN的FCOS直接有95.55%,而anchor-based的經(jīng)典實現(xiàn)只有86.82%,加上FPN后就提高到98.40%

? 在原始FCOS中,正樣本中歧義目標(biāo)的比例為23.16%,使用FPN后能夠降低到7.14%。這里論文提到,同類別目標(biāo)的歧義是沒關(guān)系的,因為不管預(yù)測為哪個目標(biāo),都是正確的,預(yù)測漏的目標(biāo)可以由其它更靠近他的像素來預(yù)測。所以,只考慮不同類別的歧義比例大概為17.84%,使用FPN后可降為3.75%。而在最終結(jié)果中,僅2.3%的框來自于歧義像素,考慮不同類別的歧義,則僅有1.5%的,所以歧義不是FCN-based FCOS的問題
-
With or Without Center-ness

? center-ness分支能夠?qū)P從33.5%升為37.1%,比直接從回歸結(jié)果中計算的方式要好
-
FCOS vs. Anchor-based Detectors

? 相對于RetinaNet,之前FCOS使用了分組卷積(GN)和使用來產(chǎn)生
和
,為了對比,去掉以上的改進進行實驗,發(fā)現(xiàn)準(zhǔn)確率依舊比anchor-based要好
-
Comparison with State-of-the-art Detectors

Extensions on Region Proposal Networks

? 將anchor-based的RPNs with FPN替換成FCOS,能夠顯著提高和
Class-agnostic Precision-recall Curves

Visualization for Center-ness

CONCLUSION
? 論文提出anchor-free和proposal-free的one-stage的目標(biāo)檢測算法FCOS,不再需要anchor相關(guān)的的超參數(shù),在目前流行的逐像素(per-pixel)預(yù)測方法上進行目標(biāo)檢測,根據(jù)實驗結(jié)果來看,F(xiàn)COS能夠與主流的檢測算法相比較,達到SOTA,為后面的大熱的anchor-free方法提供了很好的參考
?
?
?
如果本文對你有幫助,麻煩點個贊或在看唄~
更多內(nèi)容請關(guān)注 微信公眾號【曉飛的算法工程筆記】
