《Feature Selective Anchor-Free Module for Single-Shot Object Detection》是由Carnegie Mellon大學Chenchen Zhu等提出的自動選擇合適的尺度以及無anchor的目標檢測方法。實驗對比圖如下
![在這裏插入圖片描述]()
從上圖可以看出,加了FSAF模塊的RetinaNet,能把一些長寬比比較懸殊的目標檢測出來。爲什麼加入了FSAF模塊可以有這種效果?首先:
1、對比下加入FSAF模塊前後的RetinaNet網絡的結構:
![在這裏插入圖片描述]()
![在這裏插入圖片描述]()
相對於原始的RetinaNet網絡,FSAF模塊只是兩個卷積層,一個嵌入到分類支路中,另一個嵌入到迴歸支路中。
爲什麼在兩個支路中分別嵌入一個卷積層就可以實現特徵選擇,從而達到良好的檢測效果?
2、損失函數
作者首先定義了一些變量:
1)標籤爲k的實例的bounding box爲b=[x,y,w,h]。(x,y)是矩形的中心,w,h分別是矩形的寬和高。
2)其在Pl特徵層上的box座標爲bpl=[xpl,ypl,wpl,hpl],即其座標可表示爲bpl=b/2l。
3)有效box(effective box):bel=[xel,yel,wel,hel];可忽略box(ignoring box):bil=[xil,yil,wil,hil]。這兩個box大小分別和bpl成ϵe和ϵi倍的關係。即xel=xpl,yel=ypl,wel=ϵewpl,hel=ϵehpl,xil=xpl,yil=ypl,wil=ϵiwpl,hil=ϵihpl
文章中的ϵe=0.2,ϵi=0.5。
定義完這些參數,就可計算分類和迴歸的輸出:
1)分類輸出
分類輸出層輸出K個maps,每個map對應一個類。一個樣本以三種方式影響第k層特徵。第一,有效box區域:bel,這是一個正樣本區域;第二,除去有效box的可忽略box區域:(bil−bel),這部分區域的梯度不傳回去;第三,相鄰特徵層的可忽略boxes(bil−1,bil+1)也是可忽略的。其餘的區域都是負樣本區域。如果在一個特徵層上,有兩個相交的有效boxes,則較小的樣本有較高的優先級。
loss計算採用α=0.25,γ=2.0的Focal loss。
2)迴歸輸出
迴歸支路只計算有效區域bel內的點。對於區域內的每個點(i,j),其對應的projected box是一個四維矢量di,jl=[dti,jl,dli,jl,dbi,jl,dri,jl],其各分量表示當前點(i,j)和bpl上、左、下、右邊界的距離。用S對di,jl進行歸一化,即每個點(i,j)的矢量爲di,jl/S。S取值爲4。有效區域之外的區域都忽略。Loss採用IoU loss。
![在這裏插入圖片描述]()
3)前向輸出
對於點(i,j),其前向網絡輸出爲[oti,j,oli,j,obi,j,ori,j],則預測的距各邊的距離爲[Soti,j,Soli,j,Sobi,j,Sori,j]。則輸出的左上角和右下角分別爲(i−Soti,j,j−Soli,j)、(i+Sobi,j,j+Sori,j)。將得到的點放大2l倍就可以得到輸出box在原圖像上的位置。
輸出box的置信度和類別由最大score以及對應的類別決定。
那如何選擇合適的輸出層得到結果呢?
3、在線特徵選擇
自動選擇合適的特徵層得到結果。
在訓練階段:設有一個樣本I,其在Pl層的分類損失和box迴歸損失分別爲LFLI(l)和LIoUI(l)。選擇最小損失的層爲最優的層:
l∗=arglminLFLI(l)+LIoUI(l)
在訓練時,將l∗層的損失傳遞回去,進行學習。
在推理時,無需選擇哪個層,只需要將置信度最高的層的預測結果輸出即可。
4、結合使用去推理和訓練
在使用中,anchor-based和FSAF模塊時同時使用的
推理階段
在FSAF模塊中,每一層選取置信度最高的1k個輸出,得到輸出,與anchor-based模塊的輸出合併,然後採用NMS得到最終的輸出結果
訓練優化
整個網絡的損失是FSAF和anchor-based的加權和。設anchor-based的損失爲Lab,anchor-free模塊的分類和迴歸損失分別爲Lclsaf、Lregaf,則網絡的總損失爲L=Lab+λ(Lclsaf+Lregaf),其中λ是anchor-based分支的權重,本章中的設置爲λ=0.5。
初始化
具體參照論文
從上面對FSAF模塊分析可知,FSAF模塊在目標檢測時,沒有像anchor-based方法那樣對box長寬比有限制,從理論上看,任何長寬比都可以檢測到,因此在第一張圖上,加了FSAF模塊的RetinaNet網絡可以檢測到細長的目標
總結
這篇文章提出了FSAF的特徵選擇無anchor模塊,應用於多尺度特徵輸出網絡。在訓練和推理階段,同時使用anchor-based和anchor-free兩個分支。FSAF模塊其實一個卷積層,在訓練中,這個模塊學會選擇合適的尺度,在推理階段,可自動輸出合理的結果。
effective box, ignoring box設置的動機是什麼?