人臉框檢測模型PyramidBox論文學習筆記

人臉框檢測模型PyramidBox論文學習筆記

原論文:《Xu Tang, Daniel K. Du, Zeqiang He, Jingtuo Liu. PyramidBox: A Context-assisted Single Shot Face Detector[C]. The European Conference on Computer Vision (ECCV), 2018, pp. 797-813.》
代碼https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/face_detection

特點:

  • 提出了一種基於 anchor 的環境輔助方法,即 PyramidAnchors,從而引入有監督的信息來爲較小的、模糊的和部分遮擋的人臉學習環境特徵。
  • 設計了 LFPN 來更好地融合環境特徵和麪部特徵。同時,該方法可以在單步中較好地處理不同尺度的人臉。
  • 提出了一種Context-Sensitive的預測模型,該模型由混合網絡結構和 max-in-out 層組成,從融合的特徵中學習準確的定位和分類。
  • 提出了一種關注尺度的 data-anchor sampling 策略,改變訓練樣本的分佈,重點關注較小的人臉。

一、模型結構

骨幹網絡:基於VGG-16S3FDS^3FD 模型

1. 結構圖如下:

整體結構圖

  • 它使用了骨幹網絡中 Conv3_3Conv4_3Conv5_3Conv_fc7Conv6_2 以及 Conv7_2 輸出的特徵圖。

2. 主要結構說明:

2.1 低層級特徵金字塔層(Low-level Feature Pyramid Layers)

作用:將高層特徵圖中蘊含的人臉上下文信息融合到低層特徵圖中。
結構:其主要由低層級特徵金字塔網絡(Low-level Feature Pyramid Network, LFPN)構成。

基本結構如下圖所示。這個圖是從 Conv_fc7 開始的,另兩個從 Conv4_3Conv5_3 開始融合的結構圖與此相似。
LFPN

2.2 金字塔檢測層(Pyramid Detection Layers)

  • 選用的特徵層爲:lfpn_2lfpn_1lfpn_0conv_fc7conv6_2 以及 conv7_2
  • 這些特徵層使用的 anchor 尺寸爲:16、32、64、128、256以及512。
  • 其中,lfpn_2lfpn_1 以及 lfpn_0 是分別基於Conv3_3Conv4_3 以及 Conv5_3LFPN 層的輸出。
  • 使用 L2L_2LFPN 層進行正則處理。

2.3 預測層(Predict Layers)

  • 主要由 對上下文信息敏感的預測模塊 (Context-sensitive Predict Module, CPM)構成。
  • CPM的結構:用 DSSD模型的無殘差預測模塊 (Residual-free Prediction Module)替換了 SSH模型的上下文模塊 (Context Module)。
  • 每個檢測模塊後面都連接一個 CPM,所以一共有 6 個 CPM
  • llCPM 的輸出的尺寸爲:wl×hl×clw_l \times h_l \times c_l。(其中 wl=hl=640/22+lw_l = h_l = 640/2^{2+l}cl=20c_l=20l{0,1,2,3,4,5}l \in \{0,1,2,3,4,5\})。

基本結構如下圖所示:
CPM

其中,每個通道的特徵負責預測面部、頭部與身體各自的分類與邊界框迴歸。

  • 面部的分類需要 4(=cpl+cnl= cp_l + cn_l)通道,邊界框迴歸需要 4個通道;
  • 頭部的分類需要 2個通道,邊界框迴歸需要 4個通道;
  • 身體的分類需要 2個通道,邊界框迴歸需要 4個通道;
  • 所以一共有 20個通道(4+4)+(2+4)+(2+4)=20(4+4)+(2+4)+(2+4)=20

