論文學習 RetinaFace: Single-stage Dense Face Localisation in the Wild

論文地址:RetinaFace: Single-stage Dense Face Localisation in the Wild
開源地址:https://github.com/deepinsight/insightface/tree/master/RetinaFace.

綜述

  RetinaFace是一個多任務學習的多尺度人臉檢測模型,可實現人臉處理領域的檢測和關鍵點提取,並應用了FPN的UpSample實現特徵融合(多尺度檢測)。該研究的額外收益,是通過更準確的檢測對齊,提升了人臉識別模型的準確率。以下圖片均來源於論文截圖。

背景介紹

  目前無約束人臉檢測已有了巨大的進步,但真實場景下人臉檢測的準確度和效率依然面臨挑戰,RetinaFace團隊在WIDERFACE數據集基礎上,通過標註5點關鍵點作爲人臉檢測訓練的額外監督信號,添加Mesh Decoder實現人臉三維編解碼進行自監督學習,顯著提升人臉檢測效果。

  RetinaFace技術路線的設計基於以下原因:

  • 特定特性的目標檢測:人臉檢測與普通目標檢測的相比,人臉快照的長寬比變化小(通常爲1~1.5),但尺度變化大,因此使用特徵金字塔(feature pyramid)以及可變性卷積網絡DCN。後者由微軟研究院於2017年提出,針對現實場景中目標在視角中呈現大小、姿態、視角變化甚至非剛體形變,在標準卷積採樣點添加一個可學習的偏移變量,使模型適應幾何形變特性的目標檢測(如何評價 MSRA 最新的 Deformable Convolutional Networks?),在2018年比賽中作用明顯;
  • single-stage detection:相比two-stage methods處理更快,也是目前主流的研究方向,缺點是誤檢多且定位精度差,需要解決訓練時的樣本不均衡問題;
  • extra supervision:人臉檢測包含人臉分類和位置迴歸,後續有基於檢測結果的級聯方法獲取關鍵點、MTCNN/STN在檢測時獲取關鍵點,作者在Mask R-CNN中發現類似關鍵點這樣的額外信息有助於提升目標檢測的準確度,因此將人臉關鍵點添加到人臉檢測中進行多任務學習;
  • Mesh Decoder:結合現在出現的通過前景進行3維建模的技術,在人臉中添加注意力機制來提升檢測效果,在現存的監督分支上並聯一個自監督分支來實現。(參考文獻Dense 3D Face Decoding就是本文的參與作者,應該和PRNet有關,Insightface上有個同名目錄,但目前沒放實質性內容。這模型確實好,就是預訓練模型輸出項太多,也不好從開源中找到直接合適的數據自己訓練,倒是可以參考一些第三方實現)。

核心技術

損失函數

  設定多任務訓練的損失函數:
L=Lcls(pi,pi)+λ1piLbox(ti,ti)+λ2piLpts(li,li)+λ3piLpixelpi    pi10Lcls(pi,pi)softmaxti(tx,ty,tw,th)ti(tx,ty,tw,th)Lbox(ti,ti)(smoothL1)li5(lx1,ly1,...,lx5,ly5)li5(lx1,ly1,...,lx5,ly5)Lpts(li,li)Lbox(ti,ti)LpixelDenseRegressionλ1,λ2,λ30.250.10.01 L=L_{cls}(p_i,p_i^*)+\lambda_1p_i^*L_{box}(t_i,t_i^*)\\+\lambda_2p_i^*L_{pts}(l_i,l_i^*)+\lambda_3p_i^*L_{pixel}\\ \begin{alignedat} \ &p_i&\ \ \ \ &人臉置信度\\ &p_i^*&&是人臉爲1,非人臉爲0\\ &L_{cls}(p_i,p_i^*)&&二分類softmax損失函數\\ &t_i&&預測位置(t_x,t_y,t_w,t_h)\\ &t_i^*&&標註位置(t_x^*,t_y^*,t_w^*,t_h^*)\\ &L_{box}(t_i,t_i^*)&&中心歸一化後的定位損失(smooth-L_1)\\ &l_i&&預測的5點座標(l_{x1},l_{y1},...,l_{x5},l_{y5})\\ &l_i^*&&標註的5點座標(l_{x1}^*,l_{y1}^*,...,l_{x5}^*,l_{y5}^*)\\ &L_{pts}(l_i,l_i^*)&&同L_{box}(t_i,t_i^*)方法\\ &L_{pixel}&&Dense Regression損失\\ &\lambda_1,\lambda_2,\lambda_3&&損失平衡權重,分別爲0.25、0.1、0.01 \end{alignedat}
  即在人臉檢測的監督中加入檢測框和關鍵點的損失監督信號。這裏的中心歸一化就是將標註的點,放到以標註的anchor中心爲原點的座標上,並分別除以anchor的長寬。

Dense Regression Branch

圖神經網絡
  Mesh Decoder是種圖卷積方法,相比二維卷積對歐式網格感受野計算加權和,圖卷積是計算連接兩個頂點的最小邊數。

