論文名稱:Feature Selective Anchor-Free Module for Single-Shot Object Detection

論文地址:

https://

arxiv。org/abs/1903。0062

1

建議閱讀這篇文章之前先閱讀以下參考文獻裡面的FPN和Focal Loss(RetinaNet)這兩篇論文。

摘要

提出一種無錨點的特徵選擇模組,可以最佳化傳統的基於錨點檢測器的2個不足:(1)啟發式引導的特徵選擇(2)基於重疊的錨點取樣(1) heuristic-guided feature selection; (2)overlap-based anchor sampling

訓練過程中可以動態的為每個object選擇合適的特徵層提取特徵; 推理測試過程中可以和anchor-based並行使用;

在COCO測試集可以達到44。6的mAP,

可以在anchor-based網路的基礎上

簡單加一下anchor-free的分支即可實現anchor-based和anchor-free的融合

動機

目標檢測有什麼問題?

scale variation。以前的解決方法有影象金字塔、特徵金字塔、anchor boxes等。

傳統anchor-based的方法有什麼不足?

(1) heuristic-guided feature selection; (2)overlap-based anchor sampling

第一個不足意思是說之前對於一個object,選擇哪個特徵層是人工設計的,最常見的形式是根據object的大小,例如大的object在小解析度的feature(有large anchors),小的object在大解析度的feature(有small anchors)。但是對於目標檢測,同一種物體,例如車的尺度可能變化非常大,不同大小的車根據人為設計的特徵選擇規則會落在不同的feature上,這不是最優的。

第二個不足意思是說例項的boxes是透過IoU Overlap和最近的anchor boxes進行匹配的,且不同層的feature對應的anchor boxes也是啟發式設計的。

【目標檢測】FSAF

傳統基於anchor的設計,40*40和50*50的2輛車可能基於同一個feature上提取特徵,60*60的可能基於另一個feature提取特徵

網路結構

【目標檢測】FSAF

將FSAF模組插入到傳統的基於anchor-based的檢測器的方法結構圖。在訓練過程中,透過設定監控訊號的特徵選擇,將每個例項分配到一個金字塔級別。監控訊號後面會重點介紹。

如何建立anchor-free分支?

我們先回回憶一下RetinaNet網路結構

【目標檢測】FSAF

RetinaNet網路:(a)是ResNet結構 (b)是feature pyramid net (c)是class subset (d)是box subset。

class subset分支輸入C維的特徵經過4次3*3卷積(後跟ReLU),最後再經過一次含有KA個濾波器的3*3卷積,其中K是類別的數目,A是anchor的數目,最後再經過一個sigmoid函式。

box subset分支輸入C維的特徵經過4次3*3卷積(後跟ReLU),最後再經過一次含有4A個濾波器的3*3卷積,A是anchor的數目。

class subset和boxsubset的結構基本相同,但是引數不共享。文章中取 C = 256, K = 9,calss subset倒數第二個feature的大小為W*H*256,每一個點對應256維度的向量,最後轉換成KA維度的向量。

下面我們介紹一下FSAF模組怎麼插入到RetinaNet模組當中:

【目標檢測】FSAF

將FSAF模組插入到RetinaNet網路中的新架構。RetinaNet中每個feature對應2個subnets,一個是用於class分類,一個是用於boxes迴歸。FSAF知只是在此基礎上增加2個卷積層,class subset輸出K維的W*H的feature, box subset輸出4維的W*H的feature, 兩者合在一起構成anchor-free branch。

監督訊號怎麼設計?

定義一些引數

instance boxes:

b=[x,y,w,h]

projected boxes on

P_{a}:b_{p}^{l} = [x_{p}^{l},y_{p}^{l},w_{p}^{l},h_{p}^{l}]=\frac{b}{2^{l}}

effective boxes on

P_{l}:b_{e}^{l} = [x_{p}^{l},y_{p}^{l},\epsilon_{e}w_{p}^{l},\epsilon_{e}h_{p}^{l}]

ingoring boxes on

P_{l}:b_{i}^{l} = [x_{p}^{l},y_{p}^{l},\epsilon_{i}w_{p}^{l},\epsilon_{i}h_{p}^{l}]

對於位於區域

b_{e}^{l}

內的任一畫素點

\left( i,j \right)

,定義

[d_{t_{i,j}}^{l},d_{l_{i,j}}^{l},d_{b_{i,j}}^{l},d_{r_{i,j}}^{l}]

為畫素點

\left( i,j \right)

到對映區域

b_{p}^{l}

。下圖中的白色區域為

b_{e}^{l}

,灰色區域為

b_{i}^{l}

【目標檢測】FSAF

使用focal loss用於監督分類任務,使用IoU loss用於監督迴歸任務;

【目標檢測】FSAF

公式(1)中的

I

為輸入的instance,

l

為feature map,

N

b_{e}^{l}

內的畫素數,

FL\left( l,i,j \right)

b_{e}^{l}

內點

\left( i,j \right)

在第

l

層上的focal loss 分類損失,

IoU\left( l,i,j \right)

b_{e}^{l}

內點

\left( i,j \right)

在第

l

層上的Iou loss 迴歸損失。

線上特徵選擇?

【目標檢測】FSAF

上圖為線上特徵選擇機制。每一個例項都經過所有的anchor-free branch來計算平均分類損失和平均迴歸損失,然後選擇損失最小的anchor-free branch對應的損失作為最後的監督該例項的訊號。如上,假如最下面的這路梯度最小,訓練階段則只對最下面的這路進行梯度更新,上面的兩路不做任何變化。

Anchor-based branch 和 Anchor-free branch聯合訓練

L=L^{ab}+\lambda\left( L_{cls}^{af} + L_{reg}^{af} \right)

上式中

L

為anchor-based branch和anchor-free branch的總Loss,其中

L^{ab}

為anchor-based branch的總loss,

L_{cls}^{af}

為anchor-free branch的分類loss,

 L_{reg}^{af}

為anchor-free branch的迴歸loss,超引數

\lambda=0.5

Anchor free和Anchor based的效果對比

【目標檢測】FSAF

只使用Heuristic feature selection效果差於只使用Anchor-based branches;只使用Online feature selection 效果持平只使用Anchor based branches; Online feature selection 和Anchor based branches結合使用效果最好,比基線提升1。5個點

【目標檢測】FSAF

從圖上可以看出基於anchor-based的RetinaNet網路中插入anchor-free模組後,像滑板、飛盤等這種較小、尺度比較不規則的物體檢測效果會更好。

【目標檢測】FSAF

上圖中的所有框都是anchor-free的檢測結果,綠框表示其和anchor-based選擇特徵層一致,小目標在大解析度層,大目標在小解析度層;紅色的表示其和anchor-based選擇的特徵層不一致。影象中小目標等更難的樣本可以檢測出來,證明其特徵選擇的有效。

參考文獻:

[1]Feature Selective Anchor-Free Module for Single-Shot Object Detection (FSAF; 201903;CVPR)

[2]Feature pyramid networks for object detection (FPN; 2017;CVPR)

[3] Focal loss for dense object detection (RetinaNet & focal loss; 2018; CVRP;)

[4] Improving object localization with fitness nms and bounded iou loss (IOU loss; 2018; CVPR)