新款iPhone X最熱門功能之一就是新的解鎖方法:FaceID。由于創(chuàng)建了無邊框手機(jī),蘋果不得不開發(fā)一種能簡(jiǎn)單快捷的解鎖手機(jī)的新方法。不同于一些競(jìng)爭(zhēng)對(duì)手繼續(xù)使用放在不同位置的指紋傳感器,蘋果決定革新我們解鎖手機(jī)的方式,讓我們看一下手機(jī)就能解鎖。
借助一款先進(jìn)的前置深度相機(jī)(facing depth-camera),iPhone X能夠創(chuàng)建用戶臉部的3維映射。此外,使用紅外相機(jī)拍攝用戶臉部的圖片,該圖片對(duì)于環(huán)境的光線和顏色的變化更具魯棒性。運(yùn)用深度學(xué)習(xí),智能手機(jī)能夠非常詳細(xì)地學(xué)習(xí)用戶的臉,因此每當(dāng)手機(jī)被其擁有者拿起時(shí),它都會(huì)立刻認(rèn)出他。更令人驚訝的是據(jù)蘋果表示,這種方法比TouchID更安全,錯(cuò)誤率僅為百萬分之一。
我對(duì)蘋果實(shí)現(xiàn)FaceID的技術(shù)很感興趣,希望了解如何使用深度學(xué)習(xí)來實(shí)現(xiàn)這個(gè)過程,以及如何優(yōu)化每個(gè)步驟。在這篇文章中,我將展示如何使用Keras實(shí)現(xiàn)一個(gè)類似FaceID的算法。我將解釋我采取的各種架構(gòu)決策,并使用Kinect展示一些最終實(shí)驗(yàn)結(jié)果,它一種非常流行的RGB深度相機(jī),它與iPhone X前置攝像頭的輸出非常相似(但設(shè)備更大)。那么,讓我們開始對(duì)蘋果的革新進(jìn)行逆向工程。
了解FaceID
“…… 支持FaceID的神經(jīng)網(wǎng)絡(luò)不是簡(jiǎn)單地執(zhí)行分類。”
FaceID設(shè)置過程
第一步是仔細(xì)分析FaceID在iPhone X上的工作原理。他們的白皮書可以幫助我們理解FaceID的基本機(jī)制。過去,在使用TouchID時(shí),用戶必須通過按幾次傳感器,初始登記其指紋。在大約15-20次不同的觸摸之后,注冊(cè)完成,TouchID可以開始使用了。同樣地,F(xiàn)aceID的用戶也要注冊(cè)他的臉。過程非常簡(jiǎn)單:只是像往常一樣看手機(jī),然后慢慢地轉(zhuǎn)動(dòng)頭部,這樣就可以從不同的姿勢(shì)來記錄面部。就這樣,這個(gè)過程完成,手機(jī)就可以解鎖了。這種快速的注冊(cè)過程可以告訴我們很多關(guān)于這種學(xué)習(xí)算法的潛在信息。比如,支持FaceID 的神經(jīng)網(wǎng)絡(luò)不僅僅是執(zhí)行分類。
蘋果推出iPhone X和FaceID
針對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行分類,意味著學(xué)習(xí)如何預(yù)測(cè)它看到的臉是否是用戶的。所以,它應(yīng)該主要使用一些訓(xùn)練數(shù)據(jù)來預(yù)測(cè)“真”或“假”,但與許多其他深度學(xué)習(xí)用例情況不同,這種方法實(shí)際上是行不通的。首先,網(wǎng)絡(luò)要使用從用戶臉上獲得的新數(shù)據(jù)進(jìn)行再訓(xùn)練。這需要大量時(shí)間,能量消耗和不實(shí)用的訓(xùn)練數(shù)據(jù)為不同的臉去做否定實(shí)例(在遷移學(xué)習(xí)和已經(jīng)訓(xùn)練好的網(wǎng)絡(luò)上微調(diào)的情況下會(huì)有所改變)。
此外,這種方法無法使用的一個(gè)原因是:蘋果要訓(xùn)練更復(fù)雜的離線網(wǎng)絡(luò)。也就是說,要在他們的實(shí)驗(yàn)室中訓(xùn)練,然后發(fā)送預(yù)訓(xùn)練好的網(wǎng)絡(luò)給用戶的手機(jī)。所以,我相信FaceID是由類似孿生卷積神經(jīng)網(wǎng)絡(luò)(siamese convolutional neural network)驅(qū)動(dòng)的,該網(wǎng)絡(luò)由蘋果公司“離線”訓(xùn)練,將臉部映射到低維隱空間中,利用對(duì)比損失(contrastive loss)最大化不同人臉之間的距離。會(huì)發(fā)生什么是你得到一個(gè)能夠“one shot learning”(少樣本精準(zhǔn)分類的一種)的架構(gòu)。
從數(shù)字識(shí)別到人臉識(shí)別的神經(jīng)網(wǎng)絡(luò)
孿生神經(jīng)網(wǎng)絡(luò)一般由兩個(gè)相同的神經(jīng)網(wǎng)絡(luò)組成,共享所有的權(quán)重。該架構(gòu)可以學(xué)習(xí)計(jì)算特定類型的數(shù)據(jù)之間的距離。原理是,你通過孿生網(wǎng)絡(luò)傳遞數(shù)據(jù)(或者簡(jiǎn)單地通過同一網(wǎng)絡(luò)在兩個(gè)不同的步中傳遞數(shù)據(jù)),網(wǎng)絡(luò)將它映射到一個(gè)低維特征空間,就像一個(gè)n維數(shù)組,然后你訓(xùn)練網(wǎng)絡(luò)進(jìn)行映射,使不同類別的數(shù)據(jù)點(diǎn)盡可能地遠(yuǎn),同一類別的數(shù)據(jù)點(diǎn)盡可能接近。網(wǎng)絡(luò)將學(xué)習(xí)從數(shù)據(jù)中提取最有意義的特征,并將其壓縮成一個(gè)數(shù)組,從而創(chuàng)建一個(gè)有意義的映射。為了對(duì)此有一個(gè)直觀的理解,我們想象一下使用較少維度的矢量來描述狗的品種,使類似的狗具有更接近的矢量。你可能會(huì)用一個(gè)數(shù)字來編碼狗的毛色,另一個(gè)用來表示狗的大小,再一個(gè)用于毛的長(zhǎng)度,等等。這樣,相似的狗將具有相似的向量。孿生神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)為你做這件事,類似于一個(gè)自動(dòng)編碼器。
圖片來自Hadsell,Chopra和LeCun發(fā)表的論文“通過學(xué)習(xí)不變映射降維”。注意這個(gè)架構(gòu)是學(xué)習(xí)數(shù)字之間的相似性,并自動(dòng)將它們分組為二維。技術(shù)上與臉部識(shí)別類似。
使用這種技術(shù),人們可以使用大量面孔來訓(xùn)練這種架構(gòu),以識(shí)別哪些臉最為相似。如果擁有不錯(cuò)的預(yù)算和計(jì)算能力(像蘋果那樣),也可以使用更難的例子,使網(wǎng)絡(luò)對(duì)諸如雙胞胎,對(duì)抗攻擊(面具)等更具魯棒性。使用這種方法的優(yōu)勢(shì)是什么?你有了一個(gè)隨時(shí)可用的模型,可在無需進(jìn)一步訓(xùn)練的情況下識(shí)別不同的用戶,它只需要在初始設(shè)置期間拍攝一些照片后,計(jì)算用戶的臉部位于臉部映射空間中的哪個(gè)位置即可。。另外,F(xiàn)aceID能夠適應(yīng)你的方面的變化:突兀的變化(例如,眼鏡,帽子,化妝)和細(xì)節(jié)變化(面部毛發(fā))。這需要通過在此映射中添加參考臉的向量來完成的,它根據(jù)你的新外觀計(jì)算而來。
當(dāng)你的外表改變時(shí),F(xiàn)aceID會(huì)適應(yīng)
現(xiàn)在,讓我們看看如何使用Keras實(shí)現(xiàn)它。
在Keras中實(shí)現(xiàn)FaceID
我們首先需要的是數(shù)據(jù)。我在網(wǎng)上找到了RGB-D人臉數(shù)據(jù)集。它由一系列面向不同方向,做出不同表情的RGB-D圖片組成(與FaceID所需吻合)。
實(shí)現(xiàn):https://github.com/normandipalo/faceID_beta
Colab Notebook:https://colab.research.google.com/drive/1OynWNoWF6POTcRGFG4V7KW_EGIkUmLYI
我創(chuàng)建了一個(gè)基于SqueezeNet架構(gòu)的卷積網(wǎng)絡(luò)。網(wǎng)絡(luò)輸入耦合人臉的RGBD圖像,因此是4通道,并輸出兩個(gè)嵌入之間的距離。該網(wǎng)絡(luò)訓(xùn)練時(shí)會(huì)產(chǎn)生對(duì)比損失,可以最大限度地減少同一人的照片之間的距離,并使不同人的照片之間的距離最大化。
對(duì)比損失
經(jīng)過一些訓(xùn)練后,網(wǎng)絡(luò)能夠?qū)⑷四樣成涑?28維數(shù)組,使得同一人的圖片被分組在一起,而與其他人的圖片相距甚遠(yuǎn)。這意味著,要解鎖你的設(shè)備,網(wǎng)絡(luò)只需計(jì)算在解鎖過程中拍攝的照片與在注冊(cè)階段存儲(chǔ)的照片之間的距離。如果距離低于某個(gè)閾值,則設(shè)備解鎖(閾值越小,設(shè)備越安全)。
我使用t-SNE算法在2維中可視化128維嵌入空間。每種顏色都對(duì)應(yīng)不同的人:如你所見,網(wǎng)絡(luò)已經(jīng)學(xué)會(huì)了將這些圖片正確分組。(當(dāng)使用t-SNE算法時(shí),簇之間的距離沒有意義)使用PCA降維算法時(shí)也會(huì)出現(xiàn)一個(gè)有趣的現(xiàn)象。
使用t-SNE創(chuàng)建的嵌入空間中的人臉簇。每種顏色都是不同的面孔(顏色被重復(fù)使用)。
使用PCA創(chuàng)建的嵌入空間中的人臉簇。每種顏色都是不同的面孔(顏色被重復(fù)使用)。
實(shí)驗(yàn)
現(xiàn)在我們可以試著看看這個(gè)模型的運(yùn)作,它模擬一個(gè)FaceID的流程:首先,注冊(cè)用戶的臉。然后,解鎖階段,從用戶(應(yīng)該成功),從其他人那里,不應(yīng)該解鎖設(shè)備。前面提到,區(qū)別在于網(wǎng)絡(luò)在解鎖手機(jī)和已注冊(cè)的人臉之間進(jìn)行計(jì)算的距離,以及是否處于某個(gè)閾值之下。
讓我們從注冊(cè)開始:我從數(shù)據(jù)集中采集了同一個(gè)人的一系列照片,并模擬了注冊(cè)階段。該設(shè)備開始計(jì)算每個(gè)姿態(tài)的嵌入,并將它們存儲(chǔ)在本地。
受FaceID新用戶注冊(cè)過程的啟發(fā)
深度相機(jī)所看到的注冊(cè)階段
現(xiàn)在讓我們看看如果同一用戶試圖解鎖設(shè)備會(huì)發(fā)生什么。同一用戶的不同姿勢(shì)和面部表情實(shí)現(xiàn)了較低的距離,約為0.30多點(diǎn)。
同一用戶嵌入空間中的距離。
另一方面,來自不同人的RGBD圖片的平均距離為1.1。
不同用戶嵌入空間中的距離
因此,使用約0.4的閾值應(yīng)足以防止陌生人解鎖你的設(shè)備。
-
iphonex
+關(guān)注
關(guān)注
3文章
614瀏覽量
30498 -
faceid
+關(guān)注
關(guān)注
2文章
89瀏覽量
11898
原文標(biāo)題:使用深度學(xué)習(xí)實(shí)現(xiàn)iPhone X的FaceID
文章出處:【微信號(hào):machinelearningai,微信公眾號(hào):機(jī)器學(xué)習(xí)算法與人工智能】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論