想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

背景知識

【針孔相機模型:射線方程】

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

我們把數碼相機簡化成針孔相機模型,光心為 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點,感測器面為紅色實線, 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點到感測器面距離 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 。那麼我們可以這樣描述成像的過程:三維空間中的 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點經過光心 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點在感測器面上成像為 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點,且 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 、 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 、 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 三點在一條直線上。針孔相機模型是一個三維空間( 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點所在空間)到二維面( 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點所在面)的變換, 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 線上的任意一點(如 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 、想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 、想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 )所成的像都是 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點,因此如果只知道 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點,我們是無法反推出具體哪一個 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點點亮了 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點,我們只能說點亮 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點的點一定在射線 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 上。所以針孔相機模型本質上是射線方程,也就是說知道了 CCD 上的點,就可以得到一條射線。

為了方便描述,我們之後將把針孔模型對稱翻轉過來,如上圖虛線所示,從數學的角度,它們是等價的。

【針孔相機雙目確定物點模型:射線相交得到點】

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

為了確定到底是哪一個 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點點亮了相機 0 上的 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點,我們引入了另一個相機,通過相機 1,我們可以得到 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點在相機 1 中的像點 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 ,聯立 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 和 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 我們就可以唯一的得到空間中想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 點,上圖表達了這個關係。

被動測距

【雙目測距:匹配特徵】

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

圖中上部左右兩幅照片是兩個標定好的相機對同一個場景拍攝並對準后的,圖中下部是上圖場景中的高度分佈,顏色越深離相機越遠。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

我們把上面的場景抽象成草圖,舉例而言,顯示器在相機 0 和相機 1 中不同的像位置是確定顯示器空間所在位置的關鍵,那麼為什麼高度分佈是塊狀的?

這是因為由於拍攝的場景缺少特徵點,以下圖為例,如果說左圖中白色盒子頂上的四個點我們還可以在右圖中找的到,那麼圖中紅色點在右圖我們就根本找不到對應的點。由於特徵點的稀缺,雙目測距中是不可能實現像素級點對點的匹配的。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

主動結構光

【結構光:匹配拓撲網格】

如果說特徵點的缺失是雙目測距的一大痛點,有學者就提出,既然缺少特徵點不如我就造一些特徵點出來,這就是結構光。iPhoneX 的人臉識別用的就是這一項技術。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

iPhoneX 中有兩個與此相關的感測器,分別是 Infrared camera 和 Dot projector,前者是相機,而後者是一個點陣投影儀。從數學上說,一部分投影儀是可以用逆向針孔相機模型描述的,也就是說如果我知道投影面上的某一個點,我就可以知道由這個點投影出的一條射線,這條射線遇到一個面,線面相交的點就會被投影儀點亮。這裡我們為什麼說“一部分”投影儀可以等價於針孔相機,這個問題在後面會談到。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

為了確定這個線面相交的點的位置,我們用一個相機觀察,如上圖所示,我們可以在點陣投影儀的投影面上找到點亮想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」點的投影點,也可以在相機 CCD 面上找到被想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」點亮的成像點。上面的草圖中,一共有五個投影點,而相機拍到的五個投影點,會因為面形的存在改變相鄰兩點之間的距離卻不會因為面形的存在導致五個投影點相對順序的改變,因此我們說相機是通過拓撲網格的標號來確定 CCD 面上點和投影儀投影面上點的一一對應關係。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

在實際的應用當中,會根據待測面形的特點確定拓撲網格的結構。舉例而言,對於 iPhoneX 的結構光主要測量的人臉,因此它的結構光在設計過程中,加密了人臉中眼、鼻、口的光點數量,使得在人臉識別中更具有特徵的眼、鼻、口的採樣率更高,深度數據真實性更強。主動結構光拓撲網格匹配已經遠遠強於被動雙目測距的特徵匹配,但是即便如此依然無法實現像素級點對點的匹配,無法實現的原因我們會在下一節講到。

主動投射結構光和被動雙目測距相比既有好處也有壞處,好處是大大提高了測量準確度和解析度,壞處則是需要有主動式投影光源。舉個很顯而易見的例子,由於投影光源在遠距離的情況下就失效了,遠距離的測距主要還是用被動雙目測距的方法。當然遠距離的測距還有很多別的更可行的方案,比如激光雷達,但是本文只討論結構光體系內的技術。

