人臉檢測綜述(轉)

深度學習人臉關鍵點檢測方法----綜述

版權聲明:本文爲TensorSense原創文章, 轉載請註明出處, 轉載請註明出處 ! https://blog.csdn.net/u011995719/article/details/78890333

近期對人臉關鍵點相關方法進行了研究,在深度學習大行其道的背景之下,此博客對近期人臉關鍵點檢測深度學習方法進行了記錄和總結,但願給廣大朋友一點點啓發,也但願你們指出我閱讀過程當中的錯誤~javascript

主要有以下模型:
2.1 ASM (Active Shape Models)
2.2 AAM(Active Appearance Models)
2.3 CPR(Cascaded pose regression)
2.4 DCNN
2.5 Face++版DCNN
2.6 TCDCN
2.7 MTCNN
2.8 TCNN(Tweaked Convolutional Neural Networks)
2.9 DAN(Deep Alignment Networks) php

先貼參考資料,想進入主題的直接跳過css

參考資料

主要參考資料:
2017-Facial feature point detection A comprehensive survey–綜述html

標註文獻:
[1] T.F. Cootes, C.J. Taylor, D.H. Cooper, et al. Active Shape Models-Their Training and Application[J]. Computer Vision and Image Understanding, 1995, 61(1):38-59.
[2] G. J. Edwards, T. F. Cootes, C. J. Taylor. Face recognition using active appearance models[J]. Computer Vision — Eccv’, 1998, 1407(6):581-595.
[3] Cootes T F, Edwards G J, Taylor C J. Active appearance models[C]// European Conference on Computer Vision. Springer Berlin Heidelberg, 1998:484-498.
[4] Dollár P, Welinder P, Perona P. Cascaded pose regression[J]. IEEE, 2010, 238(6):1078-1085.
[5] Sun Y, Wang X, Tang X. Deep Convolutional Network Cascade for Facial Point Detection[C]// Computer Vision and Pattern Recognition. IEEE, 2013:3476-3483.
[6] Zhou E, Fan H, Cao Z, et al. Extensive Facial Landmark Localization with Coarse-to-Fine Convolutional Network Cascade[C]// IEEE International Conference on Computer Vision Workshops. IEEE, 2014:386-391.
[7] Zhang Z, Luo P, Chen C L, et al. Facial Landmark Detection by Deep Multi-task Learning[C]// European Conference on Computer Vision. 2014:94-108.
[8] Wu Y, Hassner T. Facial Landmark Detection with Tweaked Convolutional Neural Networks[J]. Computer Science, 2015.
[9] Zhang K, Zhang Z, Li Z, et al. Joint Face Detection and Alignment Using Multitask Cascaded Convolutional Networks[J]. IEEE Signal Processing Letters, 2016, 23(10):1499-1503.
[10] Kowalski M, Naruniec J, Trzcinski T. Deep Alignment Network: A Convolutional Neural Network for Robust Face Alignment[J]. 2017:2034-2043.
[11] Cristinacce D, Cootes T F. Feature Detection and Tracking with Constrained Local Models[C]// British Machine Vision Conference 2006, Edinburgh, Uk, September. DBLP, 2006:929-938.
[12] Lucey S, Wang Y, Cox M, et al. Efficient Constrained Local Model Fitting for Non-Rigid Face Alignment[J]. Image & Vision Computing, 2009, 27(12):1804.
[13] Wang Y, Lucey S, Cohn J F. Enforcing convexity for improved alignment with constrained local models[C]// IEEE Conference on Computer Vision & Pattern Recognition. Proc IEEE Comput Soc Conf Comput Vis Pattern Recognit, 2008:1.
[14] Saragih J M, Lucey S, Cohn J F. Deformable Model Fitting by Regularized Landmark Mean-Shift[M]. Kluwer Academic Publishers, 2011.
[15] Papandreou G, Maragos P. Adaptive and constrained algorithms for inverse compositional Active Appearance Model fitting[C]// Computer Vision and Pattern Recognition, 2008. CVPR 2008. IEEE Conference on. IEEE, 2014:1-8.
[16] Matthews I, Baker S. Active Appearance Models Revisited[J]. International Journal of Computer Vision, 2004, 60(2):135-164.
[17] Amberg B, Blake A, Vetter T. On compositional Image Alignment, with an application to Active Appearance Models[C]// Computer Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Conference on. IEEE, 2009:1714-1721.
[18] Smith B M, Zhang L, Brandt J, et al. Exemplar-Based Face Parsing[C]// Computer Vision and Pattern Recognition. IEEE, 2013:3484-3491.
[19] Zhou F, Brandt J, Lin Z. Exemplar-Based Graph Matching for Robust Facial Landmark Localization[C]// IEEE International Conference on Computer Vision. IEEE Computer Society, 2013:1025-1032.
[20] Coughlan J M, Ferreira S J. Finding Deformable Shapes Using Loopy Belief Propagation[C]// European Conference on Computer Vision. Springer-Verlag, 2002:453-468.
[21] Liang L, Wen F, Xu Y Q, et al. Accurate Face Alignment using Shape Constrained Markov Network[C]// IEEE Computer Society Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2006:1313-1319.
[22] Wei Y. Face alignment by Explicit Shape Regression[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2012:2887-2894.
[23] Xiong X, Torre F D L. Supervised Descent Method and Its Applications to Face Alignment[C]// Computer Vision and Pattern Recognition. IEEE, 2013:532-539.
[24] Tang X, Wang X, Luo P. Hierarchical face parsing via deep learning[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2012:2480-2487.
[25] Wu Y, Wang Z, Ji Q. Facial Feature Tracking Under Varying Facial Expressions and Face Poses Based on Restricted Boltzmann Machines[C]// Computer Vision and Pattern Recognition. IEEE, 2013:3452-3459.
[26] Zhang J, Shan S, Kan M, et al. Coarse-to-Fine Auto-Encoder Networks (CFAN) for Real-Time Face Alignment[C]// European Conference on Computer Vision. Springer, Cham, 2014:1-16.
[27] Wang N, Gao X, Tao D, et al. Facial Feature Point Detection: A Comprehensive Survey[J]. Neurocomputing, 2017.
[28] Learnedmiller E, Lee H, Huang G B. Learning hierarchical representations for face verification with convolutional deep belief networks[C]// Computer Vision and Pattern Recognition. IEEE, 2012:2518-2525.java

相關博客:
http://blog.csdn.net/yang_xian521/article/details/7468571
http://blog.sina.com.cn/s/blog_6d8e91f401015pv5.html
http://blog.163.com/huai_jing@126/blog/static/1718619832013111525150259/
http://blog.csdn.net/cbl709/article/details/46239571
http://blog.csdn.net/colourfulcloud/article/details/9774017
http://blog.csdn.net/u011058765/article/details/53976876.
http://www.javashuo.com/article/p-qaiydybx-cz.html
http://blog.csdn.net/hjimce/article/details/50099115( face++ 2013)
http://blog.csdn.net/tinyzhao/article/details/52730553(TCDCN)
http://blog.csdn.net/qq_28618765/article/details/78128619(TCDCN)
http://blog.csdn.net/tinyzhao/article/details/53236191(MTCNN)
http://blog.csdn.net/qq_14845119/article/details/52680940(MTCNN,推薦)
http://blog.csdn.net/tinyzhao/article/details/53559373(TCNN)
http://blog.csdn.net/qq_28618765/article/details/78044098(TCNN)
http://blog.csdn.net/zjjzhaohang/article/details/78100465(DAN)
http://blog.csdn.net/shuzfan/article/details/77839176(DAN)python

1、 引言

人臉關鍵點檢測也稱爲人臉關鍵點檢測、定位或者人臉對齊,是指給定人臉圖像,定位出人臉面部的關鍵區域位置,包括眉毛、眼睛、鼻子、嘴巴、臉部輪廓等;mysql

咱們把關鍵點的集合稱做形狀(shape),形狀包含了關鍵點的位置信息,而這個位置信息通常能夠用兩種形式表示,第一種是關鍵點的位置相對於整張圖像,第二種是關鍵點的位置相對於人臉框(標識出人臉在整個圖像中的位置)。咱們把第一種形狀稱做絕對形狀,它的取值通常介於 0 到 w or h,第二種形狀咱們稱做相對形狀,它的取值通常介於 0 到 1。這兩種形狀能夠經過人臉框來作轉換。linux

分類
人臉關鍵點檢測方法大體分爲三種,分別是基ASM(Active Shape Model)[1]和AAM (Active Appearnce Model)[2,3]的傳統方法;基於級聯形狀迴歸的方法[4];基於深度學習的方法[5-10]。如果按照參數化與否來分,可分爲參數化方法和非參數化方法,ASM、AAM和CLM[11]就屬於參數化方法,而級聯迴歸和深度學習方法屬於非參數化方法。基於參數化形狀模型的方法可依據其外觀模型的不一樣,可進一步分爲,基於局部的方法[12-14]和基於全局的方法[15-17];對於非參數化進一步可分爲基於樣例的方法[18,19]、基於圖模型的方法[20,21]、基於級聯迴歸的方法[4,22,23]和基於深度學習的方法[24-26]。更爲詳細的劃分請參考文獻[27]。目前,應用最普遍,效果精度最高的是基於深度學習的方法,所以本文主要針對深度學習在人臉關鍵點檢測上的應用進行研究。git

(後來參照Facial feature point detection A comprehensive survey,人臉關鍵點檢測方法分爲兩種:參數化和非參數化,這種劃分方法感受更好一些,能夠很好理解「參數」的含義)
這裏寫圖片描述
參數模型是指數據服從某種特定機率分佈,例如,高斯模型,高斯混合模型等。基於非參數模型方法是無分佈的,其假設數據不是從給定的機率分佈得出的。參數模型與非參數模型的區別在於前者具備固定的參數,然後者隨着訓練數據量的增長而增長參數的數量。基於參數模型可劃分爲基於局部模型(如,主動形狀模型)和基於全局模型(如,主動外觀模型);基於非參數模型可進一步劃分爲基於圖模型方法、基於級聯迴歸方法和基於深度學習方法。
基於局部模型方法獨立考慮每一個關鍵點周圍的變化,而後經過從訓練中學習到的全局形狀來檢測人臉關鍵點;基於全局模型方法是從總體對外觀進行建模。基於圖模型的方法一般設計樹形結構或馬爾科夫隨機場來對關鍵點進行建模;基於級聯迴歸的方法以從粗到細的方式直接估計關鍵點,並不須要對任何形狀模型或外觀模型進行學習和建模;基於深度學習的方法是利用神經網絡非線性映射能力學習面部圖像到關鍵點的映射。程序員

人臉關鍵點定位方法中具備里程碑式的有以下五種方法:
1) 1995年,Cootes的ASM(Active Shape Model)。
2) 1998年,Cootes 的AAM(Active Appearance Model)算法。
3) 2006年,Ristinacce 的CLM(Constrained Local Model)算法。
4) 2010年,Rollar 的cascaded Regression算法。
5) 2013年,Sun開創深度學習人臉關鍵點檢測的先河,首次將CNN應用到人臉關鍵點定位上。

