天天看點

【人臉關鍵點】——PFLD人臉關鍵點檢測解讀

參考:https://zhuanlan.zhihu.com/p/73546427

【人臉關鍵點】——PFLD人臉關鍵點檢測解讀

摘要: 來自天津大學、武漢大學、騰訊AI實驗室、美國天普大學,在曉龍845上能做到140fps的人臉關鍵點檢測器。

應用場景: 人臉特效,疲勞檢測,美妝,

非官方code: https://github.com/polarisZhao/PFLD-pytorch

1. 挑戰

  • 局部變化:表情、局部極端光照(如高亮和陰影)和遮擋會給面部圖像帶來部分變化/幹擾
  • 全局變化:姿态和成像品質是影響人臉圖像整體外觀的兩個主要因素,當對人臉的整體結構進行錯誤估計時,會導緻很大一部分标志點的定位效果不佳
  • 資料平衡
  • 模型效率

針對上面的問題,本篇文章從,模型+loss兩個方面進行設計改進。(其實作在深度學習的論文,會分析相關的挑戰,但是并不會針對對應的挑戰設計解決方案,更多的還是在通用AI的層面進行設計)

2. 模型結構

【人臉關鍵點】——PFLD人臉關鍵點檢測解讀

圖1 模型結構圖

【人臉關鍵點】——PFLD人臉關鍵點檢測解讀

圖2 人臉關鍵點

【人臉關鍵點】——PFLD人臉關鍵點檢測解讀

圖3 輔助分支

  • 整個模型基于mobilenetv2設計
  • 上面的橙色框為人臉關鍵點預測分支。mobilenet-v2提取特征,3個不同尺度的特征融合之後,接全連接配接層輸出196個值,98個關鍵點
  • 綠色框為輔助分支。經conv特征加強後,經fc輸出3個值,分别代表歐拉角
  • 輔助分支不在實際推理的時候使用,隻用于訓練

3. 訓練

  1. PFLD的模型訓練政策

一開始我們設計的那個簡單的網絡,采用的損失函數為MSE,是以為了平衡各種情況的訓練資料,我們隻能通過增加極端情況下的訓練資料、平衡各類情況下的訓練資料的比例、控制資料資料的采樣形式(非完全随機采樣)等方式進行性能調優。(re-sample)

  1. 損失函數(re-weight)
    【人臉關鍵點】——PFLD人臉關鍵點檢測解讀

上式中 wn為可調控的權值函數(針對不同的情況選取不同的權值,如正常情況、遮擋情況、暗光情況等等)。C為6,表示有6個類别。theta為人臉姿态的三維歐拉角(K=3),d為回歸的landmark和groundtrue的度量(一般情況下為MSE,也可以選L1度量)。M表示批量大小。N表示關鍵點個數為98。該損失函數設計的目的是,對于樣本量比較大的資料(如正臉,即歐拉角都相對較小的情況),給予一個小的權值,在進行梯度的反向傳播的時候,對模型訓練的貢獻小一些;對于樣本量比較少的資料(側臉、低頭、擡頭、表情極端),給予一個較大的權值,進而使在進行梯度的反向傳播的時候,對模型訓練的貢獻大一些。該模型的損失函數的設計,非常巧妙的解決了平衡各類情況訓練樣本不均衡的問題。

  1. 輔助網絡
    【人臉關鍵點】——PFLD人臉關鍵點檢測解讀
    PFLD的訓練過程中引入了一個子網絡,用以監督PFLD網絡模型的訓練。該子網絡僅在訓練的階段起作用,在inference的時候不參與;該子網絡的用處,是對于每一個輸入的人臉樣本,對該樣本進行三維歐拉角的估計,其groundtruth由訓練資料中的關鍵點資訊進行估計,雖然估計的不夠精确,但是作為區分資料分布的依據已經足夠了,畢竟還該網絡的目的是監督和輔助訓練收斂,主要是為了服務關鍵點檢測網絡。

4. 總結

  • 論文從re-sample,re-weight,資料集擴充三個方面來對多場景的人臉挑戰進行處理。但是這樣需要資料集中增加類别标簽,如:模糊,遮擋,卡通…(暫時還沒有看到非監督的方法)
  • 論文利用人臉關鍵點的另一個相關名額——歐拉角,進行輔助監督學習。其實人臉關鍵點隻需要紅色的虛線框,用不用歐拉角都無所謂。論文的思路是:歐拉角算是人臉姿态中的一個相關量。是以增加一個輔助分支進行監督學習。

總結,論文從通用AI設計的資料平衡+相關名額輔助兩個主要方面進行人臉關鍵點檢測器的設計

4. reference

  1. https://arxiv.org/pdf/1902.10859.pdf
  2. https://zhuanlan.zhihu.com/p/73546427

繼續閱讀