參考資料
一、 引言
二、 檢測方法
總結
近期對人臉關鍵點相關方法進行了研究,在深度學習大行其道的背景之下,此博客對近期人臉關鍵點檢測深度學習方法進行了記錄和總結,希望給廣大朋友一點點啟發,也希望大家指出我閱讀過程中的錯誤~
主要有如下模型:
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)
先貼參考資料,想進入主題的直接跳過
參考資料
主要參考資料:
2017-Facial feature point detection A comprehensive survey–綜述
標注文獻:
[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.
相關博客:
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.
https://www.cnblogs.com/gavin-vision/p/4829016.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)
一、 引言
人臉關鍵點檢測也稱為人臉關鍵點檢測、定位或者人臉對齊,是指給定人臉圖像,定位出人臉面部的關鍵區域位置,包括眉毛、眼睛、鼻子、嘴巴、臉部輪廓等;
我們把關鍵點的集合稱作形狀(shape),形狀包含了關鍵點的位置信息,而這個位置信息一般可以用兩種形式表示,第一種是關鍵點的位置相對於整張圖像,第二種是關鍵點的位置相對於人臉框(標識出人臉在整個圖像中的位置)。我們把第一種形狀稱作絕對形狀,它的取值一般介於 0 到 w or h,第二種形狀我們稱作相對形狀,它的取值一般介於 0 到 1。這兩種形狀可以通過人臉框來做轉換。
分類
人臉關鍵點檢測方法大致分為三種,分別是基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]。目前,應用最廣泛,效果精度最高的是基於深度學習的方法,因此本文主要針對深度學習在人臉關鍵點檢測上的應用進行研究。
(后來參照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.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(xti;wt)f(xit;wt) 表示 xtixit與權值矩陣 wtwt相乘之后輸入到函數 f(⋅)f(⋅), l(⋅)l(⋅)表示損失函數,Φ(wt)Φ(wt) 是正則項。可以看到對於各任務t而言,其重要性是相同的,但是在多任務學習中,往往不同任務的學習難易程度不同,若采用相同的損失權重,會導致學習任務難以收斂。文章針對多任務學習中,不同學習難度問題進行了優化,提出帶權值的目標函數:
其中,第一項表示主任務的損失函數,即人臉關鍵點檢測的損失函數,第二項表示其余各子任務的損失函數,其中λaλa 表示任務a的重要性。針對人臉關鍵點檢測任務,本文結合了四個子任務,分別是:性別、是否帶眼鏡、是否微笑和臉部的姿勢,目標函數為:
其中,第一項是平方和誤差,表示人臉關鍵點損失函數,第二項是分類任務,采用的是交叉熵誤差,第三項即正則項。
針對多任務學習的另外一個問題——各任務收斂速度不同,本文提出一種新的提前停止(Early Stopping)方法。當某個子任務達到最好表現以后,這個子任務就對主任務已經沒有幫助,就可以停止這個任務。文章給出自動停止子任務的計算公式,如下:
其中,EatrEtra 表示訓練的誤差,EavalEvala 表示驗證的誤差, εε為閾值,第一項表示訓練誤差的趨勢,第二項表示泛化誤差與訓練誤差之比,當兩項之積大於閾值 ,則該任務停止。
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αj表示任務的重要程度,在P-Net和R-Net中,αdet=1αdet=1,αbox=0.5,αlandmark=0.5αbox=0.5,αlandmark=0.5 ,在O-Net中,由於要對關鍵點進行檢測,所以相應的增大任務的重要性,αdet=1αdet=1,αbox=0.5αbox=0.5 , αlandmark=1αlandmark=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計算公式:
其中 ΔStΔSt是由CNN輸出的,各階段CNN網絡結構如圖所示:
該CNN的輸入均是經過了“變換”——Tt(⋅)Tt(⋅) 的操作,因此得到的偏移量ΔStΔSt 是在新特征空間下的偏移量,在經過偏移之后應經過一個反變換 T−1t(⋅)Tt−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