1. 程式人生 > >人臉關鍵點對齊

人臉關鍵點對齊

轉:https://www.jianshu.com/p/e4b9317a817f

摘要: 從傳統方法到深度學習方法,對人臉關鍵點定位/人臉對齊的發展進行梳理,對該領域中經典的方法,最新成果進行彙總,並給出相應的paper原文,專案主頁及程式碼連結。重點介紹深度學習的幾種最新方法。

1. Conception

人臉關鍵點定位(Facial landmark localization): 在人臉檢測的基礎上,根據輸入的人臉影象,自動定位出面部關鍵特徵點,如眼睛、鼻尖、嘴角點、眉毛以及人臉各部件輪廓點等,輸入為人臉外觀影象,輸出為人臉的特徵點集合,見下圖:

圖1. 人臉對齊處理流程

人臉對齊(Facial alignment):

可以看作在一張人臉影象搜尋人臉預先定義的點(也叫人臉形狀),通常從一個粗估計的形狀開始,然後通過迭代來細化形狀的估計。在搜尋的過程中,兩種不同的資訊被使用,一個是人臉的外觀(Appearance) ,另一個是形狀(Shape)。形狀提供一個搜尋空間上的約束條件。

人臉對齊主要將人臉中的 eyes, mouth, nose and chin 檢測出來,用特徵點標記出來。

人臉對齊是一箇中間步驟,首先是人臉檢測,然後是人臉對齊,人臉對齊的結果可以用於:
人臉驗證, 人臉識別(Face recognition),屬性計算(Attribute computing),表情識別(Expression recognition), 姿態估計(Pose Estimation) 等。
實際應用中人臉的不同尺度,姿態,遮擋,光照,複雜表情等對人臉對齊具有較大的挑戰性 。

綜合考慮傳統方法和目前最新進展,從技術實現上可將人臉關鍵點檢測分為2大類:生成式方法(Generative methods) 和 判別式方法(Discriminative methods)。
Generative methods 構建人臉shape和appearance的生成模型。這類方法將人臉對齊看作是一個優化問題,來尋找最優的shape和appearance引數,使得appearance模型能夠最好擬合輸入的人臉。這類方法包括:

  • AAM (Active Appearnce Model)
  • ASM(Active Shape Model)

Discriminative methods直接從appearance推斷目標位置。這類方法通常通過學習獨立的區域性檢測器或迴歸器來定位每個面部關鍵點,然後用一個全域性的形狀模型對預測結果進行調整,使其規範化。或者直接學習一個向量迴歸函式來推斷整個臉部的形狀。這類方法包括傳統的方法以及最新的深度學習方法,具體分為如下幾種經典的實現方式:

  • Constrained local models (CLMs)
  • Deformable part models (DPMs)
  • 基於級聯形狀迴歸的方法(Cascaded regression)
  • 基於深度學習的方法

從空間維度來考慮,以上這些方法又可分為2D方法,3D方法,稀疏方法和密集方法等。需要指出的是,由於深度學習方法可以很好的實現對多工的處理,因此有很多新的演算法可以同時完成對2D關鍵點和3D關鍵點的同時獲取,進而可進一步支援後續的多工分析,如人臉對齊,3D姿態分析等。

在人臉關鍵點定位的發展史上,具有里程碑式的有如下五種方法:

  • 1995 年,Cootes 的 ASM(Active Shape Model)。
  • 1998 年,Cootes 的 AAM(Active Appearance Model) 演算法。
  • 2006 年,Ristinacce 的 CLM(Constrained Local Model)演算法。
  • 2010 年,Rollar 的 cascaded Regression 演算法。
  • 2013 年,想港中文大學的湯曉歐和Sun Yi等開創深度學習人臉關鍵點檢測的先河,首次將 CNN 應用到人臉關鍵點定位上。

2. 2D人臉對齊

2.1 AAM(Active Appearance Model)/ASM/Snake

