對於iPhone的faceID,你有沒有細思極恐?

道機書生


因為我職業是算法工程師,當我看到iPhone的Face ID,說真的,我被它的模型設計所感嘆,確實是很有想象力,真的會“細思極恐”,怎麼有這麼優雅的工業設計,我就從我的角度來說說它吧。

Apple開始在iOS 10中使用深度學習進行人臉檢測。隨著Vision框架的發佈,開發人員現在可以在其應用程序中使用該技術和許多其他計算機視覺算法。在開發框架時面臨著嚴峻的挑戰,以便可以保護用戶的隱私並在設備上高效運行。

介紹

蘋果首先通過CIDetector類在Core Image框架的公共API中發佈了人臉檢測。Apple應用程序(例如,照片)在內部也使用了此API。最早發佈的CIDetector使用了一種基於Viola-Jones檢測算法的方法。蘋果基於傳統計算機視覺的進步對CIDetector進行了後續改進。

隨著深度學習的出現及其在計算機視覺問題中的應用,最新的人臉檢測精度取得了巨大的飛躍。但與傳統的計算機視覺相比,深度學習中的學習模型需要更多數量級的內存,更多磁盤存儲以及更多計算資源。

蘋果的iCloud照片庫是用於照片和視頻存儲的基於雲的解決方案。但是,由於Apple對用戶隱私的堅定承諾,蘋果無法將iCloud服務器用於計算機視覺計算。發送到iCloud照片庫的每張照片和視頻在發送到雲存儲之前均已在設備上加密,並且只能由向iCloud帳戶註冊的設備解密。因此,為了將基於深度學習的計算機視覺解決方案帶給大家使用,所以必須直接解決在iPhone上運行深度學習算法的挑戰。

深度學習模型需要作為操作系統的一部分提供,佔用寶貴的NAND存儲空間。它們還需要加載到RAM中,並在GPU和/或CPU上需要大量的計算時間。與基於雲的服務(其資源只能專門用於視覺問題)不同,必須在與其他正在運行的應用程序共享這些系統資源的同時進行設備上計算。最後,計算必須足夠有效,以在相當短的時間內處理大型照片庫,而又不會顯著降低功耗或熱量增加。

本文的其餘部分討論了我們基於深度學習的人臉檢測的算法方法,以及如何成功應對挑戰以實現最新的準確性,有如下難點:

  • 如何充分利用我們的GPU和CPU(使用BNNS和Metal);
  • 網絡推理以及圖像加載和緩存的內存優化;
  • 如何以不干擾iPhone預期執行的許多其他同時任務的方式實施網絡。

從Viola-Jones轉向深度學習

蘋果基於OverFeat論文的一些見解構建了初始體系結構,從而形成了具有以下各項的多任務目標的完全卷積網絡(請參見圖1):

  • 二進制分類,以預測輸入中是否存在人臉;
  • 進行迴歸以預測最能在輸入中定位人臉的邊界框參數。

研究室嘗試了幾種訓練這種網絡的方法。例如,用於訓練的簡單過程是創建固定大小的圖像圖塊的大型數據集,該圖像圖塊的大小對應於網絡的最小有效輸入,以使每個圖塊從網絡生成單個輸出。訓練數據集在理想情況下是平衡的,因此一半的圖塊包含一個臉(正類),另一半不包含一個臉(負類)。對於每個正片,研究人員會提供臉部的真實位置(x,y,w,h)。所以在訓練網絡時會優化前面描述的多任務目標。訓練完成後,網絡就可以預測圖塊是否包含人臉,如果這樣,它還可以提供圖塊中人臉的座標和比例。

由於網絡是完全卷積的,因此它可以有效地處理任意大小的圖像並生成2D輸出圖。地圖上的每個點都對應於輸入圖像中的圖塊,幷包含來自網絡的有關該標題中存在或不存在人臉及其在輸入圖塊中的位置/比例的預測。

有了這樣的網絡,就可以構建一個相當標準的處理管道來執行面部檢測,該管道由多尺度圖像金字塔,面部檢測器網絡和後處理模塊組成。而且需要一個多尺度的金字塔來處理各種尺寸的面孔。然後將網絡應用於金字塔的每個級別,並從每一層收集候選檢測。最後使用處理模塊將這些候選檢測結果跨比例組合在一起,以生成與網絡對圖像中人臉的最終預測相對應的邊界框列表。

優化設備性能

