FoveaBox是CVPR2019的一篇anchor free的目標檢測文章,其思想跟FCOS很相似,都是在RetinaNet的基礎上,在不同stage輸出的特徵圖上,直接得到目標類別並回歸出目標的位置,相比FCOS,FoveaBox要更簡單一些,FoveaBox在COCO的精度可以達到42.1。
作者:Tao Kong Fuchuan Sun 等
論文鏈接:https://arxiv.org/abs/1904.03797
代碼鏈接:https://github.com/taokong/FoveaBox
Introduction
- 使用anchor的缺點
- 超參數的引入
- 泛化性不夠,對不同的任務需要設計不同的anchor
- 正負樣本不均勻
- 靈感來源
- MetaAnchor
- Guided-Anchoring
FoveaBox
在介紹FoveaBox之前,首先展示一張FoveaBox的結構圖,如下。FoveaBox的整體結構跟RetinaNet基本一致,同樣採用FPN結構,同樣是不同的level分出兩個subnet,一個用於預測類別,一個用於預測座標框。不一樣的地方在於,class subnet最後的輸出這裏是W*H*K,而RetinaNet是W*H*A*K,沒有了anchor的參數A,box subnet的輸出也是同理。
在FoveaBox中,共有5個level分出subnet,分別是,每個level輸出的特徵圖的大小爲
Scale Assignment
由於目標尺寸變換範圍較大,FoveaBox跟SSD方法一致,同樣採用了不同的level預測不同尺寸的目標的方法,另外在FCOS中(一個跟FoveaBox很相似的anchor free目標檢測方法),解釋到,使用多level預測的目的是爲了解決anchor free的時候,目標重疊的問題,因爲重疊就沒有辦法分配正負樣本了,這樣可以有效減少目標重合。
這裏作者將7個level的尺寸設置成-,用公式表示就是其中,並且,爲了控制不同level之間的重合度,作者增加了參數,進一步調節不同level的尺度範圍,,通過調節參數,一個目標可能會在多個level中進行檢測。
Object Fovea
接下來我們來看一下,Fovea在訓練中如何定義正負樣本。
Fovea是anchor free的,所以在計算正負樣本的時候,不需要想anchor那樣計算IOU,fovea直接將ground-truth映射到對應level的特徵圖上,公式如下:
另外,在Fovea中,並不是ground-truth對應的區域均是正樣本,如下圖所示,狗雖然很大,但是真正的正樣本,是中間紅色區域部分,這也是fovea的精華,這裏作者引入了個參數,可以根據參數,動態設置正樣本範圍。
至於負樣本,作者在上面公式中,設置,在之外的數據均爲負樣本,在作者的實驗中,,位於0.3-0.4之間的區域就不參與訓練了。由於仍然存在正負樣本不均的情況,所以作者在訓練分類的時候仍然採用了Focal Loss。
Box Prediction
在座標預測上,FoveaBox中,在座標預測方面,主要是通過學習了transformation函數來進行座標的變換,如下,其中,x1等是Ground Truth,t代表網絡輸出,這裏作者使用的是Smooth L1 loss作爲計算座標的loss函數。
Inference
在inference的時候,首先使用閾值0.05,直接過濾掉不靠譜的點,然後在剩下的點中,選取得分排名前1000的點作爲候選點,再然後,使用非極大值抑制,對這1000個點再次進行過濾,最後留下的top100個點作爲最終的結果。
實驗部分
Various anchor densities and FoveaBox
首先,anchor-based網絡,一般跟anchor的選取有很大關係,那麼fovea是不是比anchor-based方法更好呢?作者進行了實驗,結果如下。可以發現,foveaBox比RetinaNet高的不是一點點。
Analysis of Scale Assignment
控制着金字塔網絡不同level的scale,到底選多少最爲合適呢?下面的實驗說明選擇2是最爲合適的。
Fovea對於box是不是更魯棒一些呢?
爲此作者進行了實驗,通過修改驗證集的長寬比等。
每個類別的差異
可見,大部分類別的效果都提升了。
Fovea當做RPN效果
如果採用FoveaBox方式提取RPN效果如何呢?實驗證明,效果要好於基於anchor的方法。
不同尺度與深度的Fovea效果對比
foveaBox效果還是不錯的。
總結
文章整體來看,跟FCOS很像,思路基本一樣,都是基於RetinaNet,同樣是每一個location預測一個類別和四個座標相關的數,只是FCOS預測到四個邊界的距離,Fovea預測一個座標轉換。再有一個就是FCOS以gt boxes中的全部像素作爲正例,而Fovea是採樣了一個portion。其他關於FPN尺度分配的問題都是大差不差。