【論文筆記】FCOS:Fully Convolutional One-Stage Object Detection


&論文概述

論文題目:FCOS:Fully Convolutional One-Stage Object Detection

作者&出處:Zhi Tian, Chunhua Shen, Hao Chen, Tong He|| The University of Adelaide, Australia

獲取地址:https://arxiv.org/abs/1904.01355

 

&總結與個人觀點

提出anchor-free以及proposal-free的one-stage檢測器FCOS。且FCOS於流行的基於anchor的one-stage檢測器,如RetinaNet,YOLO和SSD有着可媲美的結果,同時有着更低的設計復雜度。FCOS完全避免了於anchor相關的計算以及超參數,以及實現了per-pixel prediction fashion的目標檢測應用,於其他的密集預測任務如語義分割相似。在one-stage檢測器中,FCOS達到了最優的性能。同時在two-stage檢測器中FCOS可以被用作RPN使用。

 

這篇論文提出的FCOS的網絡架構並不新穎,幾乎是FPN的變種,同時center-ness僅相當於一個注意力機制或者說是對loss的加權。容易理解。

 

&貢獻

1) Proposal-free以及anchor-free,減少了參數,避免了與anchor相關的復雜計算如IoU及anhcor與ground truth的匹配,使得速度更快、內存消耗更少、訓練更簡單;

2) 在無額外添加的情況下,在one-stage檢測器中取得最好的結果;可以在two-stage檢測器中將FCOS作為RPNs使用,性能由於原先的RPN模塊。

 

&擬解決的問題

問題:使用anchor出現的問題、將FCN應用到目標檢測中

分析

1) 基於anchor的方法的缺點:

  • 檢測性能與anchor的size、aspect ratios及數量密切相關,因此這些超參數需要根據基於anchor的檢測器細心調節;
  • 即便細心調整,由於尺度、aspect ratios均是固定的,檢測器在處理大的形狀多樣性,尤其是小目標的目標候選時會很困難;同時,預設定的anchor boxes也阻礙了檢測器的泛化性能,在處理不同的目標size和aspect ratio的檢測任務時,需要重新設計;
  • 為了獲得高召回率,基於anchor的檢測器需要在輸入圖片中緊密地放置anchor,而其中大部分為negtive anchor,導致positive anchor與negative anchor間的不平衡;
  • Anchor需要進行復雜的計算,如IoU以及anchor與ground truth的匹配。

2) FCN應用到目標檢測:

基於FCN的框架直接在特征圖的一層中預測4D的向量(到bbox四邊的距離)外加類別,然而,為了解決不同size的bbox,DenseBox裁剪且在統一的尺度上訓練圖片,因此不得不使用圖像金字塔,違背了FCN所有卷積只計算一次的原則。

此外,這些方法大多應用於特殊的目標檢測,如場景文本檢測或人臉檢測,因此,當應用於普通的帶有高度重疊的目標檢測時不會有好的性能。而且高度重疊的目標也會導致intractable ambiguity,即不清楚應當用哪個bbox來對重疊的部分進行回歸。

 

YOLOv1

CornerNet

DenseBox

FCOS

通過目標中心附近的點來預測bbox。只有目標中心附近的點被認為能夠生成更高質量的檢測結果,而導致YOLOv1的低召回率

 

 

FCOS利用真實bbox中的所有點來預測bbox,且低質量的檢測bbox通過“center-ness”分支處理。因此,FCOS能夠有可與基於anchoe的檢測器相比的召回率

 

要求更多復雜的后處理過程來對corners進行分組,為了分組還學習額外的距離度量標准(embedding)

 

 

 

 

由於其在處理遮擋的bbox上的困難以及低recall,不適合用於普通的目標檢測

在使用多層FPN預測時可解決大部分問題

 

3) 方法本身產生的問題:

此方法可能在原理target object的location上生成一些低質量檢測的bbox。

為消除這些低質量的檢測結果,引入center-ness分支。

 

&框架及主要方法

1、網絡的主要框架

 

 

此方法與FPN類似,前面一部分采用了FPN的結構,與之略有不同的是,從P5進行下采樣操作得到P6,P7,同時在預測時在分類分支上添加一個並行的center-ness分支。

 

2、FCOS的流程

1) 定義Fi(【H,W,C】)是骨干CNN中的第i層特征圖,s是到當前層為止的總的stride,{Bi}是ground truth的bboxes,Bi=(x0(i), y0(i), x1(i), y1(i), c(i)),將特征圖Fi中的每個location(x,y)映射回輸入圖像中,作為其感受野的中心。不同於基於anchor的檢測器,將輸入圖像的位置作為anchor的中心,同時參考這些anchor來回歸目標的bbox;直接回歸在當前location的bbox,即將locations視為訓練樣本而不是基於anchor檢測器的anchor boxes。

2) 如果(x, y)在任一ground truth box中,將其視為正樣本,同時c*為該box的類別,否則視為負樣本,c*=0即視為背景。對每個location回歸其l*,t*,r*,b*,即到bbox四邊的距離,如下圖所示。若一個location在多個bbox中,則認為其是有歧義的樣本(對此部分的處理可見第3部分)。若location在Bi中,相應的計算如下圖右所示。

 

 

