作為與FCOS和FSAF同期的Anchor-free論文,FoveaBox在整體結構上也是基於DenseBox加FPN的策略,主要差別在於FoveaBox只使用目標中心區域進行預測且迴歸預測的是歸一化後的偏移值,還有根據目標尺寸選擇FPN的多層進行訓練,大家可以學習下
來源:曉飛的演算法工程筆記 公眾號
論文: FoveaBox: Beyound Anchor-Based Object Detection
Introduction
論文認為anchor的使用不一定是最優的搜尋目標的方式,且受人眼視網膜中央凹(fovea)的啟發:視覺區域的中部有最高的視覺敏銳度,所以提出了anchor-free目標檢測方法FoveaBox。
FoveaBox聯合預測每個有效位置為目標中心的可能性及其對應目標的尺寸,輸出類別置信度以及用以轉化目標區域的尺寸資訊。如果大家看過很多Anchor-free的檢測方案,可能覺得論文的實現方案很常見,的確,其實這篇文章也是Anchor-free井噴初期的作品,整體思路很純粹,也是很多大佬都想到的思路,在閱讀時需要關注以下細節:
- 以目標的中心區域進行分類預測與迴歸預測
- 將回歸預測的是歸一化後的偏移值
- 訓練時可指定FPN多層同時訓練
- 提出特徵對齊模組,使用迴歸的輸出來調整分類的輸入特徵
FoveaBox
Object Occurrence Possibility
給定GT目標框\((x_1, y_1, x_2, y_2)\),將其對映到特徵金字塔層\(P_l\):
\(s_l\)為特徵層相對於輸入的stride,正樣本區域\(R^{pos}\)為大致為對映框的縮小版本:
\(\sigma\)為人為設定縮放因子。在訓練階段,正樣本區域內的特徵點標記為對應的目標類別,其餘的區域為負樣本區域,特徵金字塔每層的輸出為\(C\times H\times W\),\(C\)為類別總數。
Scale Assignment
網路的目標是預測目標的邊界,直接預測是不穩定的,因為目標尺寸的跨度很大。為此,論文將目標尺寸歸為多個區間,對應特徵金字塔各層,各層負責特定尺寸範圍的預測。給予特徵金字塔\(P_3\)到\(P_7\)基礎尺寸\(r_l=2^{l+2}\),則層\(l\)負責的目標尺寸範圍為:
\(\eta\)為人工設定的引數,用於控制特徵金字塔每層的迴歸尺寸範圍,不在該層尺寸範圍內的訓練目標則忽略。目標可能落到多個層的尺寸範圍內,這時使用多層進行訓練,多層訓練有以下好處:
- 鄰接的特徵金字塔層通常有類似的語義資訊,可同時進行優化。
- 大幅增加每層的訓練樣本數,使得訓練過程更穩定。
Box Prediction
在預測目標尺寸時,FoveaBox直接計算正樣本區域\((x,y)\)到目標邊界的歸一化的偏移值:
公式4先將特徵金字塔層的畫素對映回輸入圖片,再進行偏移值的計算,訓練採用L1損失函式。
Network Architecture
網路結構如圖4所示,主幹網路採用特徵金字塔的形式,每層接一個預測Head,包含分類分支和迴歸分支。論文采用較簡單的Head結構,使用更復雜的Head可以獲得更好的效能。
Feature Alignment
論文提出了特徵對齊的trick,主要是對預測Head進行改造,結構如圖7所示,
Experiment
與SOTA方法進行對比。
Conclusion
作為與FCOS和FSAF同期的Anchor-free論文,FoveaBox在整體結構上也是基於DenseBox加FPN的策略,主要差別在於FoveaBox只使用目標中心區域進行預測且迴歸預測的是歸一化後的偏移值,還有根據目標尺寸選擇FPN的多層進行訓練。由於FoveaBox的整體實現方案太純粹了,與其它Anchor-free方法很像,所以一直投稿到現在才中了,作者也是相當不容易。
如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】