人臉檢測之RetinaFace

 

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

代碼:https://github.com/deepinsight/insightface/tree/master/RetinaFace

https://github.com/biubug6/Pytorch_Retinaface

 

論文基於RetinaNet進行改進,提出了RetinaFace。傳統的目標檢測框架RetinaNet只進行分類,邊框預測。RetinaFace再此基礎上,增加了人臉關鍵點landmark預測,稠密3D人臉預測。

主要貢獻:

  1. 人工在人臉檢測數據集WIDER FACE 上標註了人臉的5個關鍵點,通過增加5個關鍵點的loss約束,使得在困難樣本上的檢測效果明星提升。
  2. 增加了基於自監督的網格解碼分支,用於預測3D人臉形狀。
  3. 在WIDER FACE 的hard 測試集上,取得了91.4%的效果。
  4. 在IJB-C 測試集上,使用RetinaFace做預處理,可以獲得更佳的人臉識別精度(TAR=89:59% for FAR=1e-6)
  5. 採用mobileNetv1這樣的輕量框架,RetinaFace可以在VGA分辨率下,單核cpu實現實時推理。
  6. 貢獻了人臉關鍵點的額外標註及其代碼。

 

人臉的特點:

很小的長寬比,1:1 ---- 1:1.5 ,很大的尺度scale變化。

 

Two-stage v.s. single-stage :

one-stage更高效,具有更高的召回率,缺點是誤檢率也大,框的定位不夠準確。

 

Loss設計:

Lcls表示分類的loss,

Lbox表示人臉框的loss,

Lpts表示人臉關鍵點的loss,

Lpixel表示稠密3D人臉的2D投影圖和原圖之間的L1 loss。λ1-λ3 分別爲0.25,0.1,0.01

 

Lpixel分支,使用了圖卷積,相比傳統卷積具有更少的參數量。

傳統卷積的參數量大小爲K*K*Cin*Cout,圖卷積的參數量大小爲K*Cin*Cout。其中K表示連接的線路個數。如上圖,K=1表示和紅色點直接相連,K=2表示距離紅色點路徑=2的所有點,K=3表示距離紅色點路徑=3的所有點。

稠密迴歸分支,分別通過圖卷積預測形狀和紋理參數Pst,維度爲128維。相機參數Pcam,包括相機的位置,姿勢,焦距,維度爲7維。光源參數Pill,包括光源的位置,顏色,環境光顏色,維度爲9維。通過這3個預測,生成3D的人臉mesh,然後再將其投影爲2D的圖片,計算其和輸入圖片的L1距離。

 

網絡結構:

整體結構爲Resnet-152+FPN,或者MobileNetv1+FPN的設計,其中FPN包括,P2,P3,P4,P5,P6共5個分支。

Context Module 模塊,採用可變形卷積DCN來替換傳統的3*3卷積。

 

Anchor設計:

 

WIDER FACE 額外標註:

作者將WIDER FACE中的人臉數據集分成5個檔次,分別爲無可置疑的68個關鍵點,可以標註68個關鍵點,無可置疑的5個關鍵點,可以標註5個關鍵點,可以被紋理區分。

 

實驗結果:

 

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