定量評價
目前主要的衡量標準是算法所獲取的關鍵點位置與真實關鍵點位置之間的誤差。在評價誤差時,因爲不一樣人臉圖像的實際大小不免會有所差別,爲便於在一樣的尺度下比較算法性能,須要採用必定的數據歸一化策略. 目前主流的方法是基於兩眼間的距離進行人臉大小的標準化,即:這裏寫圖片描述
其中分子 表示估計值與真實值的歐式距離,分母 表示雙眼距離,即兩眼中心的歐式距離。也有采用邊界框對角線做爲歸一化因子來評價誤差,如文獻[20]。

經常使用數據庫
數據庫能夠分爲兩類:主動式捕獲的數據和被動式捕獲的數據。主動式捕獲的數據是在實驗室裏,對光照變化、遮擋、頭部姿態和麪部表情可控的狀況下,對固定人員進行照片採集。被動式捕獲的數據則是在社交網站等一些環境不可控的條件下采集而得。
主動式數據
CMU Multi-PIE[20]人臉數據庫是在2004年10月至2005年3月的四次會議中收集的,支持在姿態、光照和表情變化條件下識別人臉的算法的開發。 該數據庫包含337個主題和超過750,000個305GB數據的圖像。 共記錄了六種不一樣的表情:中性,微笑,驚奇,斜視,厭惡和尖叫。 在15個視圖和19個不一樣照明條件下記錄受試者,這個數據庫的一個子集被標記爲68點或39點。
XM2VTS數據庫[21]收集了295人的2360個彩色圖像,聲音文件和3D人臉模型,這2360個彩色圖像標有68個關鍵點。
AR數據庫[22]包含超過4000個彩色圖像,對應126人(70名男性和56名女性)的臉部。圖像是在可控的條件下,以不一樣的面部表情,光照條件和遮擋(太陽鏡和圍巾)拍攝的。Ding and Martinez手動爲每張臉部圖像標註了130個關鍵點。
IMM數據庫[23]包含240張40我的的彩色圖像(7名女性和33名男性)。 每張圖像都對眉毛、眼睛、鼻子、嘴巴和下巴進行標註,共計58個標記點。
MUCT數據庫[24]由276我的的3755張圖像組成,每張圖像有76個關鍵點。 這個數據庫中的面孔在不一樣的光照、不一樣的年齡和不一樣的種族的條件下拍攝。
PUT數據庫[25]採集了部分光照條件可控的100我的,且沿着俯仰角和偏航角旋轉的9971張高分辨率圖像(2048×1536),每張圖像都標有30個關鍵點。
被動式數據
BioID數據庫[26]記錄在室內實驗室環境中,但使用「真實世界」的條件。 該數據庫包含23個主題的1521個灰度人臉圖像,每張圖像標記20個關鍵點。
LFW數據庫[27]包含從網上收集的5724我的的13,233幅面部圖像,其中1680人在數據集中有兩張或更多的照片。雖然,這個數據庫沒有提供標記點,但能夠從其他網站上獲取。
AFLW(Annotated Facial Landmarks in the Wild) 數據庫[28]是一個大規模、多視角和真實環境下的人臉數據庫。圖像是從圖片分享網站Flickr上收集,該數據庫共包含25,993張圖像,每張圖像標有21個關鍵點。
LFPW(Labeled Face Parts in the Wild) 數據庫[29]由1400個面部圖像(1100做爲訓練集,其餘300個圖像做爲測試集)組成。全部數據均從google, Flickr和Yahoo上獲取,每張圖像標記35個關鍵點,但在文獻中,一般採用29個關鍵點。
AFW(Annotated Faces in the Wild)數據庫[30]包含205個圖像,特色是:背景高度混亂,人臉比例和姿式都有很大的變化,每張圖像均有6個關鍵點和邊界框。
300-W(300 Faces in-the-Wild Challenge) [31]是一個混合數據庫,由多個已發佈數據庫(LFPW,Helen,AFW和XM2VTS)的面部圖像和一個新收集的數據庫IBUG組成。 全部這些圖像都從新標註了68個關鍵點。