蘋果實施了幾種策略來最大程度地減少內存佔用和GPU使用率。為了減少內存佔用,測試過程中通過分析計算圖來分配神經網絡的中間層。這使可以將多個圖層別名到同一緩衝區。在完全確定性的同時,此技術可減少內存佔用空間,而不會影響性能或分配碎片,可在CPU或GPU上使用。

對於視覺,檢測器運行5個網絡(每個圖像金字塔比例一個,如圖2所示)。這5個網絡共享相同的權重和參數,但其輸入,輸出和中間層具有不同的形狀。為了進一步減少佔用空間,在由這5個網絡組成的聯合圖上運行了基於活動度的內存優化算法,從而大大減少了佔用空間。同樣,多個網絡重複使用相同的權重和參數緩衝區,從而減少了內存需求。

為了在深層神經網絡在後臺運行時確保UI響應性和流暢性,蘋果為網絡的每一層劃分了GPU工作項,直到每個單獨的時間都小於一毫秒。這允許驅動程序及時將上下文切換到優先級較高的任務,例如UI動畫,從而減少並有時消除幀丟失。

結合所有這些策略,可以確保Apple用戶可以享受本地的,低延遲的私有深度學習推理,而無需知道他們的手機正在以每秒數百吉比特的速度運行神經網絡。

總結

與當今的手機一樣,典型的高端手機對於深度學習視覺模型而言並不是可行的平臺。業界大多數人通過基於雲的API提供深度學習解決方案來解決此問題。在基於雲的解決方案中,圖像被髮送到服務器以使用深度學習推理來檢測人臉進行分析。這些基於雲的服務通常使用功能強大的臺式機級GPU,具有大量可用內存。大型網絡模型以及潛在的大型模型集合可以在服務器端運行,從而使客戶端(可能是手機)可以利用大型的深度學習架構,而這些架構在本地無法運行。而iPhone卻可以將這些技術無縫融合到這臺手機上而且不影響用戶體驗,我覺得這已經很難得了。


大魔王Hacker


“細思極恐”是你“思”的方向偏了。對一件事物恐懼,尤其是對新生事物恐懼,往往是因為對它不瞭解。也就是俗話說的“恐懼源於未知”。所以,“細思”之後,你應該“不恐”,而不是“極恐”。

FaceID的技術很先進,但原理其實非常簡單。用深度相機(簡單來說,創建立體圖像的相機)和紅外相機(為了改善複雜光照條件下的表現)捕捉人臉的圖像,然後用深度學習(Deep Learning)技術學習人臉的細節。學習之後,就可以用人臉來識別身份了。

羅馬大學人工智能和機器人研究生Norman Di Palo就用Keras實現了類似FaceID的人臉識別功能。他認為,蘋果使用的是類似siamese卷積神經網絡(孿生卷積神經網絡)的模型。siamese卷積神經網絡由一對共享權重的“雙生”神經網絡構成,它可以將人臉映射到一個低維的潛空間(latent space),通過計算人臉表示間的對比損失(contrastive loss)來區分不同的人臉。而鬍鬚、帽子、眼鏡之類的東西,可以通過添加參考向量計算出同一人臉的不同表示。當然,由於手機硬件資源受限(雖然iPhone X有專門的機器學習芯片,但由於功耗的限制,算力仍然是有限的),模型的訓練應該主要是在部署之前完成的,然後通過遷移學習(transfer learning)遷移到手機上的“離線”模型。這樣可以實現FaceID的單樣本學習(one shot learning)。實際上,蘋果發佈會的keynote提到過FaceID用的是單樣本學習,Norman Di Palo的猜測正是基於這一蛛絲馬跡做出的。


P.S. Norman Di Palo基於Keras和siamese卷積神經網絡的FaceID實現代碼地址:

github.com/normandipalo/faceID_beta


論智


本人從事蘋果產品工作多年,認真來回答這個問題。

對於iPhone X的Face ID技術,(面容解鎖)相比於前幾代的Touch ID技術(指紋解鎖)確實更加高科技和方便。

之前也在網絡上新聞出現過兩位長得極其相似的人都可以解開iPhone。

可能是因為其中一個人通過幾次面容解鎖失敗後,iPhone X的處理器是a11仿生處理器,具有學習的功能,通過幾次解鎖失敗之後,手機的處理器會稍微更改和認知面容的掃描,那麼就可以另外一個人就可以解開這部iPhone。

但是這樣的情況呢是很少見的,不是說普遍的現象。手機本人錄入面容之後,無論是化妝,戴眼鏡,戴帽子等等的情況下都可以輕鬆的解鎖這部iPhone。

