最近大家談?wù)撟疃嗟年P(guān)于新款iPhone X的功能之一就是新的解鎖技術(shù),即TouchID的后續(xù)技術(shù):FaceID。
創(chuàng)建了無(wú)邊框手機(jī)后,蘋(píng)果不得不找出新方法簡(jiǎn)單快捷地解鎖手機(jī)。雖然一些競(jìng)爭(zhēng)對(duì)手繼續(xù)使用放在不同位置的指紋傳感器,但蘋(píng)果決定對(duì)解鎖手機(jī)的方式進(jìn)行創(chuàng)新和變革:只需看一眼,F(xiàn)aceID就能安全地解鎖iPhone X。借助一款先進(jìn)(而且非常小巧)的前置深度相機(jī),iPhone X可以建立用戶臉部的3D模型。此外,iPhone X通過(guò)紅外攝像頭識(shí)別人臉,可以避免環(huán)境光和顏色對(duì)人臉識(shí)別的影響。通過(guò)深度學(xué)習(xí),手機(jī)可以捕捉到用戶臉部的很多細(xì)節(jié),因此在用戶拿著手機(jī)的時(shí)候,手機(jī)可以識(shí)別出它的主人。比較令人驚訝的是,蘋(píng)果表示這種方法比TouchID更安全,出錯(cuò)率為百萬(wàn)分之一。
我對(duì)蘋(píng)果的FaceID的實(shí)現(xiàn)技術(shù)非常感興趣,特別是它完全運(yùn)行在設(shè)備上,而且只需利用用戶的面部進(jìn)行一點(diǎn)點(diǎn)訓(xùn)練,就可以在每次拿起手機(jī)的時(shí)候順利地進(jìn)行識(shí)別。我研究了如何使用深度學(xué)習(xí)來(lái)實(shí)現(xiàn)此過(guò)程,以及如何優(yōu)化每個(gè)步驟。在這篇文章中,我將展示如何使用Keras實(shí)現(xiàn)一個(gè)類(lèi)似FaceID的算法。我會(huì)介紹采用的各種架構(gòu),并展示一些在Kinect(一種非常流行的RGB-D相機(jī),擁有與iPhone X前置攝像頭非常相似的輸出,但設(shè)備本身更大)上的最終實(shí)驗(yàn)。倒杯咖啡,讓我們開(kāi)始逆向工程蘋(píng)果的新技術(shù)。
對(duì)FaceID的初步了解
“……賦予FaceID力量的神經(jīng)網(wǎng)絡(luò)不是簡(jiǎn)單的分類(lèi)?!?/p>
FaceID注冊(cè)的過(guò)程
第一步我們來(lái)仔細(xì)分析FaceID在iPhone X上的工作原理。我們可以通過(guò)蘋(píng)果的白皮書(shū)理解FaceID的基本機(jī)制。使用TouchID的時(shí)候,用戶必須多次按傳感器來(lái)注冊(cè)自己的指紋。大約需要15-20次不同的觸摸,iPhone才能完成注冊(cè),并準(zhǔn)備好TouchID。同樣地,F(xiàn)aceID也需要用戶進(jìn)行臉部注冊(cè)。過(guò)程非常簡(jiǎn)單:用戶只需像往常一樣看著手機(jī),然后慢慢地轉(zhuǎn)動(dòng)頭部一圈,從不同的角度注冊(cè)臉部。如此,注冊(cè)過(guò)程就完成了,手機(jī)已經(jīng)準(zhǔn)備好解鎖了。這個(gè)超快的注冊(cè)過(guò)程可以告訴我們很多關(guān)于底層學(xué)習(xí)算法的信息。比如,F(xiàn)aceID背后的神經(jīng)網(wǎng)絡(luò)并不是簡(jiǎn)單的分類(lèi)。我會(huì)在后面進(jìn)行詳細(xì)的解釋。
Apple Keynote推出iPhone X和FaceID
對(duì)于神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),分類(lèi)的意思是學(xué)習(xí)如何預(yù)測(cè)看到的臉是不是用戶的臉。所以,它需要一些訓(xùn)練數(shù)據(jù)來(lái)預(yù)測(cè)“是”或“否”,但與很多其他深度學(xué)習(xí)的應(yīng)用場(chǎng)景不同,所以這種方式在這里并不適用。首先,神經(jīng)網(wǎng)絡(luò)需要使用從用戶臉上捕捉到的數(shù)據(jù)重新進(jìn)行訓(xùn)練。而這需要消耗大量的時(shí)間和電量,還需要大量的不同面孔作為訓(xùn)練數(shù)據(jù)以獲得負(fù)面的樣本,這也是不現(xiàn)實(shí)的。即使是試圖遷移并微調(diào)已經(jīng)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò),這些條件也幾乎不會(huì)變化。而且,蘋(píng)果也不可能在實(shí)驗(yàn)室等地方“線下”訓(xùn)練復(fù)雜的神經(jīng)網(wǎng)絡(luò),然后再將訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)搭載在手機(jī)中。相反,我認(rèn)為FaceID是由孿生卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的(siamese-like convolutional neural network),該網(wǎng)絡(luò)由蘋(píng)果公司進(jìn)行“線下”培訓(xùn),將臉部映射到一個(gè)低維潛在空間(latent space),并通過(guò)對(duì)比損失函數(shù)(contrastive loss)最大化不同人臉之間的距離。通過(guò)本文,你可以了解Keynote中提到的體系結(jié)構(gòu)。我知道,很多讀者對(duì)上述名詞很陌生,但是沒(méi)關(guān)系,我會(huì)逐步的進(jìn)行詳細(xì)的解釋。
FaceID看起來(lái)會(huì)是TouchID之后的新標(biāo)準(zhǔn)。蘋(píng)果是否會(huì)把它帶到所有的新設(shè)備上?
從人臉到神經(jīng)網(wǎng)絡(luò)的數(shù)字


