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