2、 檢測方法

2.1 ASM (Active Shape Models)
2.2 AAM(Active Appearance Models)
2.3 CPR(Cascaded pose regression)
2.4 DCNN
2.5 Face++版DCNN
2.6 TCDCN
2.7 MTCNN
2.8 TCNN(Tweaked Convolutional Neural Networks)
2.9 DAN(Deep Alignment Networks)

爲了更好的理解人臉關鍵點的發展和歷史,本文也簡單介紹了最爲經典的人臉關鍵點檢測方法:ASM和AAM

2.1 ASM (Active Shape Models)
ASM(Active Shape Model)[1] 是由Cootes於1995年提出的經典的人臉關鍵點檢測算法,主動形狀模型即經過形狀模型對目標物體進行抽象,ASM是一種基於點分佈模型(Point Distribution Model, PDM)的算法。在PDM中,外形類似的物體,例如人臉、人手、心臟、肺部等的幾何形狀能夠經過若干關鍵點(landmarks)的座標依次串聯造成一個形狀向量來表示。ASM算法須要經過人工標定的方法先標定訓練集,通過訓練得到形狀模型,再經過關鍵點的匹配實現特定物體的匹配。

ASM主要分爲兩步:第一步:訓練。首先,構建形狀模型:蒐集n個訓練樣本(n=400);手動標記臉部關鍵點;將訓練集中關鍵點的座標串成特徵向量;對形狀進行歸一化和對齊(對齊採用Procrustes方法);對對齊後的形狀特徵作PCA處理。接着,爲每一個關鍵點構建局部特徵。目的是在每次迭代搜索過程當中每一個關鍵點能夠尋找新的位置。局部特徵通常用梯度特徵,以防光照變化。有的方法沿着邊緣的法線方向提取,有的方法在關鍵點附近的矩形區域提取。第二步:搜索。首先:計算眼睛(或者眼睛和嘴巴)的位置,作簡單的尺度和旋轉變化,對齊人臉;接着,在對齊後的各個點附近搜索,匹配每一個局部關鍵點(常採用馬氏距離),獲得初步形狀;再用平均人臉(形狀模型)修正匹配結果;迭代直到收斂。
ASM 算法的優勢在於模型簡單直接,架構清晰明確,易於理解和應用,並且對輪廓形狀有着較強的約束,可是其近似於窮舉搜索的關鍵點定位方式在必定程度上限制了其運算效率。