Hadsell,Chopra和LeCun發(fā)表的論文“Dimensionality Reduction by Learning an Invariant Mapping”。請(qǐng)注意此架構(gòu)是如何學(xué)習(xí)數(shù)字之間的相似性,并自動(dòng)將它們分組在二維中。類(lèi)似的技術(shù)也可以應(yīng)用于面部識(shí)別。

FaceID可以適應(yīng)外觀的變化
接下來(lái),讓我們看看如何利用Python和Keras實(shí)現(xiàn)。
使用Keras實(shí)現(xiàn)FaceID
就像所有的機(jī)器學(xué)習(xí)項(xiàng)目一樣,我們首先需要的是數(shù)據(jù)。創(chuàng)建自己的數(shù)據(jù)集需要花費(fèi)大量時(shí)間和許多人的配合,這項(xiàng)工作本身可能非常具有挑戰(zhàn)性。因此,我搜索了網(wǎng)絡(luò)上RGB-D的人臉數(shù)據(jù)集,找到了一個(gè)非常合適的數(shù)據(jù)集(http://www.vap.aau.dk/rgb-d-face-database/)。這個(gè)數(shù)據(jù)集是根據(jù)人臉面向不同的方向以及不同的表情制作出的RGB-D圖像集,正好類(lèi)似于iPhone X的情況。
最終的實(shí)現(xiàn)可以參考我的GitHub代碼庫(kù)(https://github.com/normandipalo/faceID_beta),里面有個(gè)Jupyter Notebook。我還進(jìn)一步嘗試了使用Colab Notebook,你也可以試試看。
我創(chuàng)建了一個(gè)基于SqueezeNet架構(gòu)的卷積網(wǎng)絡(luò)。這個(gè)神經(jīng)網(wǎng)絡(luò)以兩組RGBD的面部圖像(即4通道圖像)作為輸入,并輸出兩組數(shù)據(jù)之間的距離。該網(wǎng)絡(luò)用對(duì)比損失函數(shù)(constrastive loss)訓(xùn)練,可以最大程度地減少同一人的照片之間的距離,同時(shí)最大程度地提高不同人的照片之間的距離。

對(duì)比損失函數(shù)

使用t-SNE創(chuàng)建嵌入空間中的人臉的簇,每種顏色代表不同的面孔(但顏色被重復(fù)使用)
使用PCA創(chuàng)建嵌入空間中的人臉的簇,每種顏色都是不同的面孔(但顏色被重復(fù)使用)
實(shí)驗(yàn)!
現(xiàn)在我們可以試試個(gè)模型,模擬一個(gè)常見(jiàn)的FaceID的流程:首先,注冊(cè)用戶的面部;然后在解鎖階段,需要驗(yàn)證兩個(gè)方面——主人可以解鎖,而其他人不可以。 如前所述,區(qū)別在于神經(jīng)網(wǎng)絡(luò)會(huì)計(jì)算解鎖手機(jī)時(shí)和注冊(cè)時(shí)的臉部的距離,然后判斷是否在某個(gè)閾值以下。
下面我們來(lái)注冊(cè):我從數(shù)據(jù)集中采集了同一人的一系列照片,并模擬了注冊(cè)階段?,F(xiàn)在該設(shè)備將計(jì)算每個(gè)姿勢(shì)的嵌入,并保存在本地。
新用戶注冊(cè)階段,模仿FaceID的過(guò)程
在深度相機(jī)中觀察到的注冊(cè)階段
嵌入空間中同一個(gè)用戶的面部距離
嵌入空間中不同用戶的面部距離
因此,我們可以將閾值設(shè)置為大約0.4,就可以阻止陌生人解鎖設(shè)備了。
結(jié)論
在這篇文章中,我展示了如何利用面部嵌入和孿生卷積神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)FaceID解鎖機(jī)制的原型。希望對(duì)你能有所幫助。如果你有任何問(wèn)題都可以和我聯(lián)系。你可以從以下鏈接找到所有相關(guān)的Python代碼:
-
iPhone
+關(guān)注
關(guān)注
28文章
13523瀏覽量
216528 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4838瀏覽量
107915 -
faceid
+關(guān)注
關(guān)注
2文章
89瀏覽量
12567
發(fā)布評(píng)論請(qǐng)先 登錄
隆基正式推出Hi-MO X10特種防火組件
恩智浦推出全新UCODE X以突破RAIN RFID應(yīng)用邊界
納芯微正式推出新一代線性位置傳感器MT911x與MT912x系列
磐啟微電子推出PAN312x和PAN311x系列Sub-1G GFSK芯片
廣和通推出基于高通X85與X82的5G FWA解決方案
蘋(píng)果推出史上最薄手機(jī)iPhone Air iPhone Air確認(rèn)支持中國(guó)聯(lián)通eSIM
【HarmonyOS Next】ArkUI-X休閑益智接水果【進(jìn)階】
【HarmonyOS next】ArkUI-X休閑益智記憶翻牌【進(jìn)階】
findmy定位技術(shù)的技術(shù)原理說(shuō)明簡(jiǎn)介
蘋(píng)果首款真·全面屏iPhone要來(lái)了#蘋(píng)果 #iphone #手機(jī) #apple?
技嘉推出 STEALTH ICE 系列 AMD X870/B850 背插主板
Apple Intelligence全球開(kāi)放 支持簡(jiǎn)體中文
蘋(píng)果折疊屏iPhone終于要來(lái)了,價(jià)格比筆記本電腦還貴
Apple Find My?Network 防丟方案
Nexperia推出高效耐用的1200 V SiC MOSFET,采用創(chuàng)新X.PAK封裝技術(shù)
Apple Keynote推出iPhone X和FaceID
評(píng)論