Face ID相比較指紋解鎖來講,會更安全一些。

比如說我們在用手機付款的時候,只需要掃一下面容就可以付款,不需要輸入指紋或者輸入密碼。這樣可以達到防偷窺,安全係數特別高。

科技的發展就是這樣,它要一步步逐漸的完善,我們要接觸新鮮的事物,並且接受新鮮的事物。容忍它的一些小缺點,相信以後的Face ID技術會越來越完善,沒有想象的那麼細思極恐。



希望我的回答,大家喜歡。


愛赫本的紀梵希


“細思恐極”是驚歎於這種技術的想象力。

當我第一次製作faceID模組內的一個濾光片時就被震驚了,感覺第一個想到應用光學原理到3D人臉識別的人是個“妥協”的奇才,在物理原理和現有材料/工藝的夾縫中找出了一條可行的小道。

網上有很多關於三維紅外人臉識別原理的講解(指iPhone X - Face ID的結構光方法,不是一般的二維圖像人臉識別),即向人臉投射紅外激光點陣,加上泛光照明+感應元件補光,再讀取物體表面反射的光信息來確定人臉的形狀,精度可達毫米級別。


可是有沒有想過一個問題,為什麼在晴朗的中午,環境光中的紅外光也非常強烈,識別系統是如何排除環境光的紅外干擾呢?


這涉及到模組中一個關鍵的濾光片——近紅外窄帶濾光片(Near Infrared Narrow Bandpass Filter, 縮寫NIR-BP Filter)。


首先得感謝地球大氣層中的水蒸氣對太陽光的吸收,在紅外波段留下了多個吸收峰,對應到吸收後的光譜就形成了一個個“坑”(見下圖的紅色區域)。在這些“坑”中,環境光(陽光的散射和反射)的光強很弱,這就成了BP filter發明的基礎。如果將激光器和紅外相機的波長設在該波長附近,就可以去除大部分環境光的噪聲影響。

(圖片來自Wikipedia)

問題是940nm、1100nm、1400nm、1900nm附近都有坑,跳哪個坑更合適呢?

單從識別信號上來說,後面三個坑都比940nm更好。但在窄帶的光學設計中,在其他光學性能相同的情況下,中心波長越大意味著膜層總厚度更大,比如中心波長為1900nm的窄帶要比940nm厚一倍以上,這在成本上無法接受。在工藝上也很難實現,因為手機薄型化的要求,當前主流的玻璃基底厚度常在0.2-0.3mm,940nm窄帶濾光片的厚度一般在5um左右,膜層的應力已經大到限制單片玻璃的尺寸(涉及到產能)。所以,最終主流廠商都選擇940nm作為激光器的工作波長和濾光片設計的中心波長。

濾光片的中心波長確定後,還要確定帶寬(bandwidth)。主流的濾光片規格中,帶寬常在40~50nm(與坑的寬度接近),這樣能把帶寬外的光給過濾掉(見下圖)。

(圖片來自Balzers官網的窄帶產品Datasheet,中心波長不準)

評估對窄帶波長範圍外的阻隔效果用Optical Density表示,簡稱OD,單位dB。透過率越小,阻隔越好。透過率1%=2dB,0.01%=4dB。通常來說,阻隔區的平均OD要≥5dB,絕對OD≥ 3或4dB。

還有參數叫AOI shift,表示斜入射時窄帶中心波長的偏移,通常要求30°斜入射時偏移小於12nm,確保手機未完全對準人臉時也能準確識別。

就這樣,通過選擇一個合適的吸收峰波長,設計並通過現有的鍍膜工藝製作這種窄帶濾光片,解決紅外人臉識別中的抗干擾問題。


木欣的光之谷


沒有感覺到細思極恐。

只感嘆到科技發展太快,而手機則是最能讓我們體驗到科技的東西。

還有,國產廠商不要動不動和蘋果比,真的不是一個級別的,蘋果的每次創新基本上都推動了行業的進步,沒有十足的把握,蘋果不會冒然在新產品上搭載不成熟技術。

而國產手機,經常把一些不成熟技術用在新機上,搞一些噱頭。


玩機小胖紙


Face ID睡覺的時候能解鎖?用過嗎?反倒是指紋解鎖。。。。。。


侃侃車雲


一看就是沒用過蘋果手機


噠噠怪大蝦


沒有用過faceid吧?沒用過蘋果吧,睡著的時候是不可以的,他能檢測你是醒著的狀態

才可以解鎖

應該是判斷有沒有睜眼吧。


分享到:


相關文章: