連續(xù)看了DeepID和FaceNet后疯暑,看了更早期的一篇論文顿颅,即FB的DeepFace。這篇論文早于DeepID和FaceNet宝惰,但其所使用的方法在后面的論文中都有體現(xiàn)植榕,可謂是早期的奠基之作。因而特寫博文以記之尼夺。網(wǎng)頁
DeepFace基本框架
人臉識(shí)別的基本流程是:
detect -> aligh -> represent -> classify
人臉對(duì)齊流程
[圖片上傳中尊残。。汞斧。(1)]
分為如下幾步:
a. 人臉檢測夜郁,使用6個(gè)基點(diǎn) b. 二維剪切,將人臉部分裁剪出來 c. 67個(gè)基點(diǎn)粘勒,然后Delaunay三角化竞端,在輪廓處添加三角形來避免不連續(xù) d. 將三角化后的人臉轉(zhuǎn)換成3D形狀 e. 三角化后的人臉變?yōu)橛猩疃鹊?D三角網(wǎng) f. 將三角網(wǎng)做偏轉(zhuǎn),使人臉的正面朝前庙睡。 g. 最后放正的人臉 h. 一個(gè)新角度的人臉(在論文中沒有用到)
總體上說事富,這一步的作用就是使用3D模型來將人臉對(duì)齊技俐,從而使CNN發(fā)揮最大的效果。
人臉表示
[圖片上傳中统台。雕擂。。(2)]
經(jīng)過3D對(duì)齊以后贱勃,形成的圖像都是152×152的圖像井赌,輸入到上述網(wǎng)絡(luò)結(jié)構(gòu)中,該結(jié)構(gòu)的參數(shù)如下:
Conv:32個(gè)11×11×3的卷積核
max-pooling: 3×3贵扰, stride=2
Conv: 16個(gè)9×9的卷積核
Local-Conv: 16個(gè)9×9的卷積核仇穗,Local的意思是卷積核的參數(shù)不共享
Local-Conv: 16個(gè)7×7的卷積核,參數(shù)不共享
Local-Conv: 16個(gè)5×5的卷積核戚绕,參數(shù)不共享
Fully-connected: 4096維
Softmax: 4030維
前三層的目的在于提取低層次的特征纹坐,比如簡單的邊和紋理。其中Max-pooling層使得卷積的輸出對(duì)微小的偏移情況更加魯棒舞丛。但沒有用太多的Max-pooling層耘子,因?yàn)樘嗟腗ax-pooling層會(huì)使得網(wǎng)絡(luò)損失圖像信息。
后面三層都是使用參數(shù)不共享的卷積核球切,之所以使用參數(shù)不共享谷誓,有如下原因:
對(duì)齊的人臉圖片中,不同的區(qū)域會(huì)有不同的統(tǒng)計(jì)特征欧聘,卷積的局部穩(wěn)定性假設(shè)并不存在片林,所以使用相同的卷積核會(huì)導(dǎo)致信息的丟失
不共享的卷積核并不增加抽取特征時(shí)的計(jì)算量端盆,而會(huì)增加訓(xùn)練時(shí)的計(jì)算量
使用不共享的卷積核怀骤,需要訓(xùn)練的參數(shù)量大大增加,因而需要很大的數(shù)據(jù)量焕妙,然而這個(gè)條件本文剛好滿足蒋伦。
全連接層將上一層的每個(gè)單元和本層的所有單元相連,用來捕捉人臉圖像不同位置的特征之間的相關(guān)性焚鹊。其中痕届,第7層(4096-d)被用來表示人臉。
全連接層的輸出可以用于Softmax的輸入末患,Softmax層用于分類研叫。
人臉表示歸一化
對(duì)于輸出的4096-d向量:
先每一維進(jìn)行歸一化,即對(duì)于結(jié)果向量中的每一維璧针,都要除以該維度在整個(gè)訓(xùn)練集上的最大值嚷炉。
每個(gè)向量進(jìn)行L2歸一化
分類
得到表示后,使用了多種方法進(jìn)行分類:
直接算內(nèi)積
加權(quán)的卡方距離
使用Siamese網(wǎng)絡(luò)結(jié)構(gòu)
加權(quán)卡方距離計(jì)算公式如下:
[圖片上傳中探橱。申屹。绘证。(3)]
其中,加權(quán)參數(shù)由線性SVM計(jì)算得到哗讥。
Siamese網(wǎng)絡(luò)結(jié)構(gòu)是成對(duì)進(jìn)行訓(xùn)練嚷那,得到的特征表示再使用如下公式進(jìn)行計(jì)算距離:
[圖片上傳中。杆煞。魏宽。(4)]
其中,參數(shù)alpha是訓(xùn)練得到决乎。Siamese網(wǎng)絡(luò)與FaceNet就很像了湖员。
實(shí)驗(yàn)評(píng)估
數(shù)據(jù)集
Social Face Classification Dataset(SFC): 4.4M張人臉/4030人
LFW: 13323張人臉/5749人 restricted: 只有是/不是的標(biāo)記
unrestricted:其他的訓(xùn)練對(duì)也可以拿到
unsupervised:不在LFW上訓(xùn)練
Youtube Face(YTF): 3425videos/1595人
Training on SFC
訓(xùn)練使用的人數(shù)不同(1.5K/3.3K/4.4K)
訓(xùn)練使用的照片數(shù)目不同(10%/20%/50%)
使用的網(wǎng)絡(luò)不同(去掉第三層/去掉第4、5層/去掉第3瑞驱、4娘摔、5層)
[圖片上傳中。唤反。凳寺。(5)]
Results on LFW
[圖片上傳中。彤侍。肠缨。(6)]
Results on YTF
[圖片上傳中。盏阶。晒奕。(7)]
總結(jié)
DeepFace與之后的方法的最大的不同點(diǎn)在于,DeepFace在訓(xùn)練神經(jīng)網(wǎng)絡(luò)前名斟,使用了對(duì)齊方法脑慧。論文認(rèn)為神經(jīng)網(wǎng)絡(luò)能夠work的原因在于一旦人臉經(jīng)過對(duì)齊后,人臉區(qū)域的特征就固定在某些像素上了砰盐,此時(shí)闷袒,可以用卷積神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)特征。
針對(duì)同樣的問題岩梳,DeepID和FaceNet并沒有對(duì)齊囊骤,DeepID的解決方案是將一個(gè)人臉切成很多部分,每個(gè)部分都訓(xùn)練一個(gè)模型冀值,然后模型聚合也物。FaceNet則是沒有考慮這一點(diǎn),直接以數(shù)據(jù)量大和特殊的目標(biāo)函數(shù)取勝列疗。
在DeepFace論文中滑蚯,只使用CNN提取到的特征,這點(diǎn)倒是開后面之先河作彤,后面的DeepID膘魄、FaceNet全都是使用CNN提取特征了乌逐,再也不談LBP了。
參考文獻(xiàn)
[1]. Taigman Y, Yang M, Ranzato M A, et al. Deepface: Closing the gap to human-level performance in face verification[C]//Computer Vision and Pattern Recognition (CVPR), 2014 IEEE Conference on. IEEE, 2014: 1701-1708.