FCOS : 找到訣竅了,anchor-free的one-stage目標(biāo)檢測算法也可以很準(zhǔn) | ICCV 2019

論文提出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

? 讓F_i\in \mathbb{R}^{H\times W\times C}為層i的特征圖,s為層的總stride,輸入的GT為\{B_i\}B_i=(x_0^{(i)},y_0^{(i)},x_1^{(i)},y_1^{(i)},c^{(i)})\in \mathbb{R}^4\times \{1,2...C \}分別為box的左上角和右下角坐標(biāo)以及類別,C為類別數(shù)。特征圖F_i的每個位置(x,y),可以通過(\lfloor\frac{s}{2}\rfloor + xs, \lfloor\frac{s}{2}\rfloor + ys)映射回原圖,F(xiàn)COS直接預(yù)測相對于當(dāng)前像素的box位置,而不是anchor的那樣將像素作為中心再回歸

? 當(dāng)像素(x,y)落在GT中則認為是正樣本,將類別c^*設(shè)置為目標(biāo)類別,否則設(shè)置為0。除了類別,還有4D向量t^*=(l^*,t^*,r^*,b^*)作為回歸目標(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)簽向量p和4D box坐標(biāo)向量t=(l,t,r,b),訓(xùn)練C個二分類器而不是多分類器,在最后特征后面分別接4個卷積層用于分類和定位分支,在定位分支使用exp(x)保證結(jié)果為正,整體輸出比anchor-based少9x倍

  • Loss Function

? L_{cls}為focal loss,L_{reg}為UnitBox中的IOU loss,N_{pos}為正樣本數(shù),\lambda為平衡權(quán)重,公式2計算特征圖上的所有結(jié)果

  • Inference

? 對于輸入圖片,推理得到特征圖F_i的分類分數(shù)p_{x,y}以及回歸預(yù)測t_{x,y},然后取p_{x,y}>0.05的作為正樣本,公共公式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使用\{P_3,P_4,P_5,P_6,P_7 \}層特征,其中P_3、P_4P_5分別通過C_3C_4C_51\times 1卷積以及top-down connection生成,P_6P_7則是分別通過P_5P_6進行stride為2的1\times1卷積生成,各特征的stride分別為8,16,32,64和128
? anchor-based方法對不同的層使用不同的大小,論文則直接限制每層的bbox回歸范圍。首先計算l^*,t^*,r^*b^*,如果滿足max(l^*,t^*,r^*,b^*)>m_imax(l^*,t^*,r^*,b^*)<m_{i-1},則設(shè)為負樣本,不需要進行bbox回歸。m為層i的最大回歸距離,m_2,m_3,m_4,m_5,m_6m_7分別為0,64,128,256,512和\infty。如果在這樣設(shè)置下,像素仍存在歧義,則選擇區(qū)域最小的作為回歸目標(biāo),從實驗來看,這樣設(shè)定的結(jié)果很好
? 最后,不同層間共享head,不僅減少參數(shù),還能提高準(zhǔn)確率。而由于不同的層負責(zé)不同的尺寸,所以不應(yīng)該使用相同的head,因此,論文將exp(x)改為exp(s_ix),添加可訓(xùn)練的標(biāo)量s_i來自動調(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,取值(0,1],使用二值交叉熵進行訓(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)和使用P_5來產(chǎn)生P_6P_7,為了對比,去掉以上的改進進行實驗,發(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,能夠顯著提高AR^{100}AR^{1k}

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)注 微信公眾號【曉飛的算法工程筆記】

work-life balance.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容