2.2 AAM(Active Appearance Models)
1998年,Cootes對ASM進行改進,不只採用形狀約束,並且又加入整個臉部區域的紋理特徵,提出了AAM算法[2]。AAM於ASM同樣,主要分爲兩個階段,模型創建階段和模型匹配階段。其中模型創建階段包括對訓練樣本分別創建形狀模型(Shape Model)和紋理模型(Texture Model),而後將兩個模型進行結合,造成AAM模型。

2.3 CPR(Cascaded pose regression)
2010年,Dollar提出CPR(Cascaded Pose Regression, 級聯姿式迴歸)[4],CPR經過一系列迴歸器將一個指定的初始預測值逐步細化,每個迴歸器都依靠前一個迴歸器的輸出來執行簡單的圖像操做,整個系統可自動的從訓練樣本中學習。
人臉關鍵點檢測的目的是估計向量 ,其中K表示關鍵點的個數,因爲每一個關鍵點有橫縱兩個座標,因此S得長度爲2K。CPR檢測流程如圖所示,一共有T個階段,在每一個階段中首先進行特徵提取,獲得 ,這裏使用的是shape-indexed features,也可使用諸如HOG、SIFT等人工設計的特徵,或者其餘可學習特徵(learning based features),而後經過訓練獲得的迴歸器R來估計增量ΔS( update vector),把ΔS加到前一個階段的S上獲得新的S,這樣經過不斷的迭代便可以獲得最終的S(shape)。