【結構光:匹配相位分佈】

我們為了測量的面形保真,必須儘可能的提高採樣點的數量。上一節拓撲網格匹配結構光里採樣點的提高有一個上限,那就是 CCD 必須可以區分採樣點,否則在 CCD 中採樣點糊成一團,也就失去了拓撲網格標號。因此這裡有一對矛盾,一方面要儘可能的提高採樣率,一方面又不能超過 CCD 的分辨能力。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

上圖中,測量面上最左邊的點,相機卻無法分辨最左邊的點與和它相鄰的點。為了解決這個問題,學者就提出採用相位的方法實現像素級點對點匹配。在前面的介紹中,被動雙目測距用“特徵點”作為“相機 0-- 物 -- 相機 1”這個過程的傳遞不變數,主動拓撲網格結構光中,以“拓撲網格標號”作為“投影儀 -- 物 -- 相機”的傳遞不變數。在這裡我們以相位分佈想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」作為傳遞不變數。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

以四步相移為例,上圖右圖是投影儀投出的 X 方向相移正弦條紋,左圖是 CCD 拍攝到的由於面形引起的 X 方向變形條紋。對這兩組圖求包裹相位,並解包裹得到 X 方向相位分佈情況。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

舉例而言,投影面和 CCD 的像素數都是 512*512,對於投影面上的一個像素(下圖右圖紅點),我能找到它的 X 方向相位值,根據這個相位值,能夠找到 CCD 面上具有這個相位值的所有像素(下圖左圖紅線),通過這個 X 方向相位值,能夠把投影面上的點和 CCD 面上的線關聯起來。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

同樣的道理,投影儀投影 Y 方向正弦條紋,我們就能夠在 CCD 面上唯一確定與投影面上紅點對應的像素,通過 X 方向相位和 Y 方向相位,我們找到了“投影面像素標號想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」CCD 面像素標號”的對應關係,實現了像素級點對點匹配。

【結構光:匹配編碼】

肯定有讀者會問上面都已經實現了像素級點對點匹配,解析度的提高都已經到頭了,那麼這項技術還可以怎麼演進呢?這裡我們就要談一談相移法的優缺點了,相移法是屬於一種優點和缺點都極為顯著的方法,優點是,通過相移解相位的方法,犧牲了時間(多幅條紋投影),以粗的條紋獲得了細的解析度,缺點是正弦條紋極易被干擾,這就導致了相點陣圖失真,CCD 像素和投影面像素的一一對應性被破壞。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

因此,學者就提出,能不能把步子邁得小一點,我們不要求像相移法那樣高的解析度,但是 CCD 像素和投影面像素的一一對應性必須要保證。由此就提出了以編碼作為傳遞不變數,確定像素的對應性。

以下圖為例,我們對藍色點進行編碼,通過 XY 兩個方向一共 6 幅由疏到密的二值條紋,我們能夠得到一串表明藍色點位置的 6 位編碼,101101,其中 1 代表在這一位上是白色,0 代表黑色。編碼位數越高越能準確的描述藍色點的位置,當然位數越高同樣意味著條紋越密,位數的上限取決與 CCD 能夠分辨的最小二值條紋粗細。二值條紋的抗干擾能力顯著高於正弦條紋。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

下圖是慕尼黑光博會上某個展商的裝置,用一個投影儀一個相機以及編碼圖樣實現了三維測量,實際上它所用的圖樣(編碼位數)最後遠遠高於我截的這 6 幅圖。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

【雙目結構光:不能或者不想標定投影儀】

還記得我們前面有一節講到只有一部分投影儀可以用逆向針孔相機模型來描述,受限於投影儀的凸透鏡成像法則,大多數情況下很難用一個通用的模型來描述投影儀整個群體,比如說,投影面放在投影儀透鏡焦面上的准直投影就不能用逆向針孔相機模型來描述。

這意味這投影儀不能用射線方程來描述,也就意味著又要解決一個相機解欠定的問題,自然我們想到了再引入一個相機。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

請注意,因為這裡的投影儀不是射線模型,因此我也就不畫成前文投影儀的樣子了。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