參考文獻:An Introduction to Active Shape Models. Constrained Local Model for FaceAlignment. Xiaoguang Yan(2011).
ASM模型起源於snake模型(作為動態邊緣分割的snake模型),該方法用一條由n個控制點組成的連續閉合曲線作為snake模型,再用一個能量函式作為匹配度的評價函式,首先將模型設定在目標物件預估位置的周圍,再通過不斷迭代使能量函式最小化,當內外能量達到平衡時即得到目標物件的邊界與特徵。
1989年yuille等人此提出使用引數化的可變形模板來代替snake模型,可變形模板概念的提出為aam的產生奠定了理論基礎。
1995年cootes等人提出的asm演算法是aam的直接前身,asm採用引數化的取樣形狀來構成物件形狀模型,並利用pca方法建立描述形狀的控制點的運動模型,最後利用一組引數組來控制形狀控制點的位置變化從而逼近當前物件的形狀,該方法只單純利用物件的形狀,因此準確率不高。
1998年,cootes等人在asm演算法的基礎上首先提出aam,與asm的不同之處是他不僅利用了物件的形狀資訊而且利用了物件的紋理資訊。

2.2 CLMS(Constrained Local Model)

2.3 級聯迴歸方法(Cascaded regression)

  • CPR(Cascaded Pose Regression)
    CPR通過一系列迴歸器將一個指定的初始預測值逐步細化,每一個迴歸器都依靠前一個迴歸器的輸出來執行簡單的影象操作,整個系統可自動的從訓練樣本中學習。
    人臉關鍵點檢測的目的是估計向量(face shape) S=(x1, x2, ..., xK) ,其中K表示關鍵點的個數,由於每個關鍵點有橫縱兩個座標,所以S得長度為2K。CPR檢測流程一共有T個階段,在每個階段中首先進行特徵提取f,這裡使用的是shape-indexed features,也可以使用諸如HOG、SIFT等人工設計的特徵,或者其他可學習特徵(learning based features),然後通過訓練得到的迴歸器R來估計增量ΔS( update vector),把ΔS加到前一個階段的S上得到新的S,這樣通過不斷的迭代即可以得到最終的S(shape)。
    CPR中主要的操作是向量相加,不僅有效而且計算複雜度較低,所以近年來在face alignment中廣泛應用

  • ESR
    ESR(Explicit Shape Regression)該方法出自2012的cvpr,是微軟亞洲研究院(MSRA)孫劍組的作品。該文章主要提出了3個方法:
    (1)2層級聯的boost迴歸(two-level boosted regression): 該方法最早是P Dollar大神在CVPR2010中Cascaded pose regression這篇論文中提出。作者這裡的2層boost迴歸,第一層有10級,第二層有500級,這樣分層的好處,比單獨使用一個5000級而只有1層的效果要好很多。其中,第一層中的特徵維度不固定,第二層中中的特徵維度固定。
    (2)基於形狀索引的特徵(shape-indexed features): 該形狀索引特徵,計算迴歸的位置和真實位置之間的畫素差,類似於中心差分算梯度,從而得到最終特徵向量,並且該特徵向量採用了局部座標系,相比全域性座標系具有更好的魯棒性。
    (3)基於相關係數的特徵選擇方法(correlation-based feature selection method):這裡,需要從之前提取的400*400個特徵中選擇出最右代表性的前f個。簡單的說,就是計算所有特徵向量的相關係數,取前f個係數最高的作為最終的輸出特徵向量。

    github程式碼: code

  • ERT(Ensemble of Regression Trees)
    dlib實現人臉關鍵點定位採用的方法。

  • Face Alignment at 3000 FPS
    cvpr2013, ESR是基礎版本的形狀迴歸,ERT將回歸樹修改為GBDT,由原始的直接回歸形狀,改進為迴歸形狀殘差,而LBF,是加速特徵提取,由原來的畫素差分特徵池,改為隨機選擇點。該方法主要體現在2個方面
    (1)LBF特徵的提取
    作者通過在特徵點附近隨機選擇點做殘差來學習LBF特徵,每一個特徵點都會學到由好多隨機樹組成的隨機森林,因此,一個特徵點就得用一個隨機森林生成的0,1特徵向量來表示,將所有的特徵點的隨機森林都連線到一起,生成一個全域性特徵,後續過程就可以使用該全域性特徵做全域性線性迴歸了。

