DynamicHead:基於像素級路由機制的動態FPN | NIPS 2020

論文提出了細粒度動態detection head,能夠基於路由機制動態地融合不同FPN層的像素級局部特徵進行更好的特徵表達。從設計的路由空間來看是一個十分耗時的操作,但是作者設計的高效路由器實際計算十分高效。實驗結果來看,細粒度動態detection head可以即插即提點
來源:曉飛的算法工程筆記 公衆號

論文: Fine-Grained Dynamic Head for Object Detection

Introduction


  在目標檢測算法的研究中,特徵金字塔FPN是十分重要的結構,能夠很好地表達目標的多尺度特徵。近期也有很多FPN結構的改進研究,比如手工設計的PANet、FPG以及自動搜索的NAS-FPN、Auto-FPN。但上述的改進研究有兩點問題:

  • 在訓練時將訓練目標粗略地分配給某個FPN層,並且認爲目標區域是不可分割,層間融合也是整層進行。這種策略可能會忽略了目標分散在FPN不同層的細粒度局部特徵,這些局部特徵能夠很好地提高目標的語義信息。
  • detection head的預測結果基於單層FPN特徵,分辨率固定, 可能會忽略了重要的小區域特徵。

  爲了解決上述的問題,論文提出了細粒度動態detection head,能夠基於路由機制動態地融合不同FPN層的像素級局部特徵進行更好的特徵表達。該方法參考了粗粒度的動態網絡方法,集中在像素級別進行路由選擇。

Fine-Grained Dynamic Routing Space


  FPN-based目標檢測網絡通過主幹網絡獲取不同分辨率特徵,然後通過top-bottom pathway以及橫向連接進行多尺度特徵融合,最後使用簡單的共享detection head對不同分辨率的特徵進行結果預測。

  細粒度動態detection head的核心在於細粒度動態路由空間(fine-grained dynamic
routing space)的設計,如上圖所示。對於第\(n\)層特徵,動態路由空間的深度爲\(D\),與FPN的3層特徵相關,分別爲\(n\)層、\(n-1\)層以及\(n+1\)層。動態路由空間的基礎爲細粒度動態路由器(fine-grained dynamic router),根據狀態選擇各像素的後續路徑,每個像素有3個不同的路徑可供選擇。

Fine-Grained Dynamic Routing Process


  給定路由空間以及幾個獨立的節點,使用論文提出的細粒度動態路由器(fine-grained dynamic routers)完成多尺度特徵的融合,主要進行element-wise的相加以及像素級路由路徑的選擇。

Fine-Grained Dynamic Router

  給定路由空間節點\(l\),該節點的特徵標記爲\(x^l=\{x_i^l \}^N_{i=1}\)\(N=H\times W\)爲像素位置,共有\(C\)維,路由節點的候選路徑\(F=\{f_k^l(\cdot) | k\in \{1, \cdots, K\} \}\)根據相鄰FPN層的尺寸定義,\(K\)爲候選路徑數。每個路徑都有一個空間控制門(spatial gate),空間控制門的輸出爲門控因子(gating factor):

\(\theta_k^l\)爲協助網絡的參數,對應第\(k\)個控制門,參數是位置共享的。而\(m_i^{k,l}\in [0, 1]\)是連續的,允許單個像素的多個後續路徑被激活。在實現時,只取激活門控因子爲正數的路徑,所以單節點的多路徑路由輸出爲:

Gate Activation Function

  門控激活函數的輸出範圍爲\([0,1]\),當輸出爲0時禁止該路徑。另外,門控激活函數必須是可微的,方便反向傳播的學習。在考慮了其它研究的實現方案之後,論文提出了restricted tanh函數的變種:

\(\tau\)爲超參數,用於控制\(0^+\)的梯度值。公式3不僅可導,還解決了restricted tanh在零處梯度不連續的問題。

Routing Path

  路由器在每個位置均有3個可選的後續路徑,上下采樣路徑採用圖b的結構進行實現,包含線性採樣操作,而非採樣路徑則使用圖a的結構進行實現。對於空間控制門\(g_k^l(\cdot)\)則使用了圖c的輕量級結構進行實現,先通過\(3\times 3\)卷積將輸入轉換爲維度爲1的特徵,然後通過論文提出的門控激活函數\(\delta(\cdot)\)將輸出約束到\([0,1]\),將\(m^{k,j}\)進行最大池化後進行量化,非零的均量化爲一,輸出掩膜\(\mathcal{M}^{k,j}\),最後基於掩膜進行空間稀疏卷積(\(3\times 3\))。
  由於激活的路徑數會被約束,池化和量化可以過濾掉大量未被激活的路徑,減少很多計算量。其實這裏最省的是隻計算\(m^{k,j}\)非零的位置,但考慮非採樣路徑a需要進行兩次稀疏卷積,還是池化一下靠譜點。另外,上下采樣路徑b裏的卷積都採樣深度卷積,進一步減少計算量。

Resource Budget

  過多的路由路徑會造成過大的計算量,所以需要增加一個懲罰項來引導路由器禁用盡可能多的路徑。定義\(\mathcal{C}^{k,l}\)爲路徑相關的計算複雜度,則單節點的計算消耗爲:

\(\Omega_i^{k,l}\)爲位置\(i\)的感受域,這裏採用最大池化來直接獲取需要進行計算的位置,跟上面的圖c類似。公式4能夠很好的引導減少門控特徵圖\(m^{k,l}\)的值,將細粒度動態路由添加到網絡時,需增加資源消耗的損失項:

  最終完整的網絡損失函數爲:

Experiment


  在FCOS上的對比實驗。

  不同網絡上的適配。

Conclusion


  論文提出了細粒度動態detection head,能夠基於路由機制動態地融合不同FPN層的像素級局部特徵進行更好的特徵表達。從設計的路由空間來看是一個十分耗時的操作,但是作者設計的高效路由器實際計算十分高效。實驗結果來看,細粒度動態detection head可以即插即提點。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公衆號【曉飛的算法工程筆記】

work-life balance.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章