和前面的結構光匹配編碼類似,只是我們現在匹配的是兩台相機當中的編碼而不是匹配投影儀和相機的編碼。

【交叉偏振結構光:解決反光問題】

反光是所有結構光的大敵,包括被動雙目測距,主動結構光掃描。因為反光會造成採集信號丟失,相當於雙目測距失去一目,方程欠定有無窮多解。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

所以結構光只能用在粗糙表面測量上,下圖表明了兩種表面反射光的形態。左圖是粗糙表面反射光形態,粗糙表面會講投影光線均勻的散開,只要有一支被 CCD 接受我們就可以確定投影像素和 CCD 像素的對應關係。右圖是類鏡面反射光形態,反射光中,光強最強的主瓣沿著反射定律確定的反射光方向,而旁瓣則在主瓣周圍散開,越遠離主瓣光強越弱。結構光無法處理反光就是因為 CCD 接收不到光線。類鏡面反射光形態和粗糙表面反射光形態並不是一成不變的。一些材質的粗糙表面在某些角度的光線或者光強大於一定的值之後也會表現出類鏡面反射光的特點。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

為了解決這個問題,學者就提出投影交叉偏振結構光的方法。其原理是反射光是 s 分量佔優的部分偏振光,只有當入射角是布魯斯特角時,反射光是 s 線偏振光。根據這個原理,大量的含水面的風光攝影都用到了與 s 光正交的偏振鏡來抵消 s 光以達到減弱反光的效果。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

通過給投影儀加裝偏振鏡的方法,我們可以得到一對具有正交偏振方向的投影光,下圖兩個藍色圈中的即是兩個不同偏振方向的投影儀。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

通過交叉偏振投影結構光的方法,總有一個方向能夠極大的降低反光,再通過拍攝到無反光的結構光的相機的位置,可以按照前文所述得到三維信息。

【此處插播一條廣告:我的研究方向是 Deflectometry,即純鏡面的結構光三維測量,利用反光來檢測鏡面面形,歡迎同行不吝賜教。】

【Phase Measuring Profilometry:既不標定投影儀也不用雙目】

Phase Measuring Profilometry,中文名為:相位測量輪廓術。

前文的所有測量包括被動雙目和主動結構光都屬於絕對測量,這裡的 Phase Measuring Profilometry(PMP)是一種相對測量的手段。既不標定投影儀也不用雙目,這勢必意味著我們方程又回到了欠定無窮多解的問題上。好在相移干涉法給了一個思路,我們可以通過給一個絕對高度的參考面,測量的是待測面與參考面的相對高度,由此得到待測面的絕對高度。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

相機拍攝參考面的四步相移正弦圖樣,解包裹相位得到相位分佈,如下下圖右圖。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

相機拍攝待測面的四步相移正弦圖樣,解包裹相位得到相位分佈,如下圖左圖。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

PMP的核心在於標定“相位--高度”的映射:

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

其中, 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 是在 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 處待測面與參考面的高度差, 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 是對應的待測面相位分佈和參考面相位分佈的差, 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 , 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 和 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 是標定係數。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」 需要採用別的手段進行標定。由於標定好“相位 -- 高度”的映射,因此 PMP 不需要在另一個方向測量相位分佈。為了解決 PMP 中方程欠定的問題,需要引入參考面和其他的標定手段,肯定有讀者會問這相對於之前的結構光好在哪裡呢?其實方法沒有好壞之分只有適合用在哪裡的區別。雖然 PMP 增加了標定和設備的複雜性,但是好在這些工作只要做一次就可以,非常適用於有基準面的測量,比如電路板的三維測量等等。

想明白 iPhone X 的人臉識別是怎麼工作的,先得了解這道「光」

【后 PMP 時代】

后 PMP 主要朝著這麼幾個方向,降低投影條紋數,提高三維重構演算法,提高解析度以及一些難測量面形的測量方案設計。

本文中用到了以下回答中的圖:

結構光的概念及其實現三維成像的主要原理是什麼?

電視劇里的嬰兒都是哪裡找來的?

其他的一些圖來源於網路,源出處不明,歡迎認領。

歡迎分享,轉載請註明出處。

查看知乎原文
← 返回文章列表