image

(2)基於cascade的級聯的隨機森林做全域性線性迴歸
所謂的線性迴歸,其實就是一個不斷迭代的過程,對於每一個stage中,用上一個stage的狀態作為輸入來跟新,產生下一個stage的輸入,以此類推,直到達到最底層stage。

image

如上公式所示,I為輸入影象,St-1為第t-1stage的形狀,fait為t stage的特徵匹配函式,Wt為線性迴歸矩陣。

 

image

訓練過程,就是學習fait和wt的一個過程,測試過程就是用訓練好的fait和wt對提取的LBF特徵做迴歸的過程。 對於每個stage,越往下,所選擇的隨機點的範圍就越小,特徵點定位精度就越好。

image

github程式碼: code

2.4 CNN 方法

  • DCNN
    香港中文大學湯曉歐,SunYi等人作品,首次將CNN用於人臉關鍵點檢測。總體思想是由粗到細,實現5個人臉關鍵點的精確定位。網路結構分為3層:level 1、level 2、level 3。每層都包含多個獨立的CNN模型,負責預測部分或全部關鍵點位置,在此基礎上平均來得到該層最終的預測結果。

image.png

  1. level1 粗定位,包含3個CNN:F1定位所有的5個關鍵點, EN1用於定位:左眼+右眼+鼻子 三個特徵點, NM1用於定位:左嘴角+右嘴角+鼻子 三個特徵點。除輸入影象大小和輸出維度不同(F1 輸入39x39整個人臉影象, 輸出5x2個座標點;EN1: 輸入31x39 人臉上半部區域,輸出3x2,NM1:輸入31x39 人臉下半部區域,輸出3x2)3個CNN的網路結構,引數完全一致。3個網路輸出,在每個點的預測結果上做平均,得到本層的最終輸出
  2. level2精確定位,包含10個CNN,每兩個CNN負責預測同一個關鍵點,然後取平均得到這一點的精確預測。輸入為在level1輸出的關鍵點周圍的區域性裁剪影象。
  3. level3更精確定位,結構和作用與level2一致,10個CNN,兩兩平均,只是輸入的影象是在leve2關鍵點基礎上做了更小的裁剪。

雖然作者沒有明確說這個問題,但是很明顯的是,經過level-1,得到了一個相對較好的初始化。
在這方面,face++ 發表在ICCV-2013的paper(Extensive facial landmark localization with coarse-to-fine convolutional network cascade)同樣有這麼個“初始化”的操作。借鑑別的文獻中的idea:區域性共享權值(locally sharing weights),理論聽起來挺有道理的。傳統的權值共享認為某一個特徵會影象的不同位置出現,所以採用全域性權值共享。但是人臉是由比較規範的結構,如人眼就是在上部,鼻子就是在中部,嘴就是在下部,因此應該採用區域性權值共享。

  • TCNN
  • MTCNN

  • LAB (LAB-Look at Boundary A Boundary-Aware Face Alignment Algorithm )
    2018cvpr 清華&商湯作品。借鑑人體姿態估計,將邊界資訊引入關鍵點回歸上。網路包含3個部分:邊界熱度圖估計模組(Boundary heatmap estimator),基於邊界的關鍵點定位模組( Boundary-aware landmarks regressor )和邊界有效性判別模組(Boundary effectiveness discriminator)

     

    LAB網路結構

  1. 邊界熱度圖估計模組:採用stacked hourglass network 和 message passing layers。輸入人臉影象,輸出人臉邊界熱度圖來表示面部的幾何結構。人臉面部的各個器官邊界共構成K個邊界。每個stack結束時,特徵圖被分成K個分支,分別送給各個對應型別的邊界熱度圖估計。最終生成的熱度圖與輸入原始影象進行融合,作為關鍵點定位模組的輸入。
  2. 基於邊界的關鍵點定位模組,利用邊界資訊,通過4階res-18網路來定位關鍵點
  3. 邊界有效性判別模組,由於邊界熱度圖在關鍵點定位中起著非常重要的作用,因此需要對生成的邊界資訊的準確性進行評判。該模組採用對抗網路,評判邊界熱度圖的有效性。