2.4 DCNN
2013年,Sun等人[5]首次將CNN應用到人臉關鍵點檢測,提出一種級聯的CNN(擁有三個層級)——DCNN(Deep Convolutional Network),此種方法屬於級聯迴歸方法。做者經過精心設計擁有三個層級的級聯卷積神經網絡,不只改善初始不當致使陷入局部最優的問題,並且藉助於CNN強大的特徵提取能力,得到更爲精準的關鍵點檢測。

如圖所示,DCNN由三個Level構成。Level-1 由3個CNN組成;Level-2由10個CNN組成(每一個關鍵點採用兩個CNN);Level-3一樣由10個CNN組成。
這裏寫圖片描述

Level-1分3個CNN,分別是F1(Face 1)、EN1(Eye,Nose)、NM1(Nose,Mouth);F1輸入尺寸爲39*39,輸出5個關鍵點的座標;EN1輸入尺寸爲39*31,輸出是3個關鍵點的座標;NM11輸入尺寸爲39*31,輸出是3個關鍵點。Level-1的輸出是由三個CNN輸出取平均獲得。

Level-2,由10個CNN構成,輸入尺寸均爲15*15,每兩個組成一對,一對CNN對一個關鍵點進行預測,預測結果一樣是採起平均。

Level-3與Level-2同樣,由10個CNN構成,輸入尺寸均爲15*15,每兩個組成一對。Level-2和Level-3是對Level-1獲得的粗定位進行微調,獲得精細的關鍵點定位。

Level-1之因此比Level-2和Level-3的輸入要大,是由於做者認爲,因爲人臉檢測器的緣由,邊界框的相對位置可能會在大範圍內變化,再加上面部姿態的變化,最終致使輸入圖像的多樣性,所以在Level-1應該須要有足夠大的輸入尺寸。Level-1與Level-2和Level-3還有一點不一樣之處在於,Level-1採用的是局部權值共享(Locally Sharing Weights),做者認爲傳統的全局權值共享是考慮到,某一特徵可能在圖像中任何位置出現,因此採用全局權值共享。然而,對於相似人臉這樣具備固定空間結構的圖像而言,全局權值共享就不奏效了。由於眼睛就是在上面,鼻子就是在中間,嘴巴就是在下面的。因此做者借鑑文獻[28]中的思想,採用局部權值共享,做者經過實驗證實了局部權值共享給網絡帶來性能提高。

DCNN採用級聯迴歸的思想,從粗到精的逐步獲得精確的關鍵點位置,不只設計了三級級聯的卷積神經網絡,還引入局部權值共享機制,從而提高網絡的定位性能。最終在數據集BioID和LFPW上均得到當時最優結果。速度方面,採用3.3GHz的CPU,每0.12秒檢測一張圖片的5個關鍵點。

2.5 Face++版DCNN
2013年,Face++在DCNN模型上進行改進,提出從粗到精的人臉關鍵點檢測算法[6],實現了68我的臉關鍵點的高精度定位。該算法將人臉關鍵點分爲內部關鍵點和輪廓關鍵點,內部關鍵點包含眉毛、眼睛、鼻子、嘴巴共計51個關鍵點,輪廓關鍵點包含17個關鍵點。

針對內部關鍵點和外部關鍵點,該算法並行的採用兩個級聯的CNN進行關鍵點檢測,網絡結構如圖所示。
這裏寫圖片描述
針對內部51個關鍵點,採用四個層級的級聯網絡進行檢測。其中,Level-1主要做用是得到面部器官的邊界框;Level-2的輸出是51個關鍵點預測位置,這裏起到一個粗定位做用,目的是爲了給Level-3進行初始化;Level-3會依據不一樣器官進行從粗到精的定位;Level-4的輸入是將Level-3的輸出進行必定的旋轉,最終將51個關鍵點的位置進行輸出。針對外部17個關鍵點,僅採用兩個層級的級聯網絡進行檢測。Level-1與內部關鍵點檢測的做用同樣,主要是得到輪廓的bounding box;Level-2直接預測17個關鍵點,沒有從粗到精定位的過程,由於輪廓關鍵點的區域較大,若加上Level-3和Level-4,會比較耗時間 。最終面部68個關鍵點由兩個級聯CNN的輸出進行疊加獲得。

算法主要創新點由如下三點:(1)把人臉的關鍵點定位問題,劃分爲內部關鍵點和輪廓關鍵點分開預測,有效的避免了loss不均衡問題;(2)在內部關鍵點檢測部分,並未像DCNN那樣每一個關鍵點採用兩個CNN進行預測,而是每一個器官採用一個CNN進行預測,從而減小計算量;(3)相比於DCNN,沒有直接採用人臉檢測器返回的結果做爲輸入,而是增長一個邊界框檢測層(Level-1),能夠大大提升關鍵點粗定位網絡的精度。

