本篇文章是CVPR2019的一篇Anchor-Free的文章,是一篇很好的Anchor Free的目標檢測的文章,目前基於anchor的目標檢測方法,大多采用不同的level預測不同尺度的instance,而分配規則往往是人爲設計的,這導致anchor的匹配策略可能不是最優的。那有沒有更優的匹配方法?文章從level選取的點進行切入,利用FASF實現不同的instance在不同level的動態分配,實現了level的動態選擇,並且anchor free方法取得了較好的mAP,另外作者設計了anchor free跟anchor-based相結合的方法,進一步提升模型效果,取得了可觀的結果。
論文名稱:Feature Selective Anchor-Free Module for Single-Shot Object Detection
作者:Chenchen Zhu & Yihui He & Marios Savvides
論文鏈接:https://arxiv.org/abs/1903.00621
Back Ground
目標檢測的一個挑戰在於尺度的變化,目前解決問題的方法包括:特徵金字塔、multi-level、anchor boxes等。特徵金字塔以及anchor-based已經取得了不錯的效果。但是存在一定的限制:
- 啓發式的特徵選擇。
- 重疊的anchor的選擇。
目前基於anchor的目標檢測方法,大多采用不同的level預測不同尺度的instance,而分配規則往往是人爲設計的,這導致anchor的匹配策略可能不是最優的。本文提出了feature selective anchor-free module來解決這個限制。並且FASF可以與anchor-based 分支協同並行工作,提高模型效果。在COCO上,可以達到44.6%的mAP
Feature Selective Anchor Free
Network Architecture
FSAF的結構展示如下圖,作者的實驗是以RetinaNet爲基礎,所以下圖的主幹部分代表的是RetinaNet的FPN結構,同樣的從P3-P7引出subnets進行分類與預測,如下圖所示,P3-P7對應的分辨率。
FSAF重點是下圖中引出來的Anchor-Free branch,分類的分支,通過一個3x3的卷積以及sigmoid得到WxHxK的特徵圖,用於預測K個類別,至於迴歸分支,通過一個3x3的卷積以及ReLU得到WxHx4的特徵圖,用於預測每個實例的座標框。
Ground Truth and Loss
首先,如何定義正負樣本呢?如下圖所示,Groud Truth是汽車的藍框,正樣本便是中間圖中白色的部分,當然除了正樣本也不全是負樣本,在正負樣本之間還有一部分忽略樣本,論文中正樣本佔比爲寬度的0.2,忽略部分界限佔比爲寬度的0.5,所以每個level在寬度比例0.2-0.5的一圈是不加入訓練,另外,不同level的界限間的像素也同樣不加入訓練,用公式表示是:(其實不加入訓練這裏,論文描述的挺複雜,其實計算後發現,就是每層的Ground Truth往外擴一圈),其餘的就爲負樣本。並且如果兩個實例在同一個level重合了,以小的那個爲主。
訓練的時候分類採用的是Focal loss,box迴歸的是邊界的上下左右,這裏使用的是IOU Loss
Online Feature Selection
這部分是本篇文章的精髓所在,如果自動去給不同的instance分配合適的level進行預測呢?
其實答案也很簡單,就如下圖所示,作者分別對不同的level的分支結果求loss,然後選擇loss最小的那個作爲該實例的分支。
Joint Inference and Training
這部分將介紹,如何將anchor-based與anchor-free方法結合起來,如上面圖Figure 4所示。
首先,在訓練的時候,保持anchor-based的分支超參數不變。然後anchor-based與anchor-free的loss進行求和,如下:,其中,。
在inference的時候,將anchor based得到的box以及anchor free得到的box一起用非極大值一致的方法,得到最終的結果。
實驗
FASF 模塊的效果以及online feature selection的重要性。
下圖是在RetinaNet上使用FASF模塊的效果,可以看出,其實只使用FASF的效果已經要好於RetinaNet了,並且在實驗中可以看出,如果不使用online feature selection 效果也不錯的,但是沒有使用online feature selection效果好,相差了大約10個點。
FASF選擇的level到底怎麼樣?
實驗表明,大部分的檢測框還是遵循原來的設計的,前面的level檢測小目標,後面的level檢測大目標,但是也有特例,就是下圖中紅色框框住的那些就是,level發生了變化。
FASF與SOTA相比較
總結
這篇文章同樣是一篇很好的Anchor Free的目標檢測的文章,文章從level選取的點進行切入,利用Anchor實現不同的instance在不同level的動態分配,設計了FASF方法進行level的動態選擇,並且設計了anchor free跟anchor-based相結合,提升模型效果,取得了可觀的結果。