您好,登錄后才能下訂單哦!
本文來自 曠視研究院 ,作者:閆東。 AI 科技評論 獲授權轉載。如需轉載,請聯系曠視研究院。
目錄
導語
3D人臉基礎知識
初識3D人臉
相機模型
3D相機
3D人臉數據
3D人臉相關任務
常見Pipeline
3D人臉識別
3D人臉重建
總結
導語
隨著深度學習技術的推進,人臉相關任務研究也躍升為學界和業界的熱點。人們所熟知的人臉任務一般包括人臉檢測,人臉身份識別,人臉表情識別等,它們多是采用 2D RGB 人臉(一般包括一些紋理信息)作為輸入;而 3D 掃描成像技術的出現與發展,使得人臉相關任務有了一條新的探索路線——3D 人臉。
相較于許許多多的 2D 人臉相關任務入門文獻/綜述文章,3D 人臉的入門知識卻乏善可陳。本文將梳理和介紹 3D 人臉相關基礎知識,同時總結一些 3D 人臉識別和重建的基礎入門文獻。
3D人臉基礎知識
初識3D人臉
2D/2.5D/3D 人臉
一般所講的 RGB、灰度、紅外人臉圖像即為 2D 人臉,它們多為某一視角下表征顏色或紋理的圖像,沒有空間信息。深度學習用于訓練的圖像一般為 2D。
2.5D 是在某一個視角下拍攝得到的人臉深度數據,但由于角度問題,它所展示的曲面并不連續,即,當你嘗試旋轉人臉時,會有一些溝壑似的空洞區域。這是由于拍攝時,沒有捕捉到被遮擋部分的深度數據。
那么 3D 人臉呢?它一般由多張不同角度的深度圖像合成,完整展示人臉的曲面形狀,并且人臉以密集點云的方式呈現在空間中,具有一定的深度信息。
這里有一個問題,經常談及的 RGB-D 屬于什么維度的人臉呢(注意維度與紋理和顏色無關)?
相機模型
了解 3D 人臉相關任務之前,有一個基礎且非常重要的“知識點”,就是相機模型,不了解它,就無法入門 3D。關于相機模型,推薦參考《視覺SLAM十四講》(鏈接:https://github .com /gao xi ang12/slambook)或者《SlAM入門》(鏈接:https:// www .cnblogs .com /wangguchangqing/p/8126333.html)。本文先用最短時間讓大家初步了解相機模型。
相機模型包括 4 種坐標系:像素坐標、圖像坐標、相機坐標、世界坐標(腦袋中有沒有閃現高中物理老師講參考系的畫面),相機成像過程即是真實三維空間中的三維點映射到成像平面(二維空間)的過程,也稱之為射影變換。
相機坐標→圖像坐標
相機坐標系到圖像坐標系的過程可用小孔成像解釋,本文借助相似原理可清楚描述相機坐標系中點 到像平面點 的過程,其中 f 為相機焦距。
相機小孔成像圖示(https:// www .cnblogs .com /wangguchangqing/p/8126333.html)
相機坐標到圖像坐標的齊次表示
圖像坐標→像素坐標
一般使用像素值表示 2D 圖像,坐標原點通常是圖像的左上角,因此像素坐標和成像平面坐標之間,相差了一個縮放和原點的平移。
通過用相機坐標表示圖像坐標,可以得到像素坐標與相機坐標的關系:
為保證齊次性(一般很多變換矩陣有這個特性),這里稍作改寫:
其中
即經常說的相機內參矩陣(Camera Intrinsics),K 有 4 個未知數和相機的構造相關,f_x,f_y 和相機焦距、像素大小有關,c_x,c_y 是平移的距離,和相機成像平面的大小有關。
世界坐標→相機坐標
其實,相機坐標系并不是一個特別“穩定”的坐標系,因為相機會隨著自身移動而改變坐標的原點以及各個坐標軸的方向,這時就需要一個更穩定的坐標系來更好地表示射影變換,而我們通常采用的恒定不變的坐標系為世界坐標系。
相機坐標系與世界坐標系之間相差一個旋轉矩陣和平移向量(引自《視覺SLAM十四講》)
同樣為了保證齊次性,其改寫形式如下:
其中變換矩陣
即常說的相機外參(Camera Extrinsics)。
從世界坐標系到像素坐標系相當于一個弱投影過程,總結一下就是從相機坐標系變換到像素坐標系需要相機內參,從相機坐標系變換到世界坐標系下需要相機外參,寫成變換式如下:
按照相機工作方式可將其分為單目相機(Monocular)、雙目相機(Stereo)和深度相機(RGB-D),而相機的本質也是通過二維形式反映三維世界。
單目相機即單個攝像頭的相機,由于其在同一時刻只能拍攝某一視角的圖像,從而會丟失場景深度。比如,若已知某個像點 P 在成像平面上,由于不知道具體距離,則投影的像素點可以在相機原點與 P 連線上的任意位置,所以出游或者畢業時,可以拍出一張用手托人的錯位效果圖。
(引自《視覺SLAM十四講》)
那么如何拍攝一張有深度信息的照片呢?一種方法是通過雙目相機獲取深度。雙目相機顧名思義為“兩只眼睛”,左眼相機和右眼相機的光圈中心 和 構成基線,空間中一點 P 會在分別投影在雙目相機像平面上的 和 ,這樣通過相似原理可以求解 P 到基線的距離即 P 點的深度(見下 方 公式)。在實際應用中,一般物體紋理豐富的地方比較容易計算視差,而且考慮到計算量,雙目深度估計一般采用 GPU 或 FPGA 進行計算。
(引自《視覺SLAM十四講》)
,其中
隨著技術不斷演進,深度相機的出現使我們可以更加便捷地獲取圖像的深度。其中一種深度相機為基于結構光的 RGB-D 相機,以人臉為例,掃描儀會對目標人臉發射光圖案(如光柵格),根據其形變計算曲面形狀,從而計算人臉的深度信息。
(引自《視覺SLAM十四講》)
圖中還有一個 RGB 攝像頭,那么如何實現深度與 RGB 一一 對應呢?測量深度之后,RGB-D 相機通常會按照生產時的各個相機擺放位置,完成深度與彩色圖像素之間的配對,輸出 一一 對應的彩色圖和深度圖。我們可以在同一個圖像位置,讀取到色彩信息和距離信息,計算像素的 3D 相機坐標,生成點云(Point Cloud)。
深度相機中還有一種基于飛行時間原理(Time of Flight,ToF),ToF 相機會向目標發射脈沖光,然后根據發送到返回之間的光束飛行時間,確定物體離自身的距離。ToF 相機與激光傳感器不同,可以在發射脈沖光的過程中獲取整個圖像的像素深度,而激光一般通過逐點掃描獲取深度信息。
(引自《視覺SLAM十四講》)
總結一下,3D 人臉任務一般采用深度相機獲取人臉的深度信息,深度相機一般包括雙目相機,基于紅外結構光原理的 RGB-D 相機(如 Kinect 1 代)或者基于基于光飛行時間原理的 ToF 相機(如 Kinect 2 代)。
3D 人臉相關任務一般有 3 種表征數據的方式:點云,網格圖和深度圖。
點云(Point cloud)
在三維點云中,每一個點都對應一個三維坐標 。許多三維掃描設備使用這種數據格式存儲采集到的三維人臉信息。有時,人臉的紋理屬性也可以拼接到形狀信息上,這時點的表達就成了 ,其中 p,q 是稀疏坐標。
點云表示的缺點是每一個點的鄰域信息不好獲取,因為點的存儲一般是無序的。一般情況下,點云數據會用來擬合一個平滑的曲面,以減少噪聲的影響。
網格(Mesh)
三維網格使用在三維曲面上預計算好并索引的信息進行表示,相比于點云數據,它需要更多的內存和存儲空間,但是由于三維網格的靈活性,更適合用來做一些三維變換,例如仿射變換、旋轉和縮放。每一個三維網格數據,由以下元素構成:點、線、三角面。二維紋理的坐標信息也可以存儲在點信息中,有利于重建更精確的三維模型。
深度(Depth/Range)
深度圖像也稱之為 2.5D 或者 Range 圖像。三維人臉的 z 軸數值被投影至二維平面,效果類似一個平滑的三維曲面。由于這是一種二維表示方式,所以很多現存的二維圖像的處理方法可以直接應用。這種數據可以直接以灰度圖的方式展示出來,也可以使用三角剖分原則轉換成三維網格。
做 3D 人臉首先必不可少的就是 3D 數據,然而現狀卻是公開數據少,遠少于 2D 人臉圖片,3D 高精度人臉只能靠昂貴的設備采集,過程繁瑣,本文梳理了現有公開常用的 3D 或 2.5D 人臉數據集,關于數據庫和 3D 人臉任務的介紹推薦參考《三維人臉研究》(鏈接:http://blog.csdn.net/alec 198 7/article/details/7469501)。
2D 人臉相關任務的 Pipeline 一般分為數據預處理、特征提取、特征分析等過程,那么 3D 人臉的 Pipeline 呢?這里本文引用《3D Face Analysis: Advances and Perspectives》(鏈接:https://link.springer .com /chapter/10.1007/978-3-319-12484-1_1)中的圖片進行講解。
一個通用的 3D/2.5D 人臉分析框架如上圖所示。我們通過設備獲取人臉的 3D/2.5D 表示(Mesh、Point Cloud、Depth),經過一些預處理操作如球形剪裁,噪點去除,深度缺失修復,點云配準等進一步獲取可用的 3D/2.5D 人臉。
接下來對預處理后的人臉進行表征,表征的方式有很多,比如采用表面法向,曲率,UV-Map 或常用的 CNN 方法;在提取一個特征之后就可以進行各種人臉任務,比如識別、表情分析、性別分類、年齡分類等。
鑒于本文的目的是梳理 3D 人臉入門相關知識,這里先為大家簡單介紹一下關于 3D 人臉重建和識別的相關工作,包括發展過程和一些比較容易上手的論文。
3D 人臉識別的前幾十年,都是采用手工設計的特征和分類或度量方法,進行人臉驗證和識別。近幾年,隨著深度學習方法的興起,逐漸有一些工作采用數據為驅動,進行 3D 人臉識別模型的訓練,本文簡單總結了一下 3D 人臉識別方法,如下:
1、傳統識別方法
基于點云數據的3D人臉識別
這類方法通常不考慮三維空間中的人臉特征,直接采用三維點云進行匹配。常見方法有 ICP (Iterative Closest Point,鏈接:https://en.wikipedia.org/wiki/Iterative_closest_point) 和 Hausdorff 距離(鏈接:https://en.wikipedia.org/wiki/Hausdorff_distance)。
ICP 作為一種剛性匹配算法,可以修正三維點云本身存在的平移和旋轉變換,但是對于由表情和遮擋引起的曲面凹凸變化不夠魯棒,并且時間開銷比較大。
ICP 使用人臉表面采樣的法向量進行匹配,由于法向信息具有更好的判別性,在這里簡單介紹一下 ICP 的算法,ICP 為一種迭代最近點的方法,可實現兩堆點云的配準,這類比于 2D 人臉的關鍵點對齊。
假設有兩組點云:
,通過迭代的方法找到一組
和
,滿足
,即求解
。具體的求解過程大家可以參考《視覺slam十四講》第七章(鏈接:https://github .com /gao xi ang12/slambook)。
Hausdorff 距離通過計算兩張人臉的三維點云之間的最近點對之間的最大值,去評估空間中不同真子集之間的距離。但是,該算法依然存在對表情和遮擋不魯棒的問題,改進的 Hausdorff 距離算法使用三維人臉的輪廓線來篩選數據庫中的對象。
模板人臉的方法利用三維人臉上的種子點進行形變,擬合到待測試人臉上,利用擬合參數進行人臉識別,并可通過密集的三維人臉點云對齊方法生成特定的可形變人臉模型。
基于面部特征的3D人臉識別
基于面部特征的3D人臉識別可以分為局部特征和全局特征兩個方面來講,具體也可參考《3D Face Analysis: Advances and Perspectives》(鏈接:https://link.springer .com /chapter/10.1007/978-3-319-12484-1_1)、《3D face recognition: a survey》(鏈接:https:// www .researchgate.net/publication/329202680_3D_face_recognition_a_survey)。
局部特征有兩個方面,一是基于面部區域部件信息的特征,例如鼻子、眼睛、嘴巴區域,這類特征可大致分為,基于面部關鍵點、曲率、塊的特征提取方法;二是基于局部描述子算法提取的特征,比如在深度圖像上提取 小波 特征、SIFT、2D-LBP、MRF、LSP,也有在三維數據上進行特征提取的算子,比如 3D-LBP。全局特征即對整張人臉進行變換并提取特征,人臉數據可能以不同的方式存儲,比如點云、圖像、Mesh 類型的三維人臉數據,比如將三維人臉模型表征為球面諧波特征(SHF),或者將三維人臉曲面同胚映射到二維網格中,用以稀疏表示,使用稀疏系數作為特征。
2、深度學習識別方法
CNN 在 2D 的人臉識別上取得了比較大的進展,然而 2D 人臉容易受到妝容、姿態、光照和表情等影響,3D 人臉本身包含人臉的空間形狀信息,受外界因素影響較小。相較于 2D 人臉,3D 人臉數據攜帶的信息量更多。但由于 3D 人臉數據獲取比較難且有些人臉數據精度不夠,導致 3D 人臉識別的發展并不是很火熱。
基于深度圖的人臉識別
深度圖的人臉識別常用方法包括提取 LBP 等特征,多幀深度圖融合,深度圖歸一化等,這里簡單介紹兩篇深度圖相關的人臉識別論文。
《Robust Face Recognition with Deeply Normalized Depth Images 》
該論文算是一個比較常見的深度圖人臉識別 Pipeline,分為兩個網絡:歸一化網絡和特征提取網絡。歸一化網絡負責將輸入的深度圖轉為 HHA圖像(鏈接:https://blog.csdn.net/WillWinston/article/details/78723507),并通過一個 CNN 網絡回歸 3DMM 的參數(下文 3D 重建會提到),在重構了 3D 點云后即可投影成歸一化的深度圖;特征提取網絡和普通的 2D 人臉識別網絡基本類似,得到一個表征深度圖人臉的特征向量。
《Led3D: A Lightweight and Efficient Deep Approach to Recognizing Low-quality 3D Faces 》
該論文為 CVPR 2019 一篇低質量深度圖人臉識別文章,文中一些針對深度圖人臉的預處理以及數據增強操作值得參考。本文采用球形剪裁后的深度人臉的法向作為網絡輸入,實驗表明可以更好地表征深度人臉,同時,作者也精心設計了輕量級的識別網絡(主要為多層特征融合以及注意力機制),可以參考。
基于RGB-D的人臉識別
基于 RGB-D 的人臉識別基本上以 2D 人臉識別方法為主,將與 RGB 對齊的深度圖作為一個通道送入 CNN 網絡,RGB-D 一個優勢是增加了人臉的空間形狀信息。針對 RGB-D 圖像的人臉識別論文還有很多,但基本思想是在特征層融合或是在像素層融合。
《Accurate and robust face recognition from RGB-D images with a deep learning approach 》
該論文 2016 年提出一種基于深度學習的 RGB-D 圖像人臉識別算法,論文通過 RGB 圖像和多幀融合后的深度圖像分別進行預訓練與遷移學習,并在特征層進行融合,從而提升識別率。
基于 Depth/RGB-3DMM 的人臉識別
最近兩年開始出現采用 3DMM 對深度圖或 RGB 圖進行人臉模型回歸,并應用于識別任務的工作。這類工作的一般思想是通過回歸 3DMM 的參數(expression、pose、shape),實現 3D 人臉數據的擴增,并應用于 CNN 的訓練,比較有代表性的工作如 FR3DNet(鏈接:https://ar xi v.org/abs/ 171 1.05942),3D Face Identification(鏈接:https://ar xi v.org/abs/ 1703 .10714)。
《Deep 3D Face Identification》
該論文算是第一批把深度神經網絡應用于 3D 人臉識別任務的方法,主要思想為通過 3DMM+BFM 擬合深度圖成為帶表情的 3D 人臉模型,從而實現深度數據擴增,同時也做了如隨機遮擋和姿態變換等數據增強,最終送入一個 2D 人臉識別網絡進行 Finetune。
《Learning from Millions of 3D Scans for Large-scale 3D Face Recognition》
該論文是 3D 人臉識別的一篇名作,真正實現了創造百萬級別的 3D 人臉數據并提出一個 3D 人臉識別網絡 FR3DNet,最終在現有公開數據集上進行測試,效果很好(數據驅動的方式,基本為刷滿的狀態)。該論文創造新 ID 的方式是在作者的私有數據集中找到兩個彎曲能量差異最大的 3D 人臉,通過加和得到一個新的 3D 人臉(詳情請參考原文);同時提出了在人臉 3D 點云的識別網絡中,采用大卷積核有利于更好地感受點云的形狀信息。
還有眾多基于數據驅動的 3D 人臉識別如 3DMMCNN(鏈接:https://ar xi v.org/abs/1612.04904),總結起來基于深度學習的 3D 人臉識別方法受限于數據不足,且現有數據精度不夠,研究者的首要任務都是先做大量的數據增強或者生成大量的虛擬 3D 人臉,不過這些方法是否真的具有很強的泛化性能還值得商榷,也許屬于 3D 人臉識別的時代還沒到來。
3D 人臉研究中另一個比較受 關注 的方向是 3D 人臉重建,即通過一張或多張 RGB 的人臉圖像重建出人臉的 3D 模型,它的應用場景很多,比如 Face Animation,dense Face Alignment,Face Attribute Manipulation 等。其實 RGB 到 3D 的人臉重建是一個病態問題,因為 RGB 圖像其實表征的是紋理特征而并沒有空間信息,但考慮到實際的應用價值,這些年也陸續提出一些 3D 重建方法。
本文將介紹幾種比較流行的人臉 3D 重建方法,供入門的小伙伴們參考,更多關于 3D 人臉重建總結推薦參考《3D人臉重建總結》(鏈接:https://blog.csdn.net/u011681952/article/details/82623328),這里先給出一個 3D 人臉重建的實例(取自PRNet)。
基于傳統方法的人臉重建
傳統 3D 人臉重建方法一般通過圖像本身表達的信息完成 3D 人臉重建,如圖像的視差、相對高度等,比較常見的如通過雙目視覺實現 3D 重建,難點在于如何匹配不同視角下對應的特征點,關于這類文章大家可參考《A Survey of Different 3D Face Reconstruction Methods》(鏈接:https://pdfs.semanticscholar.org/d4b8/8be6ce771 64 f5eea1ed2b16b985c0670463a.pdf)。
基于模型的人臉重建
3D 人臉重建中有兩個比較常用的模型,其中一個為通用模型 CANDIDE,另一個為 3DMM。
眾多通用模型中,CANDIDE-3 可謂名氣最大,由 113 個頂點和 168 個面組成。簡單來講,通過修改這些頂點和面,使得其特征與待重建的圖像相匹配。通過整體調整,使五官等面部關鍵點盡量對齊;通過局部性調整,使人臉的局部細節更加精細,在這之后進行頂點插值,即可以獲得重建后的人臉。
該模型的優缺點顯而易見,模板的頂點數量過少,重建速度快,但重建的精度嚴重不足,面部細節特征重建欠佳。
入門 3D 人臉一定會接觸的算法是 3D Morphable Model (3DMM),這是 199 9 年由 Volker Blanz 在《A Morphable Model For The Synthesis Of 3D Faces》一文中提出的一種人臉模型的線性表示,可以將一張 2D 的人臉圖片生成其對應的 3D 人臉模型,表示方法為:
其中
和
那么如何從二維重建三維呢?首先要了解三維模型是如何投影到二維平面的,上文最開始講的相機模型,把三維模型投影到二維平面可以表示為:
利用一個人臉數據庫構造一個平均人臉形變模型,在給出新的人臉圖像后,將人臉圖像與模型進行匹配結合,修改模型相應的參數,將模型進行形變,直到模型與人臉圖像的差異減到最小,這時對紋理進行優化調整,即可完成人臉建模。
一般 2D 到 3D 重建過程所采用的監督方式為 2D 人臉關鍵點與 3D 頂點對應的正交投影上的關鍵點。
基于 CNN 端到端的人臉重建
有了 3DMM 模型,即可進行單張 2D 人臉的 3D 重構,但一個現實問題是,傳統 3DMM 重建是迭代擬合的過程,該過程效率比較低,因此并不適用于實時的三維人臉重建。分析 3DMM 原理可知,需要調整的就是 3DMM 的 199 維參數(這個不同的基不一樣哦),為什么不用CNN 回歸基的參數呢?這樣我們可以通過網絡去預測參數,實現 3DMM 的快速重建。
但是有一個問題,我們如何獲得訓練數據?為此,大多數論文選擇利用 3DMM 線下擬合大量人臉圖片作為 ground-truth,然后送入神經網絡去訓練。雖然是個病態問題,但效果還不錯。本文將介紹幾篇通俗易懂的基于 CNN 端到端的 3D 人臉重建方法。
《Disentangling Features in 3D Face Shapes for Joint Face Reconstruction and Recognition 》
該論文通過 CNN 回歸 Identity Shape 和 Residual Shape 參數,表達式和 3DMM 類似,不同之處在于除了普通的 reconstruction loss(一般為 element-wise L2 loss),還增加了一個 Identification loss,以保證重建的人臉 ID 特征不變。
《End-to-end 3D face reconstruction with deep neural networks》
該論文的思想也是回歸 3DMM 參數,作者認為高層的語義特征可以表示 ID 信息,而中間層的特征可以表示表情特征,因此可從不同的層級回歸相應的參數,從而實現 3D 人臉重建任務。
《Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network 》
另一種比較常見的端到端 3D 人臉重建方法為 Position Regression Network(PRN),強推!(附開源代碼 PRN:https://github .com /YadiraF/PRNet)。
該論文提出一種端到端 Position Regression Network,以完成 3D 人臉重建和稠密人臉對齊。
作者引入 UV Position Map,可以實現通過 2D 圖像來存儲人臉 3D 點云坐標,假設一個包含 65536 個點的 3D 點云,通過 UV Position Map 可以表示成一個 256*2563 的 2D 圖像,每一個像素點存儲的是點云的空間坐標,因此可以通過一個 encoder-decoder 網絡回歸原始圖像的 UV Position Map,實現 3D 人臉重建。
作者通過設計一個不同區域不同權重的 Loss Function,最終實現了較高精度的人臉重建和稠密關鍵點對齊。
《3D Dense Face Alignment via Graph Convolution Networks》
通過上述回歸 UV Position Map 的方式有一個問題,最終 UV 圖像映射到 3D 人臉 mesh 的圖像時,會出現一些條紋。在最近的一些 3D 人臉重建工作中,還有一種通過多級回歸 3D 人臉 mesh 的方法取得了不錯的重建效果。
該論文作者通過逐級增加回歸的 mesh 頂點,從而在多個監督的任務下完成最終 mesh 的回歸,同時采用圖卷積的形式可以更加本質地進行點與點之間的構圖關系,最終取得了不錯的重建效果。
3D 人臉重建是近年的一個熱門話題,每年各種會議也有許許多多的文章提出各種各樣的 3D 人臉重建方案,但從入門角度考慮,掌握上述幾種常見方法會對之后的研究會打下不錯的基礎。
本文介紹了 3D 人臉技術的入門知識,包括 3D 基礎知識如相機模型、3D 相機工作原理、3D 人臉數據處理等,同時也總結了 3D 人臉識別/重建的相關方法,希望拋磚引玉,并對入門 3D 人臉起到幫助。由于時間原因,有些總結可能并不完善,懇請大家及時斧正。
https://www.toutiao.com/i6722041131011408392/
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。