蘋果披露臉部識別技術(shù)演變,“非成熟技術(shù)不用原則”貫穿始終
從 2007 年推出第一部 iPhone到現(xiàn)在已經(jīng)十年?;仡櫄v年來的 iPhone 產(chǎn)品,很多的新技術(shù)都并非首創(chuàng),而且蘋果都會選擇較為成熟的技術(shù)搭載在產(chǎn)品上,以求給消費者較好的用戶體驗。
本文引用地址:http://www.ex-cimer.com/article/201711/371729.htm比如說,真正讓 iPhone 成為業(yè)界標(biāo)桿的觸屏技術(shù),其實早在 1999 年摩托羅拉就已經(jīng)推出了搭載觸屏技術(shù)的 A6188;還有從 iPhone 5S 開始使用的指紋識別技術(shù),最先也由摩托羅拉在 2011年推出。
圖丨摩托羅拉觸屏手機(jī) A6188 及指紋解鎖手機(jī) Atrix 4G
當(dāng)年,喬布斯似乎為蘋果定下了非成熟技術(shù)不用的原則,一方面當(dāng)然是為了照顧用戶體驗,另一方面,他一直強(qiáng)勢的認(rèn)為一旦某一技術(shù)搭載在 iPhone 上,就必須成為業(yè)界典范。而事實也的確如此,從普及智能手機(jī),到數(shù)個語音助理Siri,到指紋識別,到取消3.5mm耳機(jī)插孔,都在某種程度上設(shè)定了新的業(yè)界標(biāo)準(zhǔn),使得其他手機(jī)廠商紛紛跟進(jìn)。
現(xiàn)在,全新的 iPhone 8 及iPhone X 已經(jīng)上市,其面部識別功能 Face ID無疑是一大亮點。但和往常一樣,這并不是一個全新的技術(shù)。蘋果早在2013年推出的 iOS 7 中其實就已經(jīng)整合了相關(guān)的核心功能組件,而其中技術(shù)甚至可以追溯至2001年。但直到 2017 年,蘋果才認(rèn)為這項技術(shù)已經(jīng)成熟,是時候搭載到最新的 iPhone 產(chǎn)品上了。
蘋果機(jī)器學(xué)習(xí)開發(fā)團(tuán)隊于 16 日發(fā)表了一篇技術(shù)文章,主要是在介紹Vision 這個 API 背后所牽涉到的神經(jīng)網(wǎng)絡(luò)機(jī)制,以及最初如何靠由簡單的非神經(jīng)網(wǎng)絡(luò)算法,做出人臉識別的功能。
眾所周知,iPhone X 中的 Face ID 功能利用人臉識別取代過去的指紋識別,在有效提升便利性之余,也憑借其基于機(jī)器學(xué)習(xí)的核心算法,以及對臉孔的 3D 掃描機(jī)制,確保手機(jī)能識別出真正的主人,且隨著使用的時間增加,手機(jī)對主人臉孔的熟悉度也會跟著增加。
即便因為戴眼鏡或者是口罩而識別不出,甚至是經(jīng)過整容,但只要輸入密碼,手機(jī)就會把剛剛捕捉到的臉孔特征加進(jìn)學(xué)習(xí)模型中,往后戴一樣的眼鏡或口罩時,手機(jī)還是可以認(rèn)得你,不必?fù)?dān)心會有被盜用等安全疑慮。
當(dāng)然,密碼還是要保管好!
圖丨iPhone X 中的 Face ID 功能演示
然而,為了達(dá)到夠高的識別正確率,蘋果從算法到硬件設(shè)計,可是花了很多心思。但這個過程可以回溯到2011 年蘋果在 iOS 5 上發(fā)表的一套圖像識別框架 Core Image 身上。
雖然和 2004 年在 Mac OS X 上的 Core Image 名字完全一樣,但內(nèi)容完全不同,Mac OS X 上的 Core Image 主要就是用來作為圖形處理使用,可在圖形上實時套用一般圖像處理軟件可做到的特效濾鏡。
蘋果把 Core Image 搬到 iOS 5 上后,隨著操作系統(tǒng)的改版也不斷增加新功能,隨著 2013 年的 iOS 7,蘋果引進(jìn)了CIDetector這個功能類,而其最重要的核心功能,就是用來進(jìn)行臉部識別。
但這時的臉孔識別并沒有太大的商用價值,因為只能識別是不是人臉,卻無法從人臉特征認(rèn)出本人。后來蘋果轉(zhuǎn)而在 2014 年投入深度學(xué)習(xí)研究,經(jīng)過 3 年的時間,推出OpenML這個完整的深度學(xué)習(xí)生態(tài),以及與之搭配的Neuro engine 硬件 AI 處理單元。且推出首個基于硬件處理的手機(jī)深度學(xué)習(xí)應(yīng)用Face ID。
Face ID的雛形CIDetector,源自 2001 年
Core Image 演進(jìn)到 iOS 7.0,其功能包含了 CIImage、CIContex、CIFilter 以及 CIDetecor,而重點中的重點,就是 CIDetecor 這個功能類了。
所以說,當(dāng)iOS 7 引入 CIDetecor 之后,基本上就具備了臉部識別的能力,但各位可能會有疑惑,那怎么從 iOS 7 進(jìn)展到 iOS 11,隔了這么久才使出 Face ID 這個大絕招?
既然是大絕招,當(dāng)然前期練功運氣的過程不可避免,且 iOS 7 所使用的臉部識別算法有很大的缺陷,蘋果也認(rèn)為要把這個技術(shù)用來做高精度的臉孔識別還為時過早。
實際上,iOS 7 中 CIDetector 的臉部識別技術(shù),使用了 Viola-Jones 這種基于簡單特征的對象識別技術(shù),此技術(shù)早在 2001 年就由同是畢業(yè)于麻省理工學(xué)院的 PaulViola(目前就職于亞馬遜) 及 Michael Jones(現(xiàn)供職于三菱電機(jī)研究實驗室,MERL)兩人共同提出,基于 AdaBoost 算法,使用 Haar-like 小波特征(簡稱類 haar 特征,是一種用來描述圖像的數(shù)字特征)和積分圖方法進(jìn)行人臉檢測。
雖然這兩人并非最早使用提出小波特征的研究者,但是他們設(shè)計了針對人臉檢測更有效的特征,并對 AdaBoost 訓(xùn)練出的強(qiáng)分類器進(jìn)行級聯(lián)。這可說是人臉檢測史上里程碑式的一筆,也因此當(dāng)時提出的這個算法被稱為Viola-Jones 算法。
毫無疑問,對于 2001 年計算機(jī)還不是那么普及的時代背景下,能夠創(chuàng)造出針對人臉的識別算法雖有其開創(chuàng)性的意義,但是該算法太過粗糙,采用的特征點數(shù)量太小,因此容易造成誤判,或者是被干擾的狀況。
也因為這個問題,蘋果不敢貿(mào)然把臉部識別的功能放到產(chǎn)品中,畢竟誤判率太高,對產(chǎn)品的使用體驗會是嚴(yán)重傷害。
圖丨三星面部識別
但還是有不少“勇敢”的廠商直接把這種臉部識別技術(shù)做到產(chǎn)品中:比如說,微軟的 Surface 平板,以及三星的 Galaxy 手機(jī)和平板,早在 2016 年就先后強(qiáng)調(diào)其集成在產(chǎn)品中的臉部識別功能。理所當(dāng)然的,其識別出錯機(jī)率高不說,只要拍張賬號所有人的臉部照片,就可以打印出來讓機(jī)器識別,并可認(rèn)證通過——可以想象,這樣的安全性表現(xiàn),自然過不了蘋果對產(chǎn)品要求的基本門坎。
但到了 iOS 8,CIDetector 這個功能類又增加了針對條形碼、物體形狀以及文本的識別能力,用的都還是同一套計算邏輯。人臉識別的功能依舊保留,但只用在非關(guān)鍵的照相或者是圖片處理上,并且通過 GPU 加速來增加其識別效率。
在這時,CIDetector 的人臉識別功能最主要是用來判斷“是不是人臉”,而不是判別出“這是誰的臉”,離現(xiàn)在的 Face ID 功能還有相當(dāng)遙遠(yuǎn)的距離,反而在條形碼判讀方面的應(yīng)用還比較廣,而其對象識別能力,亦逐漸被用在 AR 功能上。
無論如何,可以見得蘋果對于新興技術(shù)的運用相當(dāng)謹(jǐn)慎,至今也是如此。不久前,《麻省理工科技評論》曾對蘋果現(xiàn)任CEO蒂姆·庫克 (TimCook)進(jìn)行了專訪。當(dāng)被問及如何看待很多人認(rèn)為蘋果在AI領(lǐng)域正在落后于谷歌、微軟、亞馬遜等公司,他的回答是:“不僅僅是人工智能,其他方面也是一樣。大家經(jīng)常把我們正在賣的東西跟別人規(guī)劃的東西做比較。很多人賣的是概念,他們有他們的理由,我沒有批評誰的意思,只是我們不這么做?!?/p>
"消費者是不會在意整合進(jìn)產(chǎn)品的機(jī)器學(xué)習(xí)技術(shù),他們甚至都不知道這種技術(shù)的存在。而恰恰是有了機(jī)器學(xué)習(xí),iPhone的電池續(xù)航時間更長。其實iPhone里有一大堆東西都會讓你感覺‘哦,原來那也是機(jī)器學(xué)習(xí)啊’。我們從來不覺得需要告訴消費者我們的產(chǎn)品里有哪些用到了機(jī)器學(xué)習(xí),因為這不是消費者最關(guān)心的。我們關(guān)心,因為我們在技術(shù)領(lǐng)域工作,但用戶不在乎,他們只在乎好不好用。"
云端 AI 牽扯到隱私問題,蘋果轉(zhuǎn)而尋求終端解法
到了 2014 年,蘋果看到深度學(xué)習(xí)在大型計算平臺上的應(yīng)用已經(jīng)越來越成熟,進(jìn)而想到了逐漸實用化的深度學(xué)習(xí)在移動平臺應(yīng)該同樣有著極高的應(yīng)用潛力,研發(fā)人員產(chǎn)生了一個想法:如果把深度學(xué)習(xí)放在手機(jī)上,那是不是可以做到更酷炫、更精確的識別功能?
然而,理想很豐滿,但現(xiàn)實很骨感。先不論現(xiàn)在的手機(jī)已經(jīng)逐漸集成用來處理 AI 計算的專用處理單元,比如說華為在麒麟 970 使用的 NPU,2014 年的手機(jī)芯片計算性能非常羸弱,不堪作為深度學(xué)習(xí)的視覺模型計算平臺。
當(dāng)時行業(yè)里如果要做到 AI 功能,通常都是通過云端 API 提供相關(guān)的深度學(xué)習(xí)方案。如果使用基于云的深度學(xué)習(xí)方案,那么諸如臉孔識別,就可以通過手機(jī)收集臉孔圖像,然后發(fā)送至云端來進(jìn)行學(xué)習(xí)以檢測人臉。這些基于云的服務(wù)通常使用強(qiáng)大的桌面級 GPU 架構(gòu),并且同時使用了龐大的內(nèi)存。通過這些云服務(wù)設(shè)備,手機(jī)這樣的終端也能使用深度學(xué)習(xí)來解決問題。
但這又產(chǎn)生了另一個問題,蘋果的 iCloud 受到嚴(yán)格的隱私與數(shù)據(jù)使用限制,所以 iCloud 上雖然存在龐大的照片數(shù)據(jù),但這些數(shù)據(jù)都不能被用來進(jìn)行深度學(xué)習(xí)。理論上發(fā)送到 iCloud 的照片和視頻都會再發(fā)送到云存儲設(shè)備前先經(jīng)過加密,并且只能通過注冊到 iCloud 的賬戶來進(jìn)行解密,所以,要進(jìn)行深度學(xué)習(xí),蘋果只能選擇在手機(jī)上直接進(jìn)行相關(guān)計算,而不是在云端處理。
也正因為此,挑戰(zhàn)就來了:要在 iPhone 上進(jìn)行深度學(xué)習(xí),就必須占用相當(dāng)龐大且珍貴的 NAND 存儲空間,且學(xué)習(xí)時必須將整個數(shù)據(jù)庫都加載到內(nèi)存中,并且耗用大量的 CPU 或 GPU 計算能力。
另外,與基于云計算的服務(wù)不同,云計算的資源只需要專注于視覺問題,反觀終端設(shè)備上的深度學(xué)習(xí)計算必須與其它正在運行的應(yīng)用程序共享系統(tǒng)資源。最后,這些計算必須獲得足夠高效的處理,要能在相當(dāng)短的時間內(nèi)處理龐大的照片庫,且不能帶來顯著的功耗或熱量增加。
用 OverFeat 深度學(xué)習(xí)算法取代傳統(tǒng) Viola-Jones 的特征識別方式
2014 年蘋果的研發(fā)人員開始探討如何通過深度學(xué)習(xí)來檢測圖像中的人臉時,深度卷積網(wǎng)絡(luò) (DCN)其實才剛剛開始在物體檢測上有所發(fā)揮,并產(chǎn)生相當(dāng)可靠的結(jié)果。而 DCN 算法中,最突出的是一種名為“OverFeat”的作法,靠由相對簡單的邏輯,可以達(dá)到相當(dāng)有效且可靠的圖像描繪結(jié)果。
研發(fā)人員使用了基于 OverFeat 論文中的見解來架構(gòu)最初的 Face ID 里面的人臉識別算法,并以之建立了一個完整的卷積網(wǎng)絡(luò),靠以達(dá)成兩個任務(wù)目標(biāo):
1. 使用二進(jìn)制分類來預(yù)測輸入數(shù)據(jù)中臉部的存在與否。
2. 預(yù)測邊界框架的參數(shù)回歸,靠以更好的定位輸入中的臉部數(shù)據(jù)。
研究人員使用了幾個訓(xùn)練這種網(wǎng)絡(luò)的方法:
最簡單的訓(xùn)練過程是創(chuàng)建一個固定大小圖像塊的大數(shù)據(jù)集,該圖像對應(yīng)網(wǎng)絡(luò)的最小單一有效輸入,靠以優(yōu)化整個網(wǎng)絡(luò)算法的多任務(wù)目標(biāo)計算能力。訓(xùn)練的數(shù)據(jù)集代表了理想狀態(tài)下的學(xué)習(xí)判讀過程,研發(fā)人員靠此判斷整個網(wǎng)絡(luò)的計算潛力以及彈性,并針對更多不同的可能性來調(diào)整網(wǎng)絡(luò)的參數(shù)。而訓(xùn)練完畢之后,網(wǎng)絡(luò)就能夠預(yù)測任一圖像中是否包含了人臉,如果判斷為是,那它還能指出人臉在圖像中的坐標(biāo)和比例。
圖丨蘋果研發(fā)人員優(yōu)化過的人臉識別 DCN 網(wǎng)絡(luò)結(jié)構(gòu)
由于網(wǎng)絡(luò)是完全卷積的,所以能夠高效的處理任意大小的圖像,并且生成 2D 輸出對應(yīng)地圖。而對應(yīng)地圖上的每個點都可對應(yīng)到輸入圖像中的任何區(qū)塊,而這些點也包含了來自網(wǎng)絡(luò)中,對于該圖塊是否存在人臉以及該人臉在圖塊中的相對位置和比例的預(yù)測。
當(dāng)我們完整定義網(wǎng)絡(luò)后,就可建立標(biāo)準(zhǔn)的處理流水線來執(zhí)行人臉檢測,這個流水線里面包含了多尺度的圖像金字塔、人臉檢測器以及后處理模塊等三大部分。多尺度的金字塔主要是用來處理各種尺寸的臉孔。當(dāng)收集到臉孔數(shù)據(jù),我們把網(wǎng)絡(luò)應(yīng)用到金字塔的每個不同尺度級別,并從每一層收集候選檢測資料。后處理模塊則是用來把這些檢測結(jié)果跨度進(jìn)行組合,靠以產(chǎn)生對網(wǎng)絡(luò)映對圖像中,臉部檢測的最終預(yù)測邊界框的列表。
圖丨使用 DCN 卷積網(wǎng)絡(luò)建立出來的人臉檢測流水線
打造基于深度學(xué)習(xí)計算的 OpenML,創(chuàng)造人臉識別的基礎(chǔ)平臺 Vision
雖然蘋果過去為其終端設(shè)備設(shè)計了不少針對圖像處理的 API,比如說前面提到的 Core Image,但這些基于舊世代邏輯的 API,其實已經(jīng)無法很好的應(yīng)對未來復(fù)雜應(yīng)用的計算需求,而因為深度學(xué)習(xí)的應(yīng)用不論在云端或者是終端已經(jīng)是不可避免的趨勢,所以蘋果研發(fā)人員推出了OpenML這個深度學(xué)習(xí)開發(fā)環(huán)境,以及Vision這個針對深度學(xué)習(xí)優(yōu)化的圖像成像信道。
憑借 Vision,開發(fā)人員大部分的基本圖形操作可以自動完成。另外,在內(nèi)存耗用以及功耗表現(xiàn)方面,尤其是流媒體,以及圖像捕捉過程,內(nèi)存的占用過去一直是個懸而未決的問題。隨著攝影鏡頭的照相解析能力越來越高,其所能捕獲的圖像質(zhì)量以及容量需求也不斷增加。研發(fā)人員通過部分二次采樣解碼以及自動平鋪技術(shù)來解決內(nèi)存占用過高的問題,因此,機(jī)器視覺可以被應(yīng)用到各種圖像中,即便是全景照片這種非常規(guī)高寬比的大型圖像也能順利工作。
Vision 也能妥善且有效率的使用中間體來優(yōu)化圖像識別的工作。諸如人臉識別,或者是人臉標(biāo)志檢測的工作都可以通過相通的中間體來加以處理。研發(fā)人員把相關(guān)算法的接口抽象出來,找到要處理的圖像或緩沖區(qū)的所有權(quán)位置后,Vision 就可以自動創(chuàng)件以及緩存中間圖像,靠以提高相關(guān)的視覺任務(wù)計算性能。
師徒制神經(jīng)網(wǎng)絡(luò)訓(xùn)練法解決過高的系統(tǒng)資源占用問題
Vision 的人臉檢測工作也需要大量的 GPU 計算,但 GPU 本身是一種相當(dāng)耗電的架構(gòu),且計算過程中也會占用一定的內(nèi)存空間。為了減少內(nèi)存的占用,研發(fā)人員通過分析計算圖來分配神經(jīng)網(wǎng)絡(luò)的珠間曾,靠以讓多個圖層能夠?qū)?yīng)到同一個緩沖區(qū)。這個技術(shù)能夠減少內(nèi)存占用,且不會明顯影響性能,并且可在 CPU 或是 GPU 上進(jìn)行處理,兼顧了效率和彈性表現(xiàn)。
為了確保深層神經(jīng)網(wǎng)絡(luò)在后臺運行時,前臺的系統(tǒng)操作流暢性仍能維持一致,研發(fā)人員更將網(wǎng)絡(luò)的每一層分割 GPU 工作,直到每個工作線程的占用的 CPU 時間都少于1 毫秒,讓操作系統(tǒng)可以快速將應(yīng)用情境切換到優(yōu)先級更高的任務(wù)上,比如說 UI 動畫的處理,靠以確保使用者得到的使用體驗仍能維持一致。
研發(fā)人員雖靠由 Vision 建立起基本的神經(jīng)網(wǎng)絡(luò)。然而網(wǎng)絡(luò)復(fù)雜度和規(guī)模仍是要把這個網(wǎng)絡(luò)放到計算資源有限的終端設(shè)備上的最大挑戰(zhàn)。為了克服這個挑戰(zhàn),研發(fā)人員必須把網(wǎng)絡(luò)限制在相對簡單的拓樸結(jié)構(gòu)中,而且網(wǎng)絡(luò)層數(shù)、信道數(shù)量以及卷積濾波器的內(nèi)核大小也要受到限制。
這是個兩難的問題,如果網(wǎng)絡(luò)規(guī)模太小,那就不足以構(gòu)成可以快速判斷圖像的流水線,但太大,性能又會受到手機(jī)硬件的計算性能限制,導(dǎo)致反應(yīng)遲緩,且功耗和發(fā)熱會嚴(yán)重影響使用體驗。事實上,不論怎么嘗試,當(dāng)時要把整個神經(jīng)網(wǎng)絡(luò)搭載到僅僅只有 1GB 的手機(jī)內(nèi)存,可說是完全不可能的任務(wù)。
研發(fā)人員最終采用了類似“師生”的培訓(xùn)方法,也就是使用 1 個具有完整規(guī)模的“大師”網(wǎng)絡(luò),以之來訓(xùn)練另 1 個較小,且層數(shù)較少的“學(xué)生”網(wǎng)絡(luò),靠由這個訓(xùn)練,最終只具備簡單卷積網(wǎng)絡(luò)結(jié)構(gòu)的學(xué)生網(wǎng)絡(luò),也能呈現(xiàn)出極為接近大師網(wǎng)絡(luò)的識別結(jié)果。最終,把神經(jīng)網(wǎng)絡(luò)放到手機(jī)上的計劃終于獲得實現(xiàn)。
結(jié)合 Neural Engine 芯片,GPU 和 CPU 更可專注于使用體驗的改善
開發(fā)了 3 年的 Vision 成為蘋果在今年的 WWDC 發(fā)表泛用 AI 的機(jī)器學(xué)習(xí)框架 OpenML 的重要部件之一,而除了 Vision 以外,還加入了用于協(xié)助自然語言處理的 Fundation 、及讓游戲開發(fā)商可以在游戲中導(dǎo)入 AI 的 GameplayKit 等三大應(yīng)用框架,這些開發(fā)環(huán)境也都用上了深度學(xué)習(xí)技術(shù)。
雖然通過 OpenML,可以妥善利用 GPU 和 CPU 的計算性能,達(dá)到不錯的深度學(xué)習(xí)性能,但蘋果并不滿足于現(xiàn)況,并認(rèn)為要達(dá)到最好的使用體驗,就必須加入專用的深度學(xué)習(xí)硬件,這么一來不但可以增加神經(jīng)網(wǎng)絡(luò)的規(guī)模,強(qiáng)化識別的正確性,同時也不會造成系統(tǒng)的延遲,而這也就是蘋果為何要與 Vision 同步研發(fā) A11 內(nèi)建 Neuro Engine 的主要原因。
憑借 Neuro Engine,所有深度學(xué)習(xí)相關(guān)的工作都可通過這個專屬的核心來進(jìn)行處理,CPU 和 GPU 可以專注進(jìn)行前臺任務(wù),不會被后臺的任務(wù)所干擾,比過去所有的架構(gòu)都更有效率,使用此計算架構(gòu)加速的 Face ID,也表現(xiàn)出極高的識別速度以及正確性。Neural Engine 可做到每秒鐘六億次的操作效率,也就是0.6TOPS,在其功耗限制的條件下能做到這樣的效能輸出,其實已經(jīng)算是業(yè)界數(shù)一數(shù)二了。
而作為蘋果軟硬生態(tài)未來不可缺的一部份,Neural Engine 也將會在整個蘋果終端的開發(fā)環(huán)境中占有非常重要的地位,不僅是目前的圖像識別或臉孔識別工作,未來在 AR 或 VR 圖像的繪制或迭加到真實世界的處理,肯定都會發(fā)揮其增進(jìn)深度學(xué)習(xí)計算效能,并優(yōu)化整體系統(tǒng)功耗表現(xiàn),靠此更加強(qiáng)化蘋果在相關(guān)應(yīng)用的使用體驗。
評論