FCOS利用盡可能多的前景樣本來訓練回歸器。這也與基於anchor的檢測器不同,其僅考慮與ground truth由足夠高的IoU的anchor。這可能是FCOS優於其基於anchor的部分的原因之一。

3) 響應訓練目標,最終的層預測分類標簽的80維向量p以及4維的t=(l, t, r, b) bbox坐標。此外訓練C個二分類分類器替換多類別分類器。由於回歸目標總是正的,在最上面的回歸分支中使用exp(x)來映射到任意實數(0, ∞)。FCOS相對於每個location使用9個anchor的檢測器來說減少到1/9的輸出變量。

4) Loss function定義如下:

 

Lcls是focal loss,Lreg是IoU loss。Npos表示正樣本的數量。

 

3、Mutiple-level prediction FPN的使用

使用PFN的多層預測主要解決兩個問題:

1) CNN中的最后的特征圖的大的stride(如16)造成相對較低的best possible recall(BPR)。

在基於anchor的檢測器中,由較大的stride導致的低召回率可通過降低positive anchor的IoU得分處理;在FCOS中,最初可能認為BPR低於基於anchor的檢測器是因為不能召回由於大的stride導致在最終的特征圖中沒有location的目標。

然而,經過實驗表明,即便時使用較大的stride,基於FCN的FCOS仍然能夠生成一個甚至優於基於anchor的檢測器RetinaNet的BPR,因此BPR在FCOS中不是問題。具體如下表所示:

2) 在ground truth boxes中的遮擋導致的intractable ambiguity(難解的歧義),即不知道應該由哪個bbox對重疊的位置進行回歸。

如框架中的結構圖所示,在不同層級的特征圖中檢測不同size的目標。使用了5層特征圖{P3, P4, P5, P6, P7}。其中P3, P4, P5是由C3, C4, C5通過1×1卷積外加自上而下的連接生成。P6, P7分別由P5, P6以stride為2的卷積生成,因此這些特征層的stride分別為8,16,32,64,128。

不像基於anchor的檢測器,在不同的特征層中使用不同size的anchor,直接限制每個層級中bbox回歸的范圍。首先在每個特征層中的location上計算回歸的目標l*,t*,r*,b*;如果max(l*,t*,r*,b*)>mi,或者min(l*,t*,r*,b*)<mi-1,則被視為負樣本。其中mi是特征層級i能夠回歸的最大的距離。在此,設定m2,m3,m4,m5,m6,m7分別為0,64,128,256,512及∞。因此不同size的目標被分配到不同的特征層級中,而大多遮擋發生在不同size的目標中。如果在使用多層級預測后,一個location仍在多個ground truth boxes中,直接選取最小的ground truth作為其回歸目標。下表顯示了使用FPN后,有歧義樣本的數量的變化情況:

Tricks

根據論文,在不同的特征層中共享head,不僅使得檢測器的參數更有效,同時提升了檢測性能。不同的特征層級要求回歸不同的size范圍,因此在不同的特征層中使用相同的head是不合理的,因此使用exp(six)替換原先的exp(x),si是一個可訓練的標量,不同的層級中可以自動調整,最終提高一點性能。

 

4、Center-ness Branch

在使用多層級預測FPN后,FCOS與基於anchor的檢測器仍有較大差距,根據分析,是由於由原理目標中心的location生成的大量低質量檢測到的bbox。

 添加一個與分類分支並列的分支(實驗表明,center-ness分支與回歸分支並列的性能會更好),來預測location的center ness。Center ness表示該location與其響應的bbox中心的歸一化的距離。令l*,t*,r*,b*表示一個location,則center ness計算如下:

 

 

在此處使用sqrt為了減緩center ness的衰減。使用二值交叉熵定義其loss,將loss添加到損失函數中,在計算時將center ness的loss作為分類損失的權重。

下表顯示了使用center-ness以及在不同地方使用產生的結果對比:

 

5、實驗結果

下表為FCOS相比於以ResNet-50-FPN為backbone的RetinaNet的結果以及對應的采用不同的改進策略的結果對比:

 

下表比較了FCOS與其他one-stage檢測器的結果對比,以及Faster R-CNN在RPN部分使用不同的網絡的對比結果:

 

下表為相對於RetinaNet以及使用不同的tricks的FCOS的結果對比:

 

&遇到的問題

1、為什么使用center-ness可以減少低質量的bbox?

本人理解:之前的理解有誤,如上圖所示,center-ness的值相當於圖中1與4或者2與3的面積比,然后開根號。比值越大說明分割點與中心點的偏離越大,那么該點作為bbox的中心點就越不准確,所以對此時的bbox的分類權重給與削減。

&思考與啟發

從FCOS的介紹及對相關問題的處理中,可以發現FCOS並不適合低空行人檢測或者密集人群檢測,因為在這些問題中需要考慮的有很多都是相同尺度的目標的遮擋問題,而FCOS使用多層級的FPN預測僅可以解決不同size間的目標遮擋,在相同的特征層級處理中,仍會出現intractable ambiguity。所以使用FCOS需要視數據集而定。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM