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

原論文:《J. Deng, J Guo, Y Zhou, et al. RetinaFace: Single-stage Dense Face Localisation in the Wild[J]. arXiv:1905.00641v2》
最後面有參考代碼的 Github 鏈接

論文的兩個特點

  1. 引入了人臉關鍵點信息;
  2. 引入了人臉的三維信息。

骨幹網絡:ResNet-152

1. 結構圖如下:

在這裏插入圖片描述

  • 它使用了骨幹網絡中殘差階段 C2C_2C3C_3C4C_4 以及 C5C_5 的特徵圖;
  • C5C_5 後使用步長爲 2 的 3×33\times3 卷積構建了 C6C_6在訓練時,這個卷積層用 Xavier 方法進行隨機初始化
  • C2C_2C3C_3C4C_4 以及 C5C_5 的特徵圖構建 特徵金字塔 (Feature Pyramid)中的各層 P2P_2P3P_3P4P_4 以及 P5P_5
  • C6C_6 作爲 P6P_6
  • P2P_2P3P_3P4P_4P5P_5 以及 P6P_6 上分別使用 上下文模塊 (Context Module);
  • 每個上下文模塊後面均跟一個多任務模塊及相應的損失函數。

這裏的 上下文模塊 就是 SSH 模型中的檢測器模塊,或者 PyramidBox 模型中的 CPM 模塊
上下文模塊 中所有 3×33\times3 卷積層替換爲 可形變卷積網絡(Deformable Convolution)

2. Anchor 的設置

Anchor 的寬高比爲 1,特徵金字塔中每層 Anchor 的尺寸與步長如下表所示。Anchor 一共 102300 個,其中有 75% 在 P2P_2 上。

特徵金字塔 步長 Anchor尺寸
P2(160×160×256)P_2(160\times160\times256) 4 16、20.16、25.40
P3(80×80×256)P_3(80\times80\times256) 8 32、40.32、50.80
P4(40×40×256)P_4(40\times40\times256) 16 64、80.63、101.59
P5(20×20×256)P_5(20\times20\times256) 32 128、161.26、203.19
P6(10×10×256)P_6(10\times10\times256) 64 256、322.54、406.37
  • IoU>0.5IoU>0.5 時,將 anchor 匹配到 Ground-Truth 上;
  • IoU<0.3IoU<0.3 時,將 anchor 匹配到 Background 上;
  • 使用分類的值對負樣本 anchor 進行排序,僅使用第一個;
  • 使用 OHEM 緩解正負樣本的不平衡;
  • 最終正負 anchor 樣本比爲 1:31:3

3. 損失函數

在這裏插入圖片描述
對訓練的第 ii 個 anchor,待最小化的損失函數爲:
L=Lcls(pi,pi)+λ1piLbox(ti,ti)+λ2piLpts(li,li)+λ3Lpixel\begin{aligned}\\ L&=L_{cls}(p_i,p_i^*)+\lambda_1 p_i^*L_{box}(t_i,t_i^*)\\ &+\lambda_2 p_i^*L_{pts}(l_i,l_i^*)+\lambda_3 L_{pixel}\\ \end{aligned}
其中,

  • λ1=0.25\lambda_1=0.25λ2=0.1\lambda_2=0.1λ3=0.01\lambda_3=0.01
  • pip_i^* 是 anchor 的正負標記,1 爲正樣本,0 爲負樣本;
  • pip_i 是 anchor 作爲人臉的概率;
  • LclsL_{cls} 是人臉的二分類 softmax 損失函數
  • ti={tx,ty,tw,th}it_i^*=\{t_x^*,t_y^*,t_w^*,t_h^*\}_i 是與正樣本 anchor 相關的 Ground-Truth 位置座標;
  • ti={tx,ty,tw,th}it_i=\{t_x,t_y,t_w,t_h\}_i 是模型預測的人臉框位置座標;
  • LboxL_{box} 是人臉框迴歸的 Smooth L1Smooth\ L_1 損失函數
  • li={lx1,ly1,...,lx5,ly5}il_i^*=\{l_{x_1}^*,l_{y_1}^*,...,l_{x_5}^*,l_{y_5}^*\}_i 是與正樣本 anchor 相關的五個人臉關鍵點座標;
  • li={lx1,ly1,...,lx5,ly5}il_i=\{l_{x_1},l_{y_1},...,l_{x_5},l_{y_5}\}_i 是模型預測的五個人臉關鍵點座標;
  • LptsL_{pts} 是人臉關鍵點回歸的損失函數
  • LpixelL_{pixel} 是稠密迴歸損失函數(Dense Regression Loss),用於控制模型對人臉 3 維信息的利用
    Lpixel=1WHiWjHR(DPST,Pcam,Pill)i,jIi,j1L_{pixel}=\frac{1}{W*H}\sum_{i}^{W}\sum_{j}^{H}||\mathcal{R}(\mathcal{D}_{P_{ST}},P_{cam},P_{ill})_{i,j}-I_{i,j}^*||_1

其中,

  1. WWHH 分別是 Anchor Crop Ii,jI_{i,j}^* 的寬與高;
  2. Pcam={xc,yc,zc,xc,yc,zc,fc}P_{cam}=\{x_c,y_c,z_c,x_c',y_c',z_c',f_c\} 是三維的攝像頭參數,這裏面的內容分別代表 攝像頭位置 {xc,yc,zc}\{x_c,y_c,z_c\}、姿態 {xc,yc,zc}\{x_c',y_c',z_c'\}、焦距 fcf_c
  3. Pill={xl,yl,zl,rl,gl,bl,ra,ga,ba}P_{ill}=\{x_l,y_l,z_l,r_l,g_l,b_l,r_a,g_a,b_a\} 是三維的照明參數,這裏面的內容分別代表 點光源位置 {xl,yl,zl}\{x_l,y_l,z_l\}、點光源色值 {rl,gl,bl}\{r_l,g_l,b_l\}、側光色值 {ra,ga,ba}\{r_a,g_a,b_a\}
  4. PSTR128P_{ST}\in \mathcal{R}^{128} 是根據圖片預測的人臉形狀與紋理參數;
  5. DPST\mathcal{D}_{P_{ST}} 是着色的網狀結構(Coloured-Mesh),它是由網狀結構解碼器(Mesh Decoder)對 PSTP_{ST} 解碼得到的;
  6. R(DPST,Pcam,Pill)\mathcal{R}(\mathcal{D}_{P_{ST}},P_{cam},P_{ill})可微渲染器,負責將含有三維信息的 {DPST,Pcam,Pill}\{\mathcal{D}_{P_{ST}},P_{cam},P_{ill}\} 映射爲一個二維的圖片。
  7. 論文裏使用的 Mesh Decoder 是在論文《Dense 3d
    face decoding over 2500fps: Joint texture and shape convolutional mesh decoders
    》中預訓練得到的。

4、訓練

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


參考材料

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