3. 3D人臉對齊

3DMM(3D Morphable Model)

3.1 3DDFA: Face Alignment Across Large Poses- A 3D Solution

自動化所作品, 解決極端姿態下(如側臉),一些特徵點變了不可見,不同姿態下的人臉表觀也存在巨大差異使得關鍵點定位困難等問題,本文提出一種基於3D人臉形狀的定位方法3DDFA,演算法框架為:
(1) 輸入為100x100的RGB影象和PNCC (Projected Normalized Coordinate Code) 特徵,PNCC特徵的計算與當前形狀相關,可以反映當前形狀的資訊;演算法的輸出為3D人臉形狀模型引數
(2) 使用卷積神經網路擬合從輸入到輸出的對映函式,網路包含4個卷積層,3個pooling層和2個全連線層
通過級聯多個卷積神經網路直至在訓練集上收斂,PNCC特徵會根據當前預測的人臉形狀更新,並作為下一級卷積神經網路的輸入。
(3) 此外,卷積神經網路的損失函式也做了精心的設計,通過引入權重,讓網路優先擬合重要的形狀引數,如尺度、旋轉和平移;當人臉形狀接近ground truth時,再考慮擬合其他形狀引數
實驗證明該損失函式可以提升定位模型的精度。由於引數化形狀模型會限制人臉形狀變形的能力,作者在使用3DDFA擬合之後,抽取HOG特徵作為輸入,使用線性迴歸來進一步提升2D特徵點的定位精度。

訓練3DDFA模型,需要大量的多姿態人臉樣本。為此,作者基於已有的資料集如300W,利用3D資訊虛擬生成不同姿態下的人臉影象,核心思想為:先預測人臉影象的深度資訊,通過3D旋轉來生成不同姿態下的人臉影象
連結(含原始碼)

3.2 Large-Pose Face Alignment via CNN-Based Dense 3D Model Fitting

這篇文章是來自密西根州立大學的Amin Jourabloo和Xiaoming Liu的工作。 和上一篇文章的出發點一樣,作者試圖使用3D人臉建模解決大姿態下面部特徵點定位問題。
2D的人臉形狀U可以看成是3D人臉形狀A通過投影變化m得到,如下圖所示: 3D人臉形狀模型可以表示為平均3D人臉形狀 A 0 與若干表徵身份、表情的基向量 A id 和 A exp 通過p引數組合而成
面部特徵點定位問題(預測U)可以轉變為同時預測投影矩陣m和3D人臉形狀模型引數p

演算法的整體框架通過級聯6個卷積神經網路來完成這一任務:
(1) 首先以整張人臉影象作為輸入,來預測投影矩陣的更新
(2) 使用更新後的投影矩陣計算當前的2D人臉形狀,基於當前的2D人臉形狀抽取塊特徵作為下一級卷積神經網路的輸入,下一級卷積神經網路用於更新3D人臉形狀
(3) 基於更新後的3D人臉形狀,計算可得當前2D人臉形狀的預測
(4) 根據新的2D人臉形狀預測,抽取塊特徵輸入到卷積神經網路中來更新投影矩陣,交替迭代優化求解投影矩陣m和3D人臉形狀模型引數p,直到在訓練集收斂

值得一提的是,該方法在預測3D人臉形狀和投影矩陣的同時也考慮到計算每一個特徵點是否可見。如果特徵點不可見,則不使用該特徵點上的塊特徵作為輸入,這是普通2D人臉對齊方法難以實現的
此外,作者提出兩種pose-invariant的特徵Piecewise Affine-Warpped Feature (PAWF)和Direct 3D Projected Feature (D3PF),可以進一步提升特徵點定位的精度

