iPhone 13 的劉海為什麼縮小了?
iPhone 13 系列視頻的第一期節目,我們先從最表層的變化開始聊起——劉海。今年iPhone 13 劉海縮短,普遍認為的原因是,結構光模組中的點陣投射器體積縮小了。我們分別拆解了iPhone 13 和iPhone 12 的Face ID 模組,對比發現,iPhone 13 的點陣投射器,芯片面積約0.46 mm²,相比iPhone 12 的0.99 mm²,確實減少了53%。
但如果從整體的封裝體積上看,兩者並沒有太大的差距:
這是因為在今年的點陣投射器裡,還把之前獨立封裝的泛光燈也集成了進去。而且今年泛光燈的芯片面積,也比前代減少了48 %。
點陣和泛光合二為一, 是劉海縮小的第一大功臣。而更重要的,是原來聽筒開孔的位置,從中間,移到了邊框上。
但問題是,在安卓陣營,把聽筒放到邊框裡在很多年就已經是基本操作了。如果移個聽筒就可以省空間,那蘋果為什麼不早移呢?
要探究這個問題的答案,我們就要先搞明白,劉海裡最重要的元件——Face ID 前前後後的所有事情。
何為結構光?
看過《亮劍》的同學可能會記得,李雲龍帶著砲兵,用大拇指測距,砲擊敵人的橋段。這種用視差粗略判斷距離的“跳眼法”,和結構光的原理十分相似。
大部分手機的攝像頭,就是用兩個鏡頭之間的視差,來估算主體深度,做背景虛化的。但這種方法,有一個明顯的缺點:對於一些光滑、或者缺乏紋理的表面,攝像頭因為找不到特徵點,會很難做匹配。
就像一堵大白牆,往前10 厘米,和往後10 厘米,對攝像頭來說,都是一片大白牆。只要牆夠光滑,深度信息就判斷不出來。
既然缺紋理,那我們就給它創造一點紋理。我們把其中一顆攝像頭,變成一個投射器,主動往目標上投射紋理,再由另一顆攝像頭捕獲,這就是最基本的結構光模型了。
接下來,我們就來把蘋果的Face ID 里里外外拆個乾淨,一步一步地看,它是怎麼實現的。
Face ID 模組的拆解和原理
蘋果把Face ID 模組中的點陣投射器、前攝和紅外攝像頭,放在了同一個金屬支架上。這麼做的原因,是為了讓幾個組件之間的相對位置,始終保持一致。
大家不要小看這一個小支架,這個支架可太講究了,它的重要度,甚至不亞於里面任何一個元件,重要到蘋果專門為它,和它的裝配方式,都單獨申請了一個專利。
因為在結構光系統中,投射器和紅外攝像頭,需要做非常精確的位置匹配,這個動作就叫做“標定(calibration)”。兩者的距離、角度、哪怕有一點點變動,都會嚴重影響識別的準確度,甚至讓整個系統罷工。
而為了讓它們的位置保持相對固定,蘋果在支架的連接處,專門做了用來增加強度的一個小“坡”,防止模組在裝配的過程中,受外力作用在Y 軸發生彎折,導致標定失效。在支架的側面,還另有一條金屬橫梁,焊在上面,加固整體結構。
Face ID 組件在安裝的時候,並不是用螺絲固定在機身裡,而是用兩塊簧片壓在屏幕和後蓋之間,我們推測,這樣做的目的,是為了讓整個組件允許存在微小的整體位移。也就是說你的手機如果摔了,這些部件可能會鬆動,但是,點陣和攝像頭,它們要動只會一起動,不會有相對的位移。
這一切的目的,是為了把點陣和攝像頭之間距離的公差控制在±80 微米之內。
定好了兩個組件的位置之後,下一步,我們來看模組裡最關鍵的部件——點陣投射器。投射器的光源,蘋果用的是VCSEL——垂直腔面發射激光器。叫它“垂直”,是因為它的發光方向,是垂直於矽基板的。相比於向水平方向發光的“邊發射激光器”,VCSEL 的好處是,它可以投射出更圓的光斑,而且因為是垂直發光,它可以很容易地在一塊矽基板上,用光掩模直接蝕刻出密集的陣列,而整個元件的厚度,可以做到很薄。
(左為VCSEL,右為邊發射激光器)
對於手機來說,它投射出的可分辨的點陣越多越密,識別的精度就越高。要把光點做多,有兩種選擇:要么把整塊芯片做大,要么把點陣之間的間距做小。把芯片做大,面臨兩個問題:首先,VCSEL 成本很高,越大越花錢;而且手機裡的空間,也不可能擺得下太大的器件。而如果保持芯片面積不變呢,點陣的密度,也是不能無限疊加的。依照目前的技術,VCSEL 點陣間距,一般不低於18 微米。倒不是因為工藝上做不到,而是因為如果再做小,又要保證每個發光點的功率,它的散熱壓力會很大。
iPhone 12 上的VCSEL,去掉導線,面積大概是0.81mm²,一共放進了321 個點。iPhone 13 又把密度增加了一倍,在0.37 mm² 裡,放進了284 個點。平均密度已經達到868個/ mm², 再做密,壓力會越來越大。
那用這塊兩三百個點的芯片,要怎麼投出Face ID 需要的三萬個光點呢?兩個關鍵詞:複製,和拼接。
激光從VCSEL 發射出來後,首先經過准直透鏡,然後通過兩塊棱鏡的反射,到達另一個關鍵組件——光學衍射元件(DOE)。DOE 的作用,是把一個圖案複製成很多份,然後呈扇形射出。
通常情況下,DOE 應該是一個無源器件。但是iPhone 上的DOE 上面是有電極的。這是因為蘋果做了一個檢測機制:它把DOE 和基板當成了一個電容,如果DOE 的表面發生破損,引起了電容的變化,蘋果會直接把整個Face ID 模塊禁用。這是因為如果DOE 失效,激光沒有被正確的分散開來,那激光的能量,就可能會超出安全範圍,從而對人眼造成傷害。
這就是為什麼Face ID 是iPhone 非常容易損壞的一個部件。閒魚的二手iPhone,帶面容和不帶面容,就是兩個價格。如果你在手機店看過維修師傅修手機,你會發現有的師傅拆開手機後,會馬上拿一張膠帶,把Face ID 貼上,怕碰壞了,就是這個原因。
硬件的部分,重點我們都說完了。在得到了這樣一個漂亮的點陣圖案之後,我們的下一步,就是臉部的三維重建,和比對了。
三角測量
結構光的原理,是通過視差,來判斷物體的深度。
就像我們拿一根激光筆,把一個光點,投射在一塊白板上。如果從激光筆的右邊觀察,當白板向前移動的時候,這個光斑會朝視線的左邊偏移。木板向後移動的時候,光斑則偏向右邊。偏移得越遠,說明白板的深度越深。
你可能會注意到,要從畫面裡看出光點的偏移,攝像機和激光筆之間,必須保持一定的距離,如果距離太短,光點的偏移量就會很低,攝像機就很難捕捉它的變化,導致精度下降。而攝像機和激光筆之間的距離,就被稱為“基線”。
從iPhone X 第一次引入面容解鎖開始,在長長的劉海裡,紅外攝像頭和點陣投射器,就一直佔據著最左邊和最右邊的位置,因為它要保證基線的長度,以滿足識別的準確性。
但是在今年的iPhone 13 上,紅外和點陣第一次變成了鄰居,基線長度從之前的27 毫米,縮短到了6 毫米。對於iPhone 來說,這道題的難度,可謂直線上升。
可是,我們實測卻發現,iPhone 13 的解鎖體驗,和前代相比,無論是解鎖角度、距離、還是速度,都完全保持了一致水準。那麼,它到底做了什麼,來抹平基線縮短所帶來的性能損失呢?
“無間道”
為了搞明白這件事,我們只能繼續找兩台手機的不同,希望能發現一些線索。
我們用紅外相機拍攝了iPhone 12、iPhone 13 點陣投影的過程發現,兩台手機在投射的圖案、投射流程上,都有所區別。
iPhone 13 在投射點陣的時候,會以偽隨機的形式,加入一些空幀,比如亮一幀、停一幀,再亮一幀;或者先空兩幀,再亮一幀。每次解鎖,點陣亮起的時間間隔,都不一樣。
我在蘋果的一份專利裡,找到了這個做法的用意——增加安全性。
點陣投影儀發信,攝像頭收信,這就像是一個特工在和總部聯絡:我們相約,在星期一、星期三、和星期五,分別給你三份情報。那如果總部在星期二收到了一份情報,哪怕情報信息完全正確,偽造得天衣無縫,但只要時間對不上,那它就是假的。
因為每次交接的時間,都是偽隨機的,具體哪一天來交接,只有特工,和總部,兩個人知道。這就可以防止有心人士,拿偽造的紅外圖來欺騙系統。
除了投射的時隙不同之外,兩台手機投射的圖案,也不一樣。iPhone 13,每次投射的點陣密度,都是相同的。而iPhone 12,則有幾套不同的圖案,有時候疏一點,有時候密一點。這一點,從iPhone 12 的VCSEL上,也能看得出來。
整塊VCSEL 一共分成了4 塊區域,4 塊區域用了不同的引腳,可以獨立控制通斷。
也就是說,手機通過4 塊區域的不同組合,理論上,最多可以投出15 種不同的圖案。用這15 種圖案,再配合上偽隨機的發報時隙規則,就可以做出更複雜的編碼,來防止欺騙。
但是!這還不是全部。
妥協與平衡
在另一份專利裡,我們又找到了這四塊區域的另一個用途。
我們知道,結構光是依靠圖案的不相關性,來進行匹配的。簡單說,就是手機在投射出一個個的斑點之後,它要知道這些斑點,對應的是參考圖中的哪裡。如果張冠李戴,就會出現誤匹配,深度當然也就解不出來了。
所以,一片理想的散斑圖案,應該是具有高度“不相關性”的——每一個小區域,在整張圖裡,最好都是唯一的。但是對於手機來說,因為每一個光點,長得都一模一樣,完全沒有特徵,所以手機必須把圖像分割成一個個的“窗口”,再以“窗口”為單位,去整張圖裡找匹配。
而這個時候,窗口怎麼畫,畫多大,就很重要了。對於手機來說,點陣越稀疏,窗口畫得越大,它的計算壓力就越小,識別起來就越快。但是,也正是因為窗口大了,所以分辨率上不去,只能做低精度的掃描。
而要得到更高的精度,我們需要讓點陣更加密集,把窗口畫小,但是在匹配的時候,因為每個窗口都要經過更多次的迭代,以尋找最佳配對,所以速度,當然就要慢一些。
所以在算力有限的前提下(記住這個前提!),蘋果採用多個分區、疏、密結合的方案,就是要在速度,和精度之間找一個平衡。
比如它可以先掃一遍稀疏的圖案,先分出大概的區塊,然後再在重點區域用精細圖案做精細匹配。再比如人臉解鎖這個場景,精度是第一優先級,所以疏加密,全部圖案一起上。但是用前攝拍視頻的時候,手機只需要知道一個大概的景深信息,用來做虛化就可以了,那它就可以偷偷懶,只用稀疏的點陣。否則,以它的算力,是無法支持每秒60 幀的運算的。
那到了iPhone 13 這邊,可以看到,蘋果取消了中間的分界線,用同一張圖案,來應對所有的場景。哪怕是前攝算個主體深度,iPhone 13 也是把所有的點全部堆進去,火力全開地計算。
這也就說明,得益於SoC 更強的算力,蘋果今年很有可能是跳過了用稀疏圖案,進行低精度掃描的這一步,而是直接用密集圖案做高精度掃描。
從這些現象,我們可以推測,對於蘋果來說,200 毫秒的解鎖時間,和100 萬分之一的錯誤率,可能是他們內部,劃給Face ID 的一條紅線。只要這兩個關鍵性能達標,工程師就可以做各種trade off。
所以,我們的推論是,今年Face ID 形態的變化,一方面,是得益於封裝技術的進步,讓VCSEL 和泛光合二為一,省掉了一個傳感器的空間;另一方面,是得益於SoC 算力的提升,讓手機可以容忍更短的基線。
因為計算變快了,所以手機可以實現在任何場景下的高幀率、高精度掃描,可以忍受更短基線帶來的信噪比降低,但同時,還把人臉解鎖的速度,維持在200 毫秒,這一根紅線之內。
當然,在蘋果所有的公開資料裡,我們並沒有找到任何具體地講解Face ID 算法、和識別流程的內容,這也讓我們的推測,也只能止步於推測。
但在綜合了所有的已知信息之後,這,已經是我們認為,最接近事實的可能了。