G=(V,ξ)L=Dξy=gθ(L)x=k=0K1θkTk(L~)x=[xˉ0,...,xˉK1]θLpixel=1WHiWjHR(DPST,Pcam,Pill)i,jIi,j1V    ξnnDDii=jξijgθkθL~Tk(L~)L~kPSTDPSTPcam[xc,yc,zc,xc,yc,zc,fc]Pill[xl,yl,zl,rl,gl,bl,ra,ga,ba]R(DPST,Pcam,Pill)Ii,jWH G=(V,\xi)\\ L=D-\xi\\ y=g_\theta(L)x=\sum_{k=0}^{K-1}\theta_kT_k(\tilde L)x=[\bar{x}_0,...,\bar{x}_{K-1}]\theta\\ L_{pixel}=\dfrac{1}{W*H}\sum_i^W\sum_j^H||R(D_{P_{ST}},P_{cam},P_{ill})_{i,j}-I_{i,j}^*||_1\\ \begin{alignedat} \ &V&\ \ \ \ &包含人臉形狀和紋理信息的編碼頂點集\\ &\xi&&n*n的編碼點間連接狀態稀疏矩\\ &D&&對角矩陣,D_{ii}=\sum_j\xi_{ij}\\ &g_\theta&&k階截斷的切比雪夫多項式\\ &\theta&&切比雪夫係數向量\\ &\tilde L&&縮放尺度拉普拉斯算子\\ &T_k(\tilde L)&&在\tilde L下估計的k階拉普拉斯多項式\\ &P_{ST}&&預測的形狀和紋理參數\\ &D_{P_{ST}}&&圖卷積結果\\ &P_{cam}&&攝像頭參數[x_c,y_c,z_c,x_c',y_c',z_c',f_c]\\ &P_{ill}&&補光參數[x_l,y_l,z_l,r_l,g_l,b_l,r_a,g_a,b_a]\\ &R(D_{P_{ST}},P_{cam},P_{ill})&&投影得到的二維人臉\\ &I_{i,j}^*&&長寬爲W、H的標定裁剪塊 \end{alignedat}

實驗說明

數據

  WIDER FACE,在此基礎上根據標註關鍵點的難易程度劃分5擋:

  • 4127張高清人臉,可準確標註出68個關鍵點;
  • 12636張較清晰人臉,能標註出68個關鍵點(大概是輪廓模糊)
  • 38140張較模糊人臉,能準確標註出5個關鍵點(輪廓非常模糊)
  • 50024張模糊人臉,能標註出5個關鍵點(只能勉強看出是人臉)
  • 94095張沒法標註的人臉(只通過區域,已經看不出是什麼)

設置

網絡結構
  特徵金字塔獲取5層多尺度特徵,骨架網絡是ImageNet-11k數據集上訓練的ResNet152分類模型,並在最後接上一個通過“Xavier”隨機初始化的3x3卷積層,stride=2。

  Context Module,採用可變卷積網絡(DCN)對每個尺度的輸出添加後處理模塊。

  損失權重,負樣本只用分類損失,正樣本添加1x1的卷積進行訓練,mesh decoder直接使用預訓練模型。

特徵金字塔
  Anchor,對不同的金字塔輸出得到anchor,訓練的時候,與標註框的IOU大於0.5的匹配爲TP,小於0.3的匹配爲FP,中間未匹配部分在訓練時忽略;採用OHEM解決樣本不均衡問題,主要策略爲對負樣本按照損失值排序,按照與正樣本3:1的比例挑選靠前的部分。

  數據增廣,從原圖中隨機摳取正方形區域,並resize到640x640,正方形摳選區域的邊長爲原圖最小邊的0.3~1,如果某人臉標註框的中心在摳選區域內,則保留該標註爲當前摳選區域中的有效人臉;同時對圖像按照0.5的概率進行隨機水平翻轉及顏色空間變換。

  訓練參數

項目 參數名 參數值
訓練設備 P40(24GB) x 4
優化算法 optimiser SGD
動量 momentum 0.9
權重衰減 weight decay 0.0005
批量 batch size 8 x 4
學習率 lr 初始化1e-3,
5 epochs 後1e-2,
55 epochs 後1e-3,
68 epochs 後1e-4
總迭代數 epochs 80

  評價方法,採用WIDER FACE的評價標準,並對測試圖像水平翻轉以及短邊縮放到[500, 800, 1100, 1400, 1700],按照預測框與標註框0.4的IOU閾值進行統計。

訓練結果

多任務學習的性能提升

多任務學習
  進行不同任務組合的性能對比,包含只有人臉檢測、人臉檢測+人臉關鍵點、人臉檢測+dense regression、人臉檢測+人臉關鍵點+dense regression,實驗證明通過多任務學習可以提高人臉檢測的性能。其中只增加dense regression方法時會出現hard檔數據檢測性能下降,作者認爲可能是dense regression在該場景下處理比較困難。

最終模型性能

  檢測準確度,作爲目前性能最好的開源人臉檢測算法,在論文發佈時自然是WIDER FACE中準確度最好的,目前經次於AInnoFaceRefineFace

  關鍵點、3維點集等也達到不錯的效果,其中dense regression是通過自監督學習實現,在複雜場景下處理效果不佳,作者認爲可能是非對齊、1x1x256的緊湊特徵量的影響。

  對人臉識別的幫助,基於更高性能的人臉檢測和關鍵點對齊,原有人臉識別模型性能得到進一步提升,即證明了人臉對齊對人臉識別的影響,也證明了RetinaFace的應用價值。

  推理效率,除了在GPU上運行ResNet152,作者還在P40、i7-6700K、RK3399上測試了MobileNet的性能,在準確度略微下降的情況下取得更高的推理速度。

  

  

發佈了22 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章