原博客地址:http://blog.csdn.net/u011995719/article/details/78890333
參考資料
一、 引言
二哗蜈、 檢測方法
總結(jié)
近期對人臉關(guān)鍵點相關(guān)方法進行了研究田巴,在深度學(xué)習大行其道的背景之下超歌,此博客對近期人臉關(guān)鍵點檢測深度學(xué)習方法進行了記錄和總結(jié)专普,希望給廣大朋友一點點啟發(fā),也希望大家指出我閱讀過程中的錯誤~
主要有如下模型:?
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.
相關(guān)博客:?
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)
人臉關(guān)鍵點檢測也稱為人臉關(guān)鍵點檢測伐坏、定位或者人臉對齊,是指給定人臉圖像握联,定位出人臉面部的關(guān)鍵區(qū)域位置桦沉,包括眉毛、眼睛金闽、鼻子纯露、嘴巴、臉部輪廓等代芜;
我們把關(guān)鍵點的集合稱作形狀(shape)埠褪,形狀包含了關(guān)鍵點的位置信息,而這個位置信息一般可以用兩種形式表示挤庇,第一種是關(guān)鍵點的位置相對于整張圖像钞速,第二種是關(guān)鍵點的位置相對于人臉框(標識出人臉在整個圖像中的位置)。我們把第一種形狀稱作絕對形狀嫡秕,它的取值一般介于 0 到 w or h渴语,第二種形狀我們稱作相對形狀,它的取值一般介于 0 到 1昆咽。這兩種形狀可以通過人臉框來做轉(zhuǎn)換驾凶。
分類?
人臉關(guān)鍵點檢測方法大致分為三種牙甫,分別是基ASM(Active Shape Model)[1]和AAM (Active Appearnce Model)[2,3]的傳統(tǒng)方法;基于級聯(lián)形狀回歸的方法[4]调违;基于深度學(xué)習的方法[5-10]窟哺。若是按照參數(shù)化與否來分,可分為參數(shù)化方法和非參數(shù)化方法技肩,ASM脏答、AAM和CLM[11]就屬于參數(shù)化方法,而級聯(lián)回歸和深度學(xué)習方法屬于非參數(shù)化方法亩鬼≈掣妫基于參數(shù)化形狀模型的方法可依據(jù)其外觀模型的不同,可進一步分為雳锋,基于局部的方法[12-14]和基于全局的方法[15-17]黄绩;對于非參數(shù)化進一步可分為基于樣例的方法[18,19]、基于圖模型的方法[20,21]玷过、基于級聯(lián)回歸的方法[4,22,23]和基于深度學(xué)習的方法[24-26]爽丹。更為詳細的劃分請參考文獻[27]。目前辛蚊,應(yīng)用最廣泛粤蝎,效果精度最高的是基于深度學(xué)習的方法,因此本文主要針對深度學(xué)習在人臉關(guān)鍵點檢測上的應(yīng)用進行研究袋马。
(后來參照Facial feature point detection A comprehensive survey初澎,人臉關(guān)鍵點檢測方法分為兩種:參數(shù)化和非參數(shù)化,這種劃分方法感覺更好一些虑凛,可以很好理解“參數(shù)”的含義)?
參數(shù)模型是指數(shù)據(jù)服從某種特定概率分布碑宴,例如,高斯模型桑谍,高斯混合模型等延柠。基于非參數(shù)模型方法是無分布的锣披,其假設(shè)數(shù)據(jù)不是從給定的概率分布得出的贞间。參數(shù)模型與非參數(shù)模型的區(qū)別在于前者具有固定的參數(shù),而后者隨著訓(xùn)練數(shù)據(jù)量的增加而增加參數(shù)的數(shù)量雹仿≡鋈龋基于參數(shù)模型可劃分為基于局部模型(如,主動形狀模型)和基于全局模型(如盅粪,主動外觀模型)钓葫;基于非參數(shù)模型可進一步劃分為基于圖模型方法、基于級聯(lián)回歸方法和基于深度學(xué)習方法票顾。?
基于局部模型方法獨立考慮每個關(guān)鍵點周圍的變化础浮,然后通過從訓(xùn)練中學(xué)習到的全局形狀來檢測人臉關(guān)鍵點帆调;基于全局模型方法是從整體對外觀進行建模《雇基于圖模型的方法通常設(shè)計樹形結(jié)構(gòu)或馬爾科夫隨機場來對關(guān)鍵點進行建模番刊;基于級聯(lián)回歸的方法以從粗到細的方式直接估計關(guān)鍵點,并不需要對任何形狀模型或外觀模型進行學(xué)習和建模影锈;基于深度學(xué)習的方法是利用神經(jīng)網(wǎng)絡(luò)非線性映射能力學(xué)習面部圖像到關(guān)鍵點的映射芹务。
人臉關(guān)鍵點定位方法中具有里程碑式的有如下五種方法:?
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開創(chuàng)深度學(xué)習人臉關(guān)鍵點檢測的先河,首次將CNN應(yīng)用到人臉關(guān)鍵點定位上咨堤。
定量評價?
目前主要的衡量標準是算法所獲取的關(guān)鍵點位置與真實關(guān)鍵點位置之間的偏差菇篡。在評價偏差時,由于不同人臉圖像的實際大小難免會有所差異一喘,為便于在同樣的尺度下比較算法性能驱还,需要采用一定的數(shù)據(jù)歸一化策略. 目前主流的方法是基于兩眼間的距離進行人臉大小的標準化,即:
其中分子 表示估計值與真實值的歐式距離津滞,分母 表示雙眼距離铝侵,即兩眼中心的歐式距離灼伤。也有采用邊界框?qū)蔷€作為歸一化因子來評價偏差触徐,如文獻[20]。
常用數(shù)據(jù)庫?
數(shù)據(jù)庫可以分為兩類:主動式捕獲的數(shù)據(jù)和被動式捕獲的數(shù)據(jù)狐赡。主動式捕獲的數(shù)據(jù)是在實驗室里撞鹉,對光照變化、遮擋颖侄、頭部姿態(tài)和面部表情可控的情況下鸟雏,對固定人員進行照片采集。被動式捕獲的數(shù)據(jù)則是在社交網(wǎng)站等一些環(huán)境不可控的條件下采集而得览祖。?
主動式數(shù)據(jù)?
CMU Multi-PIE[20]人臉數(shù)據(jù)庫是在2004年10月至2005年3月的四次會議中收集的孝鹊,支持在姿態(tài)、光照和表情變化條件下識別人臉的算法的開發(fā)展蒂。 該數(shù)據(jù)庫包含337個主題和超過750,000個305GB數(shù)據(jù)的圖像又活。 共記錄了六種不同的表情:中性苔咪,微笑,驚奇柳骄,斜視团赏,厭惡和尖叫。 在15個視圖和19個不同照明條件下記錄受試者耐薯,這個數(shù)據(jù)庫的一個子集被標記為68點或39點舔清。?
XM2VTS數(shù)據(jù)庫[21]收集了295人的2360個彩色圖像,聲音文件和3D人臉模型曲初,這2360個彩色圖像標有68個關(guān)鍵點体谒。?
AR數(shù)據(jù)庫[22]包含超過4000個彩色圖像,對應(yīng)126人(70名男性和56名女性)的臉部臼婆。圖像是在可控的條件下营密,以不同的面部表情,光照條件和遮擋(太陽鏡和圍巾)拍攝的目锭。Ding and Martinez手動為每張臉部圖像標注了130個關(guān)鍵點评汰。?
IMM數(shù)據(jù)庫[23]包含240張40個人的彩色圖像(7名女性和33名男性)。 每張圖像都對眉毛痢虹、眼睛被去、鼻子、嘴巴和下巴進行標注奖唯,共計58個標記點惨缆。?
MUCT數(shù)據(jù)庫[24]由276個人的3755張圖像組成,每張圖像有76個關(guān)鍵點丰捷。 這個數(shù)據(jù)庫中的面孔在不同的光照坯墨、不同的年齡和不同的種族的條件下拍攝。?
PUT數(shù)據(jù)庫[25]采集了部分光照條件可控的100個人病往,且沿著俯仰角和偏航角旋轉(zhuǎn)的9971張高分辨率圖像(2048×1536)捣染,每張圖像都標有30個關(guān)鍵點。?
被動式數(shù)據(jù)?
BioID數(shù)據(jù)庫[26]記錄在室內(nèi)實驗室環(huán)境中停巷,但使用“真實世界”的條件耍攘。 該數(shù)據(jù)庫包含23個主題的1521個灰度人臉圖像,每張圖像標記20個關(guān)鍵點畔勤。?
LFW數(shù)據(jù)庫[27]包含從網(wǎng)上收集的5724個人的13,233幅面部圖像蕾各,其中1680人在數(shù)據(jù)集中有兩張或更多的照片。雖然庆揪,這個數(shù)據(jù)庫沒有提供標記點式曲,但可以從其余網(wǎng)站上獲取。?
AFLW(Annotated Facial Landmarks in the Wild) 數(shù)據(jù)庫[28]是一個大規(guī)模缸榛、多視角和真實環(huán)境下的人臉數(shù)據(jù)庫吝羞。圖像是從圖片分享網(wǎng)站Flickr上收集始鱼,該數(shù)據(jù)庫共包含25,993張圖像,每張圖像標有21個關(guān)鍵點脆贵。?
LFPW(Labeled Face Parts in the Wild) 數(shù)據(jù)庫[29]由1400個面部圖像(1100作為訓(xùn)練集医清,其他300個圖像作為測試集)組成。所有數(shù)據(jù)均從google, Flickr和Yahoo上獲取卖氨,每張圖像標記35個關(guān)鍵點会烙,但在文獻中,通常采用29個關(guān)鍵點筒捺。?
AFW(Annotated Faces in the Wild)數(shù)據(jù)庫[30]包含205個圖像柏腻,特點是:背景高度混亂,人臉比例和姿勢都有很大的變化系吭,每張圖像均有6個關(guān)鍵點和邊界框五嫂。?
300-W(300 Faces in-the-Wild Challenge) [31]是一個混合數(shù)據(jù)庫,由多個已發(fā)布數(shù)據(jù)庫(LFPW肯尺,Helen沃缘,AFW和XM2VTS)的面部圖像和一個新收集的數(shù)據(jù)庫IBUG組成。 所有這些圖像都重新標注了68個關(guān)鍵點则吟。
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)
為了更好的理解人臉關(guān)鍵點的發(fā)展和歷史,本文也簡單介紹了最為經(jīng)典的人臉關(guān)鍵點檢測方法:ASM和AAM
2.1 ASM (Active Shape Models)?
ASM(Active Shape Model)[1] 是由Cootes于1995年提出的經(jīng)典的人臉關(guān)鍵點檢測算法氓仲,主動形狀模型即通過形狀模型對目標物體進行抽象水慨,ASM是一種基于點分布模型(Point Distribution Model, PDM)的算法。在PDM中敬扛,外形相似的物體晰洒,例如人臉、人手啥箭、心臟谍珊、肺部等的幾何形狀可以通過若干關(guān)鍵點(landmarks)的坐標依次串聯(lián)形成一個形狀向量來表示。ASM算法需要通過人工標定的方法先標定訓(xùn)練集捉蚤,經(jīng)過訓(xùn)練獲得形狀模型抬驴,再通過關(guān)鍵點的匹配實現(xiàn)特定物體的匹配。
ASM主要分為兩步:第一步:訓(xùn)練缆巧。首先,構(gòu)建形狀模型:搜集n個訓(xùn)練樣本(n=400)豌拙;手動標記臉部關(guān)鍵點陕悬;將訓(xùn)練集中關(guān)鍵點的坐標串成特征向量;對形狀進行歸一化和對齊(對齊采用Procrustes方法)按傅;對對齊后的形狀特征做PCA處理捉超。接著胧卤,為每個關(guān)鍵點構(gòu)建局部特征。目的是在每次迭代搜索過程中每個關(guān)鍵點可以尋找新的位置拼岳。局部特征一般用梯度特征枝誊,以防光照變化。有的方法沿著邊緣的法線方向提取惜纸,有的方法在關(guān)鍵點附近的矩形區(qū)域提取叶撒。第二步:搜索。首先:計算眼睛(或者眼睛和嘴巴)的位置耐版,做簡單的尺度和旋轉(zhuǎn)變化祠够,對齊人臉;接著粪牲,在對齊后的各個點附近搜索古瓤,匹配每個局部關(guān)鍵點(常采用馬氏距離),得到初步形狀腺阳;再用平均人臉(形狀模型)修正匹配結(jié)果落君;迭代直到收斂。?
ASM 算法的優(yōu)點在于模型簡單直接亭引,架構(gòu)清晰明確叽奥,易于理解和應(yīng)用,而且對輪廓形狀有著較強的約束痛侍,但是其近似于窮舉搜索的關(guān)鍵點定位方式在一定程度上限制了其運算效率朝氓。
2.2 AAM(Active Appearance Models)?
1998年,Cootes對ASM進行改進主届,不僅采用形狀約束赵哲,而且又加入整個臉部區(qū)域的紋理特征,提出了AAM算法[2]君丁。AAM于ASM一樣枫夺,主要分為兩個階段,模型建立階段和模型匹配階段绘闷。其中模型建立階段包括對訓(xùn)練樣本分別建立形狀模型(Shape Model)和紋理模型(Texture Model)橡庞,然后將兩個模型進行結(jié)合,形成AAM模型印蔗。
2.3 CPR(Cascaded pose regression)?
2010年扒最,Dollar提出CPR(Cascaded Pose Regression, 級聯(lián)姿勢回歸)[4],CPR通過一系列回歸器將一個指定的初始預(yù)測值逐步細化华嘹,每一個回歸器都依靠前一個回歸器的輸出來執(zhí)行簡單的圖像操作吧趣,整個系統(tǒng)可自動的從訓(xùn)練樣本中學(xué)習。?
人臉關(guān)鍵點檢測的目的是估計向量 ,其中K表示關(guān)鍵點的個數(shù)强挫,由于每個關(guān)鍵點有橫縱兩個坐標岔霸,所以S得長度為2K。CPR檢測流程如圖所示俯渤,一共有T個階段呆细,在每個階段中首先進行特征提取,得到 ,這里使用的是shape-indexed features八匠,也可以使用諸如HOG絮爷、SIFT等人工設(shè)計的特征,或者其他可學(xué)習特征(learning based features)臀叙,然后通過訓(xùn)練得到的回歸器R來估計增量ΔS( update vector)略水,把ΔS加到前一個階段的S上得到新的S,這樣通過不斷的迭代即可以得到最終的S(shape)劝萤。
2.4 DCNN?
2013年渊涝,Sun等人[5]首次將CNN應(yīng)用到人臉關(guān)鍵點檢測,提出一種級聯(lián)的CNN(擁有三個層級)——DCNN(Deep Convolutional Network)床嫌,此種方法屬于級聯(lián)回歸方法跨释。作者通過精心設(shè)計擁有三個層級的級聯(lián)卷積神經(jīng)網(wǎng)絡(luò),不僅改善初始不當導(dǎo)致陷入局部最優(yōu)的問題厌处,而且借助于CNN強大的特征提取能力鳖谈,獲得更為精準的關(guān)鍵點檢測。
如圖所示阔涉,DCNN由三個Level構(gòu)成缆娃。Level-1 由3個CNN組成;Level-2由10個CNN組成(每個關(guān)鍵點采用兩個CNN)瑰排;Level-3同樣由10個CNN組成贯要。?
Level-1分3個CNN,分別是F1(Face 1)椭住、EN1(Eye崇渗,Nose)、NM1(Nose京郑,Mouth)宅广;F1輸入尺寸為39*39,輸出5個關(guān)鍵點的坐標些举;EN1輸入尺寸為39*31跟狱,輸出是3個關(guān)鍵點的坐標;NM11輸入尺寸為39*31金拒,輸出是3個關(guān)鍵點兽肤。Level-1的輸出是由三個CNN輸出取平均得到套腹。
Level-2绪抛,由10個CNN構(gòu)成资铡,輸入尺寸均為15*15,每兩個組成一對幢码,一對CNN對一個關(guān)鍵點進行預(yù)測笤休,預(yù)測結(jié)果同樣是采取平均。
Level-3與Level-2一樣症副,由10個CNN構(gòu)成店雅,輸入尺寸均為15*15,每兩個組成一對贞铣。Level-2和Level-3是對Level-1得到的粗定位進行微調(diào)闹啦,得到精細的關(guān)鍵點定位。
Level-1之所以比Level-2和Level-3的輸入要大辕坝,是因為作者認為窍奋,由于人臉檢測器的原因,邊界框的相對位置可能會在大范圍內(nèi)變化酱畅,再加上面部姿態(tài)的變化琳袄,最終導(dǎo)致輸入圖像的多樣性,因此在Level-1應(yīng)該需要有足夠大的輸入尺寸纺酸。Level-1與Level-2和Level-3還有一點不同之處在于窖逗,Level-1采用的是局部權(quán)值共享(Locally Sharing Weights),作者認為傳統(tǒng)的全局權(quán)值共享是考慮到餐蔬,某一特征可能在圖像中任何位置出現(xiàn)碎紊,所以采用全局權(quán)值共享。然而樊诺,對于類似人臉這樣具有固定空間結(jié)構(gòu)的圖像而言仗考,全局權(quán)值共享就不奏效了。因為眼睛就是在上面啄骇,鼻子就是在中間痴鳄,嘴巴就是在下面的。所以作者借鑒文獻[28]中的思想缸夹,采用局部權(quán)值共享痪寻,作者通過實驗證明了局部權(quán)值共享給網(wǎng)絡(luò)帶來性能提升。
DCNN采用級聯(lián)回歸的思想虽惭,從粗到精的逐步得到精確的關(guān)鍵點位置橡类,不僅設(shè)計了三級級聯(lián)的卷積神經(jīng)網(wǎng)絡(luò),還引入局部權(quán)值共享機制芽唇,從而提升網(wǎng)絡(luò)的定位性能顾画。最終在數(shù)據(jù)集BioID和LFPW上均獲得當時最優(yōu)結(jié)果取劫。速度方面,采用3.3GHz的CPU研侣,每0.12秒檢測一張圖片的5個關(guān)鍵點谱邪。
2.5 Face++版DCNN?
2013年,F(xiàn)ace++在DCNN模型上進行改進庶诡,提出從粗到精的人臉關(guān)鍵點檢測算法[6]惦银,實現(xiàn)了68個人臉關(guān)鍵點的高精度定位。該算法將人臉關(guān)鍵點分為內(nèi)部關(guān)鍵點和輪廓關(guān)鍵點末誓,內(nèi)部關(guān)鍵點包含眉毛扯俱、眼睛、鼻子喇澡、嘴巴共計51個關(guān)鍵點迅栅,輪廓關(guān)鍵點包含17個關(guān)鍵點。
針對內(nèi)部關(guān)鍵點和外部關(guān)鍵點晴玖,該算法并行的采用兩個級聯(lián)的CNN進行關(guān)鍵點檢測读存,網(wǎng)絡(luò)結(jié)構(gòu)如圖所示顽照。?
針對內(nèi)部51個關(guān)鍵點役耕,采用四個層級的級聯(lián)網(wǎng)絡(luò)進行檢測十偶。其中呢蛤,Level-1主要作用是獲得面部器官的邊界框唱逢;Level-2的輸出是51個關(guān)鍵點預(yù)測位置凶赁,這里起到一個粗定位作用魁淳,目的是為了給Level-3進行初始化盆驹;Level-3會依據(jù)不同器官進行從粗到精的定位琅催;Level-4的輸入是將Level-3的輸出進行一定的旋轉(zhuǎn)居凶,最終將51個關(guān)鍵點的位置進行輸出。針對外部17個關(guān)鍵點藤抡,僅采用兩個層級的級聯(lián)網(wǎng)絡(luò)進行檢測侠碧。Level-1與內(nèi)部關(guān)鍵點檢測的作用一樣,主要是獲得輪廓的bounding box缠黍;Level-2直接預(yù)測17個關(guān)鍵點弄兜,沒有從粗到精定位的過程,因為輪廓關(guān)鍵點的區(qū)域較大瓷式,若加上Level-3和Level-4替饿,會比較耗時間 。最終面部68個關(guān)鍵點由兩個級聯(lián)CNN的輸出進行疊加得到贸典。
算法主要創(chuàng)新點由以下三點:(1)把人臉的關(guān)鍵點定位問題视卢,劃分為內(nèi)部關(guān)鍵點和輪廓關(guān)鍵點分開預(yù)測,有效的避免了loss不均衡問題廊驼;(2)在內(nèi)部關(guān)鍵點檢測部分据过,并未像DCNN那樣每個關(guān)鍵點采用兩個CNN進行預(yù)測惋砂,而是每個器官采用一個CNN進行預(yù)測,從而減少計算量绳锅;(3)相比于DCNN西饵,沒有直接采用人臉檢測器返回的結(jié)果作為輸入,而是增加一個邊界框檢測層(Level-1)榨呆,可以大大提高關(guān)鍵點粗定位網(wǎng)絡(luò)的精度罗标。
Face++版DCNN首次利用卷積神經(jīng)網(wǎng)絡(luò)進行68個人臉關(guān)鍵點檢測庸队,針對以往人臉關(guān)鍵點檢測受人臉檢測器影響的問題积蜻,作者設(shè)計Level-1卷積神經(jīng)網(wǎng)絡(luò)進一步提取人臉邊界框,為人臉關(guān)鍵點檢測獲得更為準確的人臉位置信息彻消,最終在當年300-W挑戰(zhàn)賽上獲得領(lǐng)先成績竿拆。
2.6 TCDCN
網(wǎng)絡(luò)輸出為40*40的灰度圖,經(jīng)過CNN最終得到2*2*64的特征圖宾尚,再通過一層含100個神經(jīng)元的全連接層輸出最終提取得到的共享特征丙笋。該特征為所有任務(wù)共同享用,對于關(guān)鍵點檢測問題煌贴,就采用線性回歸模型御板;對于分類問題,就采用邏輯回歸牛郑。?
在傳統(tǒng)MLT中怠肋,各任務(wù)重要程度是一致的,其目標方程如下:?
其中淹朋,f(xti;wt)f(xit;wt)?表示?xtixit與權(quán)值矩陣?wtwt相乘之后輸入到函數(shù)?f(?)f(?)笙各,?l(?)l(?)表示損失函數(shù),Φ(wt)Φ(wt)?是正則項础芍¤厩溃可以看到對于各任務(wù)t而言,其重要性是相同的仑性,但是在多任務(wù)學(xué)習中惶楼,往往不同任務(wù)的學(xué)習難易程度不同,若采用相同的損失權(quán)重诊杆,會導(dǎo)致學(xué)習任務(wù)難以收斂歼捐。文章針對多任務(wù)學(xué)習中,不同學(xué)習難度問題進行了優(yōu)化刽辙,提出帶權(quán)值的目標函數(shù):?
其中窥岩,第一項表示主任務(wù)的損失函數(shù),即人臉關(guān)鍵點檢測的損失函數(shù)宰缤,第二項表示其余各子任務(wù)的損失函數(shù)颂翼,其中λaλa?表示任務(wù)a的重要性晃洒。針對人臉關(guān)鍵點檢測任務(wù),本文結(jié)合了四個子任務(wù)朦乏,分別是:性別球及、是否帶眼鏡、是否微笑和臉部的姿勢呻疹,目標函數(shù)為:?
其中吃引,第一項是平方和誤差,表示人臉關(guān)鍵點損失函數(shù)刽锤,第二項是分類任務(wù)镊尺,采用的是交叉熵誤差,第三項即正則項并思。
針對多任務(wù)學(xué)習的另外一個問題——各任務(wù)收斂速度不同庐氮,本文提出一種新的提前停止(Early Stopping)方法。當某個子任務(wù)達到最好表現(xiàn)以后宋彼,這個子任務(wù)就對主任務(wù)已經(jīng)沒有幫助弄砍,就可以停止這個任務(wù)。文章給出自動停止子任務(wù)的計算公式输涕,如下:?
其中音婶,EatrEtra?表示訓(xùn)練的誤差,EavalEvala?表示驗證的誤差莱坎,?εε為閾值衣式,第一項表示訓(xùn)練誤差的趨勢,第二項表示泛化誤差與訓(xùn)練誤差之比型奥,當兩項之積大于閾值 瞳收,則該任務(wù)停止。
TCDCN采用多任務(wù)學(xué)習方法對人臉關(guān)鍵點進行檢測厢汹,針對多任務(wù)學(xué)習在人臉關(guān)鍵點檢測任務(wù)中的兩個主要問題——不同任務(wù)學(xué)習難易程度不同以及不同任務(wù)收斂速度不同螟深,分別提出了新目標函數(shù)和提前停止策略加以改進,最終在AFLW和AFW數(shù)據(jù)集上獲得領(lǐng)先的結(jié)果烫葬。同時對比于級聯(lián)CNN方法界弧,在Intel Core i5 cpu上,級聯(lián)CNN需要0.12s搭综,而TCDCN僅需要17ms垢箕,速度提升七倍有余。?
代碼鏈接:?https://github.com/zhzhanp/TCDCN-face-alignment
2.7 MTCNN?
2016年兑巾,Zhang等人提出一種多任務(wù)級聯(lián)卷積神經(jīng)網(wǎng)絡(luò)(MTCNN, Multi-task Cascaded Convolutional Networks)[9]用以同時處理人臉檢測和人臉關(guān)鍵點定位問題条获。作者認為人臉檢測和人臉關(guān)鍵點檢測兩個任務(wù)之間往往存在著潛在的聯(lián)系,然而大多數(shù)方法都未將兩個任務(wù)有效的結(jié)合起來蒋歌,本文為了充分利用兩任務(wù)之間潛在的聯(lián)系帅掘,提出一種多任務(wù)級聯(lián)的人臉檢測框架委煤,將人臉檢測和人臉關(guān)鍵點檢測同時進行。
MTCNN包含三個級聯(lián)的多任務(wù)卷積神經(jīng)網(wǎng)絡(luò)修档,分別是Proposal Network (P-Net)碧绞、Refine Network (R-Net)、Output Network (O-Net)吱窝,每個多任務(wù)卷積神經(jīng)網(wǎng)絡(luò)均有三個學(xué)習任務(wù)讥邻,分別是人臉分類、邊框回歸和關(guān)鍵點定位院峡。網(wǎng)絡(luò)結(jié)構(gòu)如圖所示:?
TCNN實現(xiàn)人臉檢測和關(guān)鍵點定位分為三個階段兴使。首先由P-Net獲得了人臉區(qū)域的候選窗口和邊界框的回歸向量,并用該邊界框做回歸撕予,對候選窗口進行校準鲫惶,然后通過非極大值抑制(NMS)來合并高度重疊的候選框。然后將P-Net得出的候選框作為輸入实抡,輸入到R-Net,R-Net同樣通過邊界框回歸和NMS來去掉那些false-positive區(qū)域欢策,得到更為準確的候選框吆寨;最后,利用O-Net輸出5個關(guān)鍵點的位置踩寇。
在具體訓(xùn)練過程中啄清,作者就多任務(wù)學(xué)習的損失函數(shù)計算方式進行相應(yīng)改進。在多任務(wù)學(xué)習中俺孙,當不同類型的訓(xùn)練圖像輸入到網(wǎng)絡(luò)時辣卒,有些任務(wù)時是不進行學(xué)習的,因此相應(yīng)的損失應(yīng)為0睛榄。例如荣茫,當訓(xùn)練圖像為背景(Non-face)時,邊界框和關(guān)鍵點的loss應(yīng)為0场靴,文中提供計算公式自動確定loss的選取啡莉,公式為:?
其中,?αjαj表示任務(wù)的重要程度旨剥,在P-Net和R-Net中咧欣,αdet=1αdet=1,αbox=0.5,αlandmark=0.5αbox=0.5,αlandmark=0.5?,在O-Net中,由于要對關(guān)鍵點進行檢測轨帜,所以相應(yīng)的增大任務(wù)的重要性魄咕,αdet=1αdet=1,αbox=0.5αbox=0.5?,?αlandmark=1αlandmark=1?。 作為樣本類型指示器蚌父。
為了提升網(wǎng)絡(luò)性能哮兰,需要挑選出困難樣本(Hard Sample)烟具,傳統(tǒng)方法是通過研究訓(xùn)練好的模型進行挑選,而本文提出一種能在訓(xùn)練過程中進行挑選困難的在線挑選方法奠蹬。方法為朝聋,在mini-batch中,對每個樣本的損失進行排序囤躁,挑選前70%較大的損失對應(yīng)的樣本作為困難樣本冀痕,同時在反向傳播時,忽略那30%的樣本狸演,因為那30%樣本對更新作用不大言蛇。?
實驗結(jié)果表明,MTCNN在人臉檢測數(shù)據(jù)集FDDB 和WIDER FACE以及人臉關(guān)鍵點定位數(shù)據(jù)集LFPW均獲得當時最佳成績宵距。在運行時間方面腊尚,采用2.60GHz的CPU可以達到16fps,采用Nvidia Titan Black可達99fps满哪。?
代碼實現(xiàn):?
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在人臉關(guān)鍵點定位任務(wù)中到底學(xué)習到的是什么樣的特征,在采用GMM(Gaussian Mixture Model, 混合高斯模型)對不同層的特征進行聚類分析哨鸭,發(fā)現(xiàn)網(wǎng)絡(luò)進行的是層次的民宿,由粗到精的特征定位,越深層提取到的特征越能反應(yīng)出人臉關(guān)鍵點的位置像鸡。針對這一發(fā)現(xiàn)活鹰,提出了TCNN(Tweaked Convolutional Neural Networks)[8],其網(wǎng)絡(luò)結(jié)構(gòu)如圖所示:?
上圖為Vanilla CNN只估,針對FC5得到的特征進行K個類別聚類志群,將訓(xùn)練圖像按照所分類別進行劃分,用以訓(xùn)練所對應(yīng)的FC6K 蛔钙。測試時锌云,圖片首先經(jīng)過Vanilla CNN提取特征,即FC5的輸出夸楣。將FC5輸出的特征與K個聚類中心進行比較宾抓,將FC5輸出的特征劃分至相應(yīng)的類別中,然后選擇與之相應(yīng)的FC6進行連接豫喧,最終得到輸出石洗。
作者通過對Vanilla CNN中間層特征聚類分析得出的結(jié)論是什么呢?又是如何通過中間層聚類分析得出靈感從而設(shè)計TCNN呢紧显?
作者對Vanilla CNN中間各層特征進行聚類分析讲衫,并統(tǒng)計出關(guān)鍵點在各層之間的變化程度,如圖所示:?
從圖中可知,越深層提取到的特征越緊密涉兽,因此越深層提取到的特征越能反應(yīng)出人臉關(guān)鍵點的位置招驴。作者在采用K=64時,對所劃分簇的樣本進行平均后繪圖如下:?
從圖上可發(fā)現(xiàn)枷畏,每一個簇的樣本反應(yīng)了頭部的某種姿態(tài)别厘,甚至出現(xiàn)了表情和性別的差異。因此可推知拥诡,人臉關(guān)鍵點的位置常常和人臉的屬性相關(guān)聯(lián)触趴。因此為了得到更準確的關(guān)鍵點定位,作者使用具有相似特征的圖片訓(xùn)練對應(yīng)的回歸器渴肉,最終在人臉關(guān)鍵點檢測數(shù)據(jù)集AFLW,AFW和300W上均獲得當時最佳效果冗懦。
2.9 DAN(Deep Alignment Networks)?
2017年,Kowalski等人提出一種新的級聯(lián)深度神經(jīng)網(wǎng)絡(luò)——DAN(Deep Alignment Network)[10]仇祭,以往級聯(lián)神經(jīng)網(wǎng)絡(luò)輸入的是圖像的某一部分披蕉,與以往不同,DAN各階段網(wǎng)絡(luò)的輸入均為整張圖片乌奇。當網(wǎng)絡(luò)均采用整張圖片作為輸入時没讲,DAN可以有效的克服頭部姿態(tài)以及初始化帶來的問題,從而得到更好的檢測效果华弓。之所以DAN能將整張圖片作為輸入食零,是因為其加入了關(guān)鍵點熱圖(Landmark Heatmaps),關(guān)鍵點熱圖的使用是本文的主要創(chuàng)新點寂屏。DAN基本框架如圖所示:?
DAN包含多個階段,每一個階段含三個輸入和一個輸出娜搂,輸入分別是被矯正過的圖片迁霎、關(guān)鍵點熱圖和由全連接層生成的特征圖,輸出是面部形狀(Face Shape)百宇。其中考廉,CONNECTION LAYER的作用是將本階段得輸出進行一系列變換,生成下一階段所需要的三個輸入携御,具體操作如下圖所示:?
從第一階段開始講起昌粤,第一階段的輸入僅有原始圖片和S0。面部關(guān)鍵點的初始化即為S0啄刹,S0是由所有關(guān)鍵點取平均得到涮坐,第一階段輸出S1。對于第二階段誓军,首先袱讹,S1經(jīng)第一階段的CONNECTION LAYERS進行轉(zhuǎn)換,分別得到轉(zhuǎn)換后圖片T2(I)昵时、S1所對應(yīng)的熱圖H2和第一階段fc1層輸出捷雕,這三個正是第二階段的輸入椒丧。如此周而復(fù)始,直到最后一個階段輸出SN救巷。文中給出在數(shù)據(jù)集IBUG上壶熏,經(jīng)過第一階段后的T2(I)、T2(S1)和特征圖浦译,如圖所示:?
從圖中發(fā)現(xiàn)棒假,DAN要做的“變換”,就是把圖片給矯正了管怠,第一行數(shù)據(jù)尤為明顯淆衷,那么DAN對姿態(tài)變換具有很好的適應(yīng)能力,或許就得益于這個“變換”渤弛。至于DAN采用何種“變換”祝拯,需要到代碼中具體探究。
接下來看一看她肯,St是如何由St-1以及該階段CNN得到佳头,先看St計算公式:?
其中?ΔStΔSt是由CNN輸出的,各階段CNN網(wǎng)絡(luò)結(jié)構(gòu)如圖所示:
該CNN的輸入均是經(jīng)過了“變換”——Tt(?)Tt(?)?的操作晴氨,因此得到的偏移量ΔStΔSt?是在新特征空間下的偏移量康嘉,在經(jīng)過偏移之后應(yīng)經(jīng)過一個反變換?T?1t(?)Tt?1(?)還原到原始空間。而這里提到的新特征空間籽前,或許是將圖像進行了“矯正”亭珍,使得網(wǎng)絡(luò)更好的處理圖像。?
關(guān)鍵點熱度圖的計算就是一個中心衰減枝哄,關(guān)鍵點處值最大肄梨,越遠則值越小,公式如下:?
為什么需要從fc1層生成一張?zhí)卣鲌D挠锥?文中提到“Such a connection allows any information learned by the preceding stage to be transferred to the consecutive stage.”其實就是人為給CNN增加上一階段信息众羡。?
總而言之,DAN是一個級聯(lián)思想的關(guān)鍵點檢測方法蓖租,通過引入關(guān)鍵點熱圖作為補充粱侣,DAN可以從整張圖片進行提取特征,從而獲得更為精確的定位蓖宦。?
代碼實現(xiàn):?
Theano:https://github.com/MarekKowalski/DeepAlignmentNetwork
自2013年Sun等人在人臉關(guān)鍵點檢測任務(wù)中使用深度學(xué)習獲得良好效果以來齐婴,眾多學(xué)者將目光從傳統(tǒng)方法轉(zhuǎn)移到基于深度學(xué)習方法,并在近年提出多種有效的深度學(xué)習模型球昨,均取得人臉關(guān)鍵點檢測任務(wù)的突破尔店,如DCNN到Face++版DCNN,TCDCN到MTCNN等。本文對近年取得突破性進展的深度學(xué)習模型進行分析嚣州,在此統(tǒng)計其優(yōu)缺點如表所示:?
胡思亂想:?
1. Coarse-to-Fine?
從ASM鲫售、AAM到CPR(級聯(lián)回歸),都講究 Coarse-to-Fine——從粗到精的這么一個過程该肴,到了現(xiàn)在的深度學(xué)習方法情竹,同樣講究從粗到精;因此可以知道從粗到精是目前不可拋棄的匀哄,所以可以考慮如何設(shè)計從粗到精秦效;
2. 人臉檢測器得影響?
之前有提到,倘若采用不同的人臉檢測器進行人臉檢測涎嚼,再輸入到關(guān)鍵點檢測模型阱州,效果會不好,可以這么理解法梯,換了一個人臉檢測器苔货,也就相當于換了一個樣本生成器,倘若樣本生成器差異很大立哑,生成的樣本與訓(xùn)練時的樣本差異比較大夜惭,那么神經(jīng)網(wǎng)絡(luò)就GG了~~?
從這里可以看出:人臉檢測器對關(guān)鍵點檢測很重要!為了避免不同人臉檢測器帶來的影響铛绰,可以考慮在關(guān)鍵點檢測模型里邊做一個“人臉檢測器”诈茧,不管從哪里來的圖片,都經(jīng)過同一個“人臉檢測器”再輸入到后面的關(guān)鍵點檢測去捂掰,這樣效果就會好了敢会。
例如 Face++版DCNN,先進行了一個bounding box estimation这嚣;?
例如MTCNN走触,先用了兩個模型對人臉進行檢測! 先由P-Net 和R-Net來獲得人臉候選框疤苹,然后再進行關(guān)鍵點定位。?
再如DAN敛腌,對人臉進行了“矯正”卧土,再檢測;
如果想“搞”些新idea像樊,可以從以上兩點出發(fā)尤莺,?
1.級聯(lián)的CNN從粗到精;?
2.一定要有“自己的人臉檢測器”?
當然生棍,多任務(wù)也可以借鑒颤霎。
此博客只是拋磚引玉,希望大家提出問題和建議~~