原論文:《J. Deng, J Guo, Y Zhou, et al. RetinaFace: Single-stage Dense Face Localisation in the Wild[J]. arXiv:1905.00641v2》
最後面有參考代碼的 Github 鏈接
論文的兩個特點:
- 引入了人臉關鍵點信息;
- 引入了人臉的三維信息。
骨幹網絡:ResNet-152
1. 結構圖如下:
- 它使用了骨幹網絡中殘差階段 C2、 C3、C4 以及 C5 的特徵圖;
- 在 C5 後使用步長爲 2 的 3×3 卷積構建了 C6。在訓練時,這個卷積層用 Xavier 方法進行隨機初始化;
- 由 C2、 C3、C4 以及 C5 的特徵圖構建 特徵金字塔 (Feature Pyramid)中的各層 P2、 P3、P4 以及 P5;
- 將 C6 作爲 P6;
- 在 P2、 P3、P4、P5 以及 P6 上分別使用 上下文模塊 (Context Module);
- 每個上下文模塊後面均跟一個多任務模塊及相應的損失函數。
這裏的 上下文模塊 就是 SSH 模型中的檢測器模塊,或者 PyramidBox 模型中的 CPM 模塊。
上下文模塊 中所有 3×3 卷積層替換爲 可形變卷積網絡(Deformable Convolution)
2. Anchor 的設置
Anchor 的寬高比爲 1,特徵金字塔中每層 Anchor 的尺寸與步長如下表所示。Anchor 一共 102300 個,其中有 75% 在 P2 上。
特徵金字塔 |
步長 |
Anchor尺寸 |
P2(160×160×256) |
4 |
16、20.16、25.40 |
P3(80×80×256) |
8 |
32、40.32、50.80 |
P4(40×40×256) |
16 |
64、80.63、101.59 |
P5(20×20×256) |
32 |
128、161.26、203.19 |
P6(10×10×256) |
64 |
256、322.54、406.37 |
- 當 IoU>0.5 時,將 anchor 匹配到 Ground-Truth 上;
- 當 IoU<0.3 時,將 anchor 匹配到 Background 上;
- 使用分類的值對負樣本 anchor 進行排序,僅使用第一個;
- 使用 OHEM 緩解正負樣本的不平衡;
- 最終正負 anchor 樣本比爲 1:3。
3. 損失函數
對訓練的第 i 個 anchor,待最小化的損失函數爲:
L=Lcls(pi,pi∗)+λ1pi∗Lbox(ti,ti∗)+λ2pi∗Lpts(li,li∗)+λ3Lpixel
其中,
- λ1=0.25,λ2=0.1,λ3=0.01;
- pi∗ 是 anchor 的正負標記,1 爲正樣本,0 爲負樣本;
- pi 是 anchor 作爲人臉的概率;
- Lcls 是人臉的二分類 softmax 損失函數;
- ti∗={tx∗,ty∗,tw∗,th∗}i 是與正樣本 anchor 相關的 Ground-Truth 位置座標;
- ti={tx,ty,tw,th}i 是模型預測的人臉框位置座標;
- Lbox 是人臉框迴歸的 Smooth L1 損失函數;
- li∗={lx1∗,ly1∗,...,lx5∗,ly5∗}i 是與正樣本 anchor 相關的五個人臉關鍵點座標;
- li={lx1,ly1,...,lx5,ly5}i 是模型預測的五個人臉關鍵點座標;
- Lpts 是人臉關鍵點回歸的損失函數;
- Lpixel 是稠密迴歸損失函數(Dense Regression Loss),用於控制模型對人臉 3 維信息的利用:
Lpixel=W∗H1i∑Wj∑H∣∣R(DPST,Pcam,Pill)i,j−Ii,j∗∣∣1
其中,
- W 與 H 分別是 Anchor Crop Ii,j∗ 的寬與高;
- Pcam={xc,yc,zc,xc′,yc′,zc′,fc} 是三維的攝像頭參數,這裏面的內容分別代表 攝像頭位置 {xc,yc,zc}、姿態 {xc′,yc′,zc′}、焦距 fc;
- Pill={xl,yl,zl,rl,gl,bl,ra,ga,ba} 是三維的照明參數,這裏面的內容分別代表 點光源位置 {xl,yl,zl}、點光源色值 {rl,gl,bl}、側光色值 {ra,ga,ba};
- PST∈R128 是根據圖片預測的人臉形狀與紋理參數;
- DPST 是着色的網狀結構(Coloured-Mesh),它是由網狀結構解碼器(Mesh Decoder)對 PST 解碼得到的;
- R(DPST,Pcam,Pill) 是 可微渲染器,負責將含有三維信息的 {DPST,Pcam,Pill} 映射爲一個二維的圖片。
- 論文裏使用的 Mesh Decoder 是在論文《Dense 3d
face decoding over 2500fps: Joint texture and shape convolutional mesh decoders》中預訓練得到的。
4、訓練
使用帶有衝量(momentatum) 0.9 與權重衰減(weight decay) 0.0005 的隨機梯度下降法。
參考材料