cplcp_lcnlcn_l 是前景與背景的max-in-out,並滿足:
cpl={1,    if  l=0,3,    otherwise.cp_l = \left\{ \begin{aligned} 1&,\ \ \ \ if\ \ l=0, \\ 3&,\ \ \ \ otherwise. \end{aligned} \right.

2.3.1 max-in-out算法

作用:減少小的負樣本的FP值(False Positive Rate)。

應用的位置如下圖所示:
max-in-out
每個預測模塊預測出一共 cp+cnc_p + c_n 個得分,然後:

  1. 選擇 cpc_p 中最大的得分,作爲正樣本得分;
  2. 選擇 cnc_n 中最大的得分,作爲負樣本得分。

在第一個預測模塊中,設置: cp=1, cn=3c_p=1,\ c_n=3;(因爲小anchor的背景更復雜,負樣本就會更多)
其他幾個預測模塊中,設置: cp=3, cn=1c_p=3,\ c_n=1。(這是爲了召回更多的面部)

2.4 PyramidBox損失層(PyramidBox loss layers)

  • 對於每個目標面部,都有一系列pyramid anchor來同時監督分類和迴歸的任務。
  • 這一層主要由 PyramidAnchors算法模塊 構成。它會生成一些 anchor,這些 anchor 與某個面部所處的更大的區域相對應,而這些區域包含了面部豐富的上下文信息,如頭部、肩膀以及軀體。

在原始圖片上,對於一個位於 regiontargetregion_{target} 的面部來說,考慮一個步幅爲 sis_i,位於第 ii 個特徵層上的第 jjanchoranchori,janchor_{i,j},定義第 kkpyramid-anchor 的標籤爲:
labelk(anchori,j)={1,    if  IoU(anchori,jsi/2k,regiontarget)>0.35,0,    otherwise.label_{k}(anchor_{i,j}) = \left\{ \begin{aligned} 1&,\ \ \ \ if\ \ IoU(anchor_{i,j} \cdot s_i / 2^k, region_{target})>0.35, \\ 0&,\ \ \ \ otherwise. \end{aligned} \right.

其中:
k{0,1,2}k \in \{0,1,2\},對應的 label0label_0label1label_1label2label_2 分別爲:面部、頭部、身體
anchori,jsianchor_{i,j} \cdot s_ianchori,janchor_{i,j} 在原始圖片上的相應的區域;
anchori,jsi/2kanchor_{i,j} \cdot s_i / 2^k 爲相應的以 2k2^k 爲步幅的下采樣區域。

2.4.1 基於anchor的數據採樣方法(Data-anchor Sampling):

舉例說明:(輸入的圖尺寸爲:640×640640 \times 640

  • 對於一個尺寸爲140的面部,在 {24+ii=0,1,...,5}\{2^{4+i}|i=0,1,...,5\} 中距離其最近的anchor尺寸爲128(此時 ianchor=3i_{anchor}=3),
  • 然後在 {0,1,...,min(5,ianchor+1)}\{{0,1,...,min(5,i_{anchor}+1)}\} (即在 {0,1,...,4)}\{{0,1,...,4)}\})中隨機地選擇一個序號以得到目標尺寸,如32。
  • 32/140=0.228532/140=0.2285 的比例重新調整原始圖片的比例。
  • 從最後調整的圖中,裁取一個640×640640\times640的圖像,該圖像包含了那個被選中的圖片。
  • 最終得到了採樣的訓練數據
2.4.2 損失函數

L({pk,i},{tk,i})=kλkLk({pk,i},{tk,i})L(\{p_{k,i}\},\{t_{k,i}\})=\sum_k \lambda_k L_k(\{p_{k,i}\},\{t_{k,i}\})
Lk({pk,i},{tk,i})=λNk,clsikLk,cls(pk,i,pk,i)+1Nk,regikpk,iLk,reg(tk,i,tk,i)\begin{aligned} L_k(\{p_{k,i}\},\{t_{k,i}\}) &= \frac{\lambda}{N_{k,cls}} \sum_{i_k} L_{k,cls}(p_{k,i},p_{k,i}^*) \\ &+ \frac{1}{N_{k,reg}} \sum_{i_k} p_{k,i}^* L_{k,reg}(t_{k,i},t_{k,i}^*)\end{aligned}
其中,kk 與面部、頭部、身體相對應;iianchor相對應;Lk,clsL_{k,cls} 是在兩個類別上的對數損失函數;Lk,regL_{k,reg}smooth L1smooth\ L_1 損失函數;tk,it_{k,i}tk,it_{k,i}^* 是與邊界框迴歸有關的座標向量,前者是預測值,後者是Ground-Truth的邊界框;pk,ip_{k,i} 是第 iianchor爲第 kk 個目標的概率值;Ground-Truth的標籤 pk,ip_{k,i}^* 定義爲:
pk,i={1,     2k anchor,0,    .p_{k,i}^* = \left\{ \begin{aligned} 1&,\ \ \ \ 如果以步幅\ 2^k\ 下采樣得到的anchor是正樣例, \\ 0&,\ \ \ \ 其他情況. \end{aligned} \right.
tk,it_{k,i}^*的定義如下:
tk,i=(tx+12k2twsw,k+Δx,k,ty+12k2thsh,k+Δy,k,2ktwsw,k2Δx,k,2kthsh,k2Δy,k)\begin{aligned} t_{k,i}^*=(&t_x^* + \frac{1-2^k}{2}t_w^*s_{w,k}+\Delta_{x,k},\\ &t_y^* + \frac{1-2^k}{2}t_h^*s_{h,k}+\Delta_{y,k},\\ &2^kt_w^*s_{w,k}-2\Delta_{x,k},\\ &2^kt_h^*s_{h,k}-2\Delta_{y,k})\\ \end{aligned}

k<2k<2 時,Δx,k=Δy,k=0,sw,k=sh,k=1\Delta_{x,k}=\Delta_{y,k}=0,s_{w,k}=s_{h,k}=1
k=2k=2 時,Δx,k=0,Δy,k=th,sw,k=78,sh,k=1\Delta_{x,k}=0,\Delta_{y,k}=t_h^*,s_{w,k}=\frac{7}{8},s_{h,k}=1

四、訓練

使用帶有衝量(momentatum) 0.9 與權重衰減(weight decay) 0.0005 的隨機梯度下降法。

  • 數據集:WIDER FACE
  • batch size:16
  • 前期迭代八萬次的學習率:0.001;
  • 中期迭代兩萬次的學習率:0.0001;
  • 後期迭代兩萬次的學習率:0.00001;

參考材料

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