Face++版DCNN首次利用卷積神經網絡進行68我的臉關鍵點檢測,針對以往人臉關鍵點檢測受人臉檢測器影響的問題,做者設計Level-1卷積神經網絡進一步提取人臉邊界框,爲人臉關鍵點檢測得到更爲準確的人臉位置信息,最終在當年300-W挑戰賽上得到領先成績。

2.6 TCDCN

這裏寫圖片描述

網絡輸出爲40*40的灰度圖,通過CNN最終獲得2*2*64的特徵圖,再經過一層含100個神經元的全鏈接層輸出最終提取獲得的共享特徵。該特徵爲全部任務共同享用,對於關鍵點檢測問題,就採用線性迴歸模型;對於分類問題,就採用邏輯迴歸。
在傳統MLT中,各任務重要程度是一致的,其目標方程以下:
這裏寫圖片描述

其中, f ( x i t ; w t ) 表示 x i t 與權值矩陣 w t 相乘以後輸入到函數 f ( ) l ( ) 表示損失函數, Φ ( w t ) 是正則項。能夠看到對於各任務t而言,其重要性是相同的,可是在多任務學習中,每每不一樣任務的學習難易程度不一樣,若採用相同的損失權重,會致使學習任務難以收斂。文章針對多任務學習中,不一樣學習難度問題進行了優化,提出帶權值的目標函數:
這裏寫圖片描述

其中,第一項表示主任務的損失函數,即人臉關鍵點檢測的損失函數,第二項表示其他各子任務的損失函數,其中 λ a 表示任務a的重要性。針對人臉關鍵點檢測任務,本文結合了四個子任務,分別是:性別、是否帶眼鏡、是否微笑和臉部的姿式,目標函數爲:
這裏寫圖片描述

其中,第一項是平方和偏差,表示人臉關鍵點損失函數,第二項是分類任務,採用的是交叉熵偏差,第三項即正則項。

針對多任務學習的另一個問題——各任務收斂速度不一樣,本文提出一種新的提早中止(Early Stopping)方法。當某個子任務達到最好表現之後,這個子任務就對主任務已經沒有幫助,就能夠中止這個任務。文章給出自動中止子任務的計算公式,以下:
這裏寫圖片描述

其中, E t r a 表示訓練的偏差, E v a l a 表示驗證的偏差, ε 爲閾值,第一項表示訓練偏差的趨勢,第二項表示泛化偏差與訓練偏差之比,當兩項之積大於閾值 ,則該任務中止。

TCDCN採用多任務學習方法對人臉關鍵點進行檢測,針對多任務學習在人臉關鍵點檢測任務中的兩個主要問題——不一樣任務學習難易程度不一樣以及不一樣任務收斂速度不一樣,分別提出了新目標函數和提早中止策略加以改進,最終在AFLW和AFW數據集上得到領先的結果。同時對比於級聯CNN方法,在Intel Core i5 cpu上,級聯CNN須要0.12s,而TCDCN僅須要17ms,速度提高七倍有餘。
代碼連接: https://github.com/zhzhanp/TCDCN-face-alignment

2.7 MTCNN
2016年,Zhang等人提出一種多任務級聯卷積神經網絡(MTCNN, Multi-task Cascaded Convolutional Networks)[9]用以同時處理人臉檢測和人臉關鍵點定位問題。做者認爲人臉檢測和人臉關鍵點檢測兩個任務之間每每存在着潛在的聯繫,然而大多數方法都未將兩個任務有效的結合起來,本文爲了充分利用兩任務之間潛在的聯繫,提出一種多任務級聯的人臉檢測框架,將人臉檢測和人臉關鍵點檢測同時進行。

MTCNN包含三個級聯的多任務卷積神經網絡,分別是Proposal Network (P-Net)、Refine Network (R-Net)、Output Network (O-Net),每一個多任務卷積神經網絡均有三個學習任務,分別是人臉分類、邊框迴歸和關鍵點定位。網絡結構如圖所示:
這裏寫圖片描述
這裏寫圖片描述

TCNN實現人臉檢測和關鍵點定位分爲三個階段。首先由P-Net得到了人臉區域的候選窗口和邊界框的迴歸向量,並用該邊界框作迴歸,對候選窗口進行校準,而後經過非極大值抑制(NMS)來合併高度重疊的候選框。而後將P-Net得出的候選框做爲輸入,輸入到R-Net,R-Net一樣經過邊界框迴歸和NMS來去掉那些false-positive區域,獲得更爲準確的候選框;最後,利用O-Net輸出5個關鍵點的位置。

