針對anchor-point檢測演算法的優化問題,論文提出了SAPD方法,對不同位置的anchor point使用不同的損失權重,並且對不同的特徵金字塔層進行加權共同訓練,去除了大部分人為制定的規則,更加遵循網路本身的權值進行訓練
來源:曉飛的演算法工程筆記 公眾號
論文: Soft Anchor-Point Object Detection
- 論文地址:https://arxiv.org/abs/1911.12448
- 論文程式碼:https://github.com/xuannianz/SAPD not official
Introduction
Anchor-free檢測方法分為anchor-point類別和key-point類別兩種,相對於key-point類別,anchor-point類別有以下有點:1) 更簡單的網路結構 2) 更快的訓練和推理速度 3) 更好地利用特徵金字塔 4) 更靈活的特徵金字塔選擇,但anchor-point類別的準確率一般比key-point類別要低,所以論文著力於研究阻礙anchor-point類別準確率的因素,提出了SAPD(Soft Anchor-Point Detecto),主要有以下兩個亮點:
- Soft-weighted anchor points。anchor-point演算法在訓練時一般將滿足幾何關係的點設定為正樣本點,其損失值權重均為1,這造成定位較不準確的點偶爾分類置信度更高。實際上,不同位置的點的迴歸難度是不一樣的,越靠近目標邊緣的點的損失值權重應該越低,讓網路集中於優質anchor point的學習。
- Soft-selectedpyramid levels。anchor-point演算法每輪訓練會選擇特徵金字塔的其中一層特徵進行訓練,其它層均忽略,這在一定程度上造成了浪費。因為其他層雖然響應不如被選擇的層強,但其特徵分佈應該與被選擇層是類似的,所以可以賦予多層不同權重同時訓練。
Detection Formulation with Anchor Points
論文首先介紹了大致的anchor point目標檢測方法的網路結構以及訓練方法。
Network architecture
網路包含主幹網路以及特徵金字塔,特徵金字塔每層包含一個detection head,特徵金字塔層標記為\(P_l\),\(l\)為層數,層的特徵圖大小為輸入\(W\times H\)的\(1/s_l\)倍,\(s_l=2^l\)為stride。一般,\(l\)的範圍為3到7,detection head包含分類子網和迴歸子網,子網均以5個\(3\times 3\)卷積層開頭,然後每個位置分別預測\(K\)個分類置信度以及4個偏移值,偏移值分別為當前位置到目標邊界的距離。
Supervision targets
對於目標\(B=(c, x, y, w, h)\),中心區域為\(B_v=(c, x, y, \epsilon w, \epsilon h)\),\(\epsilon\)為縮放因子。當目標\(B\)被賦予金字塔層\(P_l\)且anchor point \(p_{lij}\)位於\(B_v\)內時,則認為\(p_{lij}\)是正樣本點,分類目標為\(c\),迴歸目標為歸一化的距離\(d=(d^l, d^t, d^r, d^b)\),分別為當前位置到目標四個邊界的距離:
\(z\)為歸一化因子。對於負樣本點,分類目標為背景(\(c=0\)),定位目標為null,不需要學習。
Loss functions
網路輸出每個點\(p_{lij}\)的\(K\)維分類輸出\(\hat{c}_{lij}\)以及4維位置迴歸輸出\(\hat{d}_{lij}\),分別使用focal loss和IoU loss進行學習:
網路整體損失為正負樣本點之和除以正樣本點數:
Soft Anchor-Point Detector
SAPD的核心如圖3所示,分別為Soft-Weighted Anchor Points以及Soft-Selected Pyramid Levels,用於調整anchor point權重以及使用特徵金字塔的多層進行訓練。
Soft-Weighted Anchor Points
-
False attention
基於傳統的訓練策略,論文觀察到部分anchor point輸出的定位準確率較差,但是其分類置信度很高,如圖4a所示,這會造成NMS過後沒有保留定位最準確的預測結果。可能的原因在於,訓練策略平等地對待中心區域\(B_v\)內的anchor point。實際上,離目標邊界越近的點,越難迴歸準確的目標位置,所以應該根據位置對不同的anchor point進行損失值的加權,讓網路集中於優質的anchor point的學習,而不是勉強網路將那些較難迴歸的點也學習好。
-
Our solution
為了解決上面提到的問題,論文提出soft-weighting的概念,為每個anchor point的損失值\(L_{lij}\)增加一個權重\(w_{lij}\),權重由點位置和目標的邊界決定,負樣本點不參與位置迴歸的計算,所以直接設為1,完整的權值計算為:
\(f\)為反映點\(p_{lij}\)與目標\(B\)邊界遠近的函式,論文設定\(f\)為centerness函式\(f(p_{lij}, B)=[\frac{min(d^l_{lij}, d^r_{lij})min(d^t_{lij}, d^b_{lij})}{max(d^l_{lij}, d^r_{lij})max(d^t_{lij}, d^b_{lij})}]^{\eta}\)
\(\eta\)為降低的幅度,具體的效果可以看圖3,經過Soft-Weighted後,anchor point的權值變成了山峰狀。
Soft-Selected Pyramid Levels
-
Feature selection
anchor-free方法在每輪一般都會選擇特徵金字塔的其中一層進行訓練,選擇不同的層的效果完全不同。而論文通過視覺化發現,不同層的啟用區域實際上是類似的,如圖5所示,這意味著不同層的特徵可以協作預測。基於上面的發現,論文認為選擇合適的金字塔層有兩條準則:
-
選擇需基於特徵值,而非人工制定的規則。
-
允許使用多層特徵對每個目標進行訓練,每層需對預測結果有顯著的貢獻。
-
Our solution
為了滿足上面兩條準則,論文提出使用特徵選擇網路來預測每層對於目標的權重,整體流程如圖6所示,使用RoIAlign提取每層對應區域的特徵,合併後輸入到特徵選擇網路,然後輸出權重向量。效果可看圖3,金字塔每層的權值的山峰形狀相似,但高度不同。需要注意,特徵選擇網路僅在訓練階段使用。
特徵選擇網路的結構十分簡單,如表1,與檢測器一起訓練,GT為one-hot向量,數值根據FSAF的最小損失值方法指定,具體可以看看之前發的關於FSAF文章。至此,目標\(B\)通過權重\(w^B_l\)與金字塔的每層進行了關聯,結合前面的soft-weighting,anchor point的權值為:
完整的模型的損失為加權的anchor point損失加上特徵選擇網路的損失:
Experiment
各模組的對比實驗。
與SOTA演算法進行對比。
Conclusion
針對anchor-point檢測演算法的優化問題,論文提出了SAPD方法,對不同位置的anchor point使用不同的損失權重,並且對不同的特徵金字塔層進行加權共同訓練,去除了大部分人為制定的規則,更加遵循網路本身的權值進行訓練。
如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】