4 密集人臉對齊

4.1 Dense Face Alignment

和3.2一樣,同樣是密西根州立大學的Amin Jourabloo和Xiaoming Liu等人的工作,該組其他人臉對齊的工作可參見其專案主頁。
原文: ICCV 2017
摘要: 在人臉對齊方法中,以前的演算法主要集中在特定數量的人臉特徵點檢測,比如5、34或者68個特徵點,這些方法都屬於稀疏的人臉對齊演算法。在本文中,我們提出了一種針對大角度人臉影象的一種3D密集人臉對齊演算法。在該模型中,我們通過訓練CNN模型利用人臉影象來估計3D人臉shape,利用該shape來fitting相應的3D人臉模型,不僅能夠檢測到人臉特徵點,還能匹配人臉輪廓和SIFT特徵點。此外還解決了不同資料庫中由於包含不同數量的特徵點(5、34或68)而不能交叉驗證的問題。可以實時執行

4.2 DenseReg: Fully Convolutional Dense Shape Regression In-the-Wild

原文: CVPR 2017
摘要: 在本文中,我們提出通過完全卷積網路學習從影象畫素到密集模板網格的對映。我們將此任務作為一個迴歸問題,並利用手動註釋的面部標註來訓練我們的網路。我們使用這樣的標註,在三維物件模板和輸入影象之間,建立密集的對應領域,然後作為訓練我們的迴歸系統的基礎。我們表明,我們可以將來自語義分割的想法與迴歸網路相結合,產生高精度的“量化迴歸”架構。我們的系統叫DenseReg,可以讓我們以全卷積的方式估計密集的影象到模板的對應關係。因此,我們的網路可以提供有用的對應資訊,而當用作統計可變形模型的初始化時,我們獲得了標誌性的本地化結果,遠遠超過當前最具挑戰性的300W基準的最新技術。我們對大量面部分析任務的方法進行了全面評估,並且還展示了其用於其他估計任務的用途,如人耳建模。

4.3 Learning Dense Facial Correspondences in Unconstrained Images

原文: ICCV2017

4.1 Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network

原文: CVPR 2017
摘要: 本文提出了一個強有力的方法來同時實現3D人臉重構和密集人臉對齊。為實現該目標,我們設計了一個UV位置圖,來達到用2D圖表示UV 空間內完整人臉的3D形狀特徵。然後訓練了一個簡單的CNN來通過單張2D影象迴歸得到UV圖。我們的方法不需要任何先驗人臉模型,就可以重構出完整的面部結構。速度9.8ms/幀。

資料集

  • UMDFace

  • MTFL(TCDCN所用)

  • [300W-3D]: The fitted 3D Morphable Model (3DMM) parameters of 300W samples.

  • [300W-3D-Face]: The fitted 3D mesh, which is needed if you do not have Basel Face Model (BFM)

300W-3D-Face

  • [300W-LP]: The synthesized large-pose face images from 300W. 300W standardises multiple alignment
    databases with 68 landmarks, including AFW, LFPW, HELEN, IBUG and XM2VTS.

300W-LP

  • [AFLW2000-3D]: The fitted 3D faces of the first 2000 AFLW samples, which can be used for 3D face alignment evaluation.

AFLW2000-3D

6. 人臉對齊值得考慮的幾個問題

  • 資料集擴增
  • 人臉圖片預處理
    • 處理尺度變化
    • 擴大人臉區域,在人臉檢測得到的boundingbox基礎上擴大30%
  • 形狀初始化
  • 精度和效率的權衡

資料庫

評價指標

參考

機器之心
CSDN綜述
Face Alignment In-the-Wild: A Survey
2017-DAN : theano code, CSDN中文
CSDN系列部落格



作者:踩坑第某人
連結:https://www.jianshu.com/p/e4b9317a817f
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。