在具體訓練過程當中,做者就多任務學習的損失函數計算方式進行相應改進。在多任務學習中,當不一樣類型的訓練圖像輸入到網絡時,有些任務時是不進行學習的,所以相應的損失應爲0。例如,當訓練圖像爲背景(Non-face)時,邊界框和關鍵點的loss應爲0,文中提供計算公式自動肯定loss的選取,公式爲:
這裏寫圖片描述

其中, α j 表示任務的重要程度,在P-Net和R-Net中, α d e t = 1 , α b o x = 0.5 , α l a n d m a r k = 0.5 ,在O-Net中,因爲要對關鍵點進行檢測,因此相應的增大任務的重要性, α d e t = 1 , α b o x = 0.5 , α l a n d m a r k = 1 。 做爲樣本類型指示器。

爲了提高網絡性能,須要挑選出困難樣本(Hard Sample),傳統方法是經過研究訓練好的模型進行挑選,而本文提出一種能在訓練過程當中進行挑選困難的在線挑選方法。方法爲,在mini-batch中,對每一個樣本的損失進行排序,挑選前70%較大的損失對應的樣本做爲困難樣本,同時在反向傳播時,忽略那30%的樣本,由於那30%樣本對更新做用不大。
實驗結果代表,MTCNN在人臉檢測數據集FDDB 和WIDER FACE以及人臉關鍵點定位數據集LFPW均得到當時最佳成績。在運行時間方面,採用2.60GHz的CPU能夠達到16fps,採用Nvidia Titan Black可達99fps。
代碼實現:
Matlab:https://github.com/kpzhang93/MTCNN_face_detection_alignment
Caffe:https://github.com/dlunion/mtcnn
Python:https://github.com/DuinoDu/mtcnn

2.8 TCNN(Tweaked Convolutional Neural Networks)
2016年,Wu等人研究了CNN在人臉關鍵點定位任務中到底學習到的是什麼樣的特徵,在採用GMM(Gaussian Mixture Model, 混合高斯模型)對不一樣層的特徵進行聚類分析,發現網絡進行的是層次的,由粗到精的特徵定位,越深層提取到的特徵越能反應出人臉關鍵點的位置。針對這一發現,提出了TCNN(Tweaked Convolutional Neural Networks)[8],其網絡結構如圖所示:
這裏寫圖片描述
這裏寫圖片描述

上圖爲Vanilla CNN,針對FC5獲得的特徵進行K個類別聚類,將訓練圖像按照所分類別進行劃分,用以訓練所對應的FC6K 。測試時,圖片首先通過Vanilla CNN提取特徵,即FC5的輸出。將FC5輸出的特徵與K個聚類中心進行比較,將FC5輸出的特徵劃分至相應的類別中,而後選擇與之相應的FC6進行鏈接,最終獲得輸出。

做者經過對Vanilla CNN中間層特徵聚類分析得出的結論是什麼呢?又是如何經過中間層聚類分析得出靈感從而設計TCNN呢?

做者對Vanilla CNN中間各層特徵進行聚類分析,並統計出關鍵點在各層之間的變化程度,如圖所示:
這裏寫圖片描述

從圖中可知,越深層提取到的特徵越緊密,所以越深層提取到的特徵越能反應出人臉關鍵點的位置。做者在採用K=64時,對所劃分簇的樣本進行平均後繪圖以下:
這裏寫圖片描述

從圖上可發現,每個簇的樣本反應了頭部的某種姿態,甚至出現了表情和性別的差別。所以可推知,人臉關鍵點的位置經常和人臉的屬性相關聯。所以爲了獲得更準確的關鍵點定位,做者使用具備類似特徵的圖片訓練對應的迴歸器,最終在人臉關鍵點檢測數據集AFLW,AFW和300W上均得到當時最佳效果。

2.9 DAN(Deep Alignment Networks)
2017年,Kowalski等人提出一種新的級聯深度神經網絡——DAN(Deep Alignment Network)[10],以往級聯神經網絡輸入的是圖像的某一部分,與以往不一樣,DAN各階段網絡的輸入均爲整張圖片。當網絡均採用整張圖片做爲輸入時,DAN能夠有效的克服頭部姿態以及初始化帶來的問題,從而獲得更好的檢測效果。之因此DAN能將整張圖片做爲輸入,是由於其加入了關鍵點熱圖(Landmark Heatmaps),關鍵點熱圖的使用是本文的主要創新點。DAN基本框架如圖所示:
這裏寫圖片描述

DAN包含多個階段,每個階段含三個輸入和一個輸出,輸入分別是被矯正過的圖片、關鍵點熱圖和由全鏈接層生成的特徵圖,輸出是面部形狀(Face Shape)。其中,CONNECTION LAYER的做用是將本階段得輸出進行一系列變換,生成下一階段所須要的三個輸入,具體操做以下圖所示:
這裏寫圖片描述

從第一階段開始講起,第一階段的輸入僅有原始圖片和S0。面部關鍵點的初始化即爲S0,S0是由全部關鍵點取平均獲得,第一階段輸出S1。對於第二階段,首先,S1經第一階段的CONNECTION LAYERS進行轉換,分別獲得轉換後圖片T2(I)、S1所對應的熱圖H2和第一階段fc1層輸出,這三個正是第二階段的輸入。如此周而復始,直到最後一個階段輸出SN。文中給出在數據集IBUG上,通過第一階段後的T2(I)、T2(S1)和特徵圖,如圖所示:
這裏寫圖片描述

從圖中發現,DAN要作的「變換」,就是把圖片給矯正了,第一行數據尤其明顯,那麼DAN對姿態變換具備很好的適應能力,或許就得益於這個「變換」。至於DAN採用何種「變換」,須要到代碼中具體探究。

接下來看一看,St是如何由St-1以及該階段CNN獲得,先看St計算公式:
這裏寫圖片描述

其中 Δ S t 是由CNN輸出的,各階段CNN網絡結構如圖所示:

這裏寫圖片描述

該CNN的輸入均是通過了「變換」—— T t ( ) 的操做,所以獲得的偏移量 Δ S t 是在新特徵空間下的偏移量,在通過偏移以後應通過一個反變換 T t 1 ( ) 還原到原始空間。而這裏提到的新特徵空間,或許是將圖像進行了「矯正」,使得網絡更好的處理圖像。
關鍵點熱度圖的計算就是一箇中心衰減,關鍵點處值最大,越遠則值越小,公式以下:
這裏寫圖片描述

爲何須要從fc1層生成一張特徵圖?文中提到「Such a connection allows any information learned by the preceding stage to be transferred to the consecutive stage.」其實就是人爲給CNN增長上一階段信息。
總而言之,DAN是一個級聯思想的關鍵點檢測方法,經過引入關鍵點熱圖做爲補充,DAN能夠從整張圖片進行提取特徵,從而得到更爲精確的定位。
代碼實現:
Theano:https://github.com/MarekKowalski/DeepAlignmentNetwork

總結


自2013年Sun等人在人臉關鍵點檢測任務中使用深度學習得到良好效果以來,衆多學者將目光從傳統方法轉移到基於深度學習方法,並在近年提出多種有效的深度學習模型,均取得人臉關鍵點檢測任務的突破,如DCNN到Face++版DCNN,TCDCN到MTCNN等。本文對近年取得突破性進展的深度學習模型進行分析,在此統計其優缺點如表所示:
這裏寫圖片描述

胡思亂想
1. Coarse-to-Fine
從ASM、AAM到CPR(級聯迴歸),都講究 Coarse-to-Fine——從粗到精的這麼一個過程,到了如今的深度學習方法,一樣講究從粗到精;所以能夠知道從粗到精是目前不可拋棄的,因此能夠考慮如何設計從粗到精;

2. 人臉檢測器得影響
以前有提到,假若採用不一樣的人臉檢測器進行人臉檢測,再輸入到關鍵點檢測模型,效果會很差,能夠這麼理解,換了一我的臉檢測器,也就至關於換了一個樣本生成器,假若樣本生成器差別很大,生成的樣本與訓練時的樣本差別比較大,那麼神經網絡就GG了~~
從這裏能夠看出:人臉檢測器對關鍵點檢測很重要!爲了不不一樣人臉檢測器帶來的影響,能夠考慮在關鍵點檢測模型裏邊作一個「人臉檢測器」,無論從哪裏來的圖片,都通過同一個「人臉檢測器」再輸入到後面的關鍵點檢測去,這樣效果就會好了。

例如 Face++版DCNN,先進行了一個bounding box estimation;
例如MTCNN,先用了兩個模型對人臉進行檢測! 先由P-Net 和R-Net來得到人臉候選框,而後再進行關鍵點定位。
再如DAN,對人臉進行了「矯正」,再檢測;

若是想「搞」些新idea,能夠從以上兩點出發,
1.級聯的CNN從粗到精;
2.必定要有「本身的人臉檢測器」
固然,多任務也能夠借鑑。

此博客只是拋磚引玉,但願你們提出問題和建議~~

歡迎轉載,請註明出處:
http://blog.csdn.net/u011995719/article/details/78890333

別再玩假傳奇了,這傳奇爆率9.9,無VIP,開局送麻痹 9377遊戲 · 頂新
聽說土豪都不敢玩這款傳奇!變態99999億,有充值你卸載! 貪玩滅神 · 頂新
EasonApp 關注
EasonApp

616篇文章

排名:379

fengbingchun 關注
fengbingchun

759篇文章

排名:98

AUTO1993 關注
AUTO1993

59篇文章

排名:千里以外

zhangjiaxuu 關注
zhangjiaxuu

77篇文章

排名:千里以外

沒有更多推薦了,返回首頁

相關文章
相關標籤/搜索