基於圖像的人臉三維重建在人臉分析與娛樂領域裡有巨大的應用場景,同時它也可以用於提升人臉關鍵點檢測,人臉識別,人臉編輯等很多任務。本文重點介紹其中基於3DMM模型的核心技術及其研究進展。
作者&編輯 | 言有三
人臉三維重建就是建立人臉的三維模型,它相對於二維人臉圖像多了一個維度,在電影,遊戲等領域應用廣泛。目前獲取人臉三維模型的方法主要包括三種,軟體建模,儀器採集與基於圖像的建模。
(1) 軟體建模作為最早的三維建模手段,現在仍然是最廣泛地在電影,動漫行業中應用。頂頂大名的3DMax就是典型代表,作品如下圖。
(2) 由於手工建模耗費大量的人力,三維成像儀器也得到了長期的研究和發展。基於結構光和雷射儀器的三維成像儀是其中的典型代表,我們熟知的iphoneX中的人臉識別就是基於結構光進行三維人臉重建,正因如此才有iphonex中的三維人臉表情包。這些基於儀器採集的三維模型,精度可達毫米級,是物體的真實三維數據,也正好用來為基於圖像的建模方法提供評價資料庫。不過由於儀器的成本太高,一般的用戶是用不上了。
(3) 基於圖像的建模技術(image based modeling),顧名思義,是指通過若干幅二維圖像,來恢復圖像或場景的三維結構,這些年得到了廣泛的研究。
我們這裡說的人臉三維重建,就特指基於圖像的人臉三維重建方法。人臉三維重建的研究已經有幾十年的歷史,但是基於圖像的快速高精度三維人臉重建還沒有工業落地,需要研究人員繼續努力。
基於人臉圖像的三維重建方法非常多,常見的包括立體匹配,Structure From Motion(簡稱SfM),Shape from Shading(簡稱sfs),三維可變形人臉模型(3DMM),本文就重點講述3D Morphable models(簡稱3DMM),其相關的傳統方法和深度學習方法都有較多的研究。
2.1 基本思想
3DMM,即三維可變形人臉模型,是一個通用的三維人臉模型,用固定的點數來表示人臉。它的核心思想就是人臉可以在三維空間中進行一一匹配,並且可以由其他許多幅人臉正交基加權線性相加而來。我們所處的三維空間,每一點(x,y,z),實際上都是由三維空間三個方向的基量,(1,0,0),(0,1,0),(0,0,1)加權相加所得,只是權重分別為x,y,z。
轉換到三維空間,道理也一樣。每一個三維的人臉,可以由一個資料庫中的所有人臉組成的基向量空間中進行表示,而求解任意三維人臉的模型,實際上等價於求解各個基向量的係數的問題。
人臉的基本屬性包括形狀和紋理,每一張人臉可以表示為形狀向量和紋理向量的線性疊加。
形狀向量Shape Vector:S=(X1,Y1,Z1,X2,Y2,Z2,...,Yn,Zn),示意圖如下:
紋理向量Texture Vector:T=(R1,G1,B1,R2,G2,B2,...,Rn,Bn),示意圖如下:
任意的人臉模型可以由數據集中的m個人臉模型進行加權組合如下:
其中Si,Ti就是資料庫中的第i張人臉的形狀向量和紋理向量。但是我們實際在構建模型的時候不能使用這裡的Si,Ti作為基向量,因為它們之間不是正交相關的,所以接下來需要使用PCA進行降維分解。
(1) 首先計算形狀和紋理向量的平均值。
(2) 中心化人臉數據。
(3) 分別計算協方差矩陣。
(4) 求得形狀和紋理協方差矩陣的特徵值α,β和特徵向量si,ti。
上式可以轉換為下式
其中第一項是形狀和紋理的平均值,而si,ti則都是Si,Ti減去各自平均值後的協方差矩陣的特徵向量,它們對應的特徵值按照大小進行降序排列。
等式右邊仍然是m項,但是累加項降了一維,減少了一項。si,ti都是線性無關的,取其前幾個分量可以對原始樣本做很好的近似,因此可以大大減少需要估計的參數數目,並不失精度。
基於3DMM的方法,都是在求解這幾個係數,隨後的很多模型會在這個基礎上添加表情,光照等係數,但是原理與之類似。
2.2 3DMM模型求解方法
基於3DMM求解三維人臉需要解決的問題就是形狀,紋理等係數的估計,具體就是如何將2D人臉擬合到3D模型上,被稱為Model Fitting,這是一個病態問題。經典的方法是1999年的文章&34;,其傳統的求解思路被稱為analysis-by-Synthesis,如下;
(a) 初始化一個3維的模型,需要初始化內部參數α,β,以及外部渲染參數,包括相機的位置,圖像平面的旋轉角度,直射光和環境光的各個分量,圖像對比度等共20多維,有了這些參數之後就可以唯一確定一個3D模型到2D圖像的投影。
(b) 在初始參數的控制下,經過3D至2D的投影,即可由一個3D模型得到2維圖像,然後計算與輸入圖像的誤差。再以誤差反向傳播調整相關係數,調整3D模型,不斷進行迭代。每次參與計算的是一個三角晶格,如果人臉被遮擋,則該部分不參與損失計算。
(c) 具體迭代時採用由粗到精的方式,初始的時候使用低解析度的圖像,只優化第一個主成分的係數,後面再逐步增加主成分。在後續一些迭代步驟中固定外部參數,對人臉的各個部位分別優化。
對於只需要獲取人臉形狀模型的應用來說,很多方法都會使用2D人臉關鍵點來估計出形狀係數,具有更小的計算量,迭代也更加簡單,另外還會增加一個正則項,所以一個典型的優化目標是如下:
對於Model fitting問題來說,除了模型本身的有效性,還有很多難點。
(1) 該問題是一個病態問題,本身並沒有全局解,容易陷入不好的局部解。
(2) 人臉的背景幹擾以及遮擋會影響精度,而且誤差函數本身不連續。
(3) 對初始條件敏感,比如基於關鍵點進行優化時,如果關鍵點精度較差,重建的模型精度也會受到很大影響。
2.3 3DMM模型的發展
要使用3DMM模型來完成人臉重建,首先就需要一個資料庫來建立人臉基向量空間,Blanz等人在1999年的文章[1]中提出了採集方法,但是沒有開源數據集,Pascal Paysan等人在2009年使用雷射掃描儀精確採集了200個人臉數據得到了Basel Face Model數據集[2](簡稱BFM模型),基本信息如下:
(1)採用ABW-3D結構光系統進行採集,採集時間約1s,相比於雷射平均15s的採集方案更加具有優勢。整個數據集包含200張三維的人臉,其中100張男性,100張女性,大部分為高加索人臉。年齡分布8~62歲,平均年齡24.97歲,體重40~123千克,平均66.48千克。每一個人都被採集3次中性表情,並選擇其中最自然的一次。
(2)在對採集後的點進行處理的過程中,模型的每一個點的位置都進行了精確匹配,也就是說每一個點都有實際的物理意義,比如屬於右嘴角等。經過處理後,每一個模型由53490個點描述。
該資料庫的平均人臉形狀和平均人臉紋理如下:
Basel Face Model數據集只有200個人,而近期研究者基於此模型採集了9663個人得到LSFM模型[3],能夠進一步提升表達能力。
2009年發布的Basel Face Model版本中沒有表情係數,而2017年發布的版本BFM 2017[4]中提供了表情係數,同樣還是一個線性模型。
當然了,在國內也有一個著名的數據集,就是FaceWarehouse[5],不過不開源,一般研究者拿不到數據。
當然也有一些商業號稱會開源更好的模型,這個大家可以拭目以待。人臉的三維模型數據之所以不公開,是因為使用高精度的三維模型可以很容易仿真真實人臉,容易發生安全事故。
當前基於3DMM的表情模型主要有兩個思路,分別是加性模型和乘性模型。加性模型就是線性模型了,將表情作為形狀的一個偏移量,Es,Ee分別表示形狀和表情基,Ws,We分別表示對應的係數。
但是因為表情也會改變人臉的形狀,因此它和形狀並非完全正交的關係,所以有的研究者提出了乘性模型,如下。
其中de是一個表情遷移操作集合,第j個操作即為Tj,δ都是校準向量
另一方面,紋理模型也被稱為表觀模型,它相對於形狀模型來說更加複雜,受到反射率和光照的影響,不過大部分的3DMM模型不區分兩者,所以我們將其視為一個因素,即反射率。
光照模型通常採用的是球面模型,光照模型比較複雜,我們這裡就不列出具體的表達式,大家可以自行閱讀相關論文。
在2009年提出的BFM模型中,紋理模型是一個線性模型,即由多個紋理表情基進行線性組合。後續的研究者們在整個基礎上增加了紋理細節,用於仿真臉部的皺紋等。
儘管在大多數情況下,我們使用的都是線性3DMM模型,但是非線性3DMM模型同樣也被研究[6],由於不是主流,就不展開講了。
[1] Blanz V, Vetter T. A morphable model for the synthesis of 3D faces[C]. international conference on computer graphics and interactive techniques, 1999: 187-194.
[2] Booth J, Roussos A, Ponniah A, et al. Large Scale 3D Morphable Models[J]. International Journal of Computer Vision, 2018, 126(2): 233-254.
[3] Paysan P, Knothe R, Amberg B, et al. A 3D Face Model for Pose and Illumination Invariant Face Recognition[C]. advanced video and signal based surveillance, 2009: 296-301.
[4] Gerig T , Morel-Forster A , Blumer C , et al. Morphable Face Models - An Open Framework[J]. 2017.
[5] Cao C, Weng Y, Zhou S, et al. FaceWarehouse: A 3D Facial Expression Database for Visual Computing[J]. IEEE Transactions on Visualization and Computer Graphics, 2014, 20(3): 413-425.
[6] Tran L, Liu X. Nonlinear 3D Face Morphable Model[C]. computer vision and pattern recognition, 2018: 7346-7355.
傳統的3DMM及其求解核心思路我們上面已經講述了,接下來要重點說的是基於深度學習的3DMM重建及其研究進展。
3.1 全監督方法
前面給大家介紹了3DMM模型,傳統的方法需要去優化求解相關係數,基於深度學習的方法可以使用模型直接回歸相關係數,以Regressing Robust and Discriminative 3D Morphable Models with a very Deep Neural Network中提出的3DMM CNN[7]方法為代表。
3DMM CNN是一個非常簡單的回歸模型,它使用了ResNet101網絡直接回歸出3DMM的形狀係數和紋理係數,形狀係數和紋理係數各有99維,除此之外還有幾個核心問題。
(1) 首先是數據集的獲取。由於真實的三維人臉和二維人臉圖像對非常缺乏,採集成本高,作者們用CASIA WebFace數據集中的多張照片進行model fitting求解生成了對應的三維人臉模型,將其作為真值(Ground Truth),從而得到了二維三維圖像對。
(2) 然後是優化目標的設計。因為重建的結果是一個三維模型,所以損失函數是在三維的空間中計算,如果使用標準的歐拉損失函數來最小化距離,會使得到的人臉模型太泛化,趨於平均臉。對此作者們提出了一個非對稱歐拉損失,使模型學習到更多的細節特徵,使三維人臉模型具有更多的區別性,公式如下:
γ是標籤,γp是預測值,通過兩個權重λ1和λ2對損失進行控制,作者設定λ2權重更大,所以是期望γp能夠更大一些,從而提供更多的細節。
除了預測形狀係數外,3DMM的研究者們還提出了ExpNet[8]預測表情係數,FacePoseNet[9]預測姿態係數,驗證了基於數據和CNN模型學習出相關係數的可行性。
真實數據集的獲取是比較困難的,而且成本高昂,導致數據集較小,所以基於真實數據集訓練出來的模型魯棒性有待提升。很多的方法使用了仿真的數據集,可以產生更多的數據進行學習,但是仿真的數據集畢竟與真實的數據集分布有差異,以及頭髮等部位缺失,導致模型泛化到真實數據集的能力較差。
3.2 自監督方法
三維人臉重建中真實的數據集獲取成本非常高,研究者往往基於少量數據或者仿真數據進行研究,所訓練出來的模型泛化能力會受到限制,自監督的方法則是一個解決該問題的重要思路。這一類方法不依賴於真實的成對數據集,它將二維圖像重建到三維,再反投影回二維圖,這一類方法以MoFa[10]為代表,整個流程如下圖所示:
在上圖中,輸入首先經過一個Deep Encoder提取到語義相關的係數,係數包含了人臉姿態,形狀,表情,皮膚,場景光照等信息。然後將該係數輸入基於模型的decoder,實現三維模型到二維圖像的投影,模型可以使用3DMM模型。最後的損失是基於重建的圖像和輸入圖像的像素損失。當然,還可以添加關鍵點損失,係數正則化損失作為約束。
3.3 人臉的三維特徵編碼
通常的3DMM模型預測3DMM的係數,這沒有充分發揮出CNN模型對於像素的回歸能力,如果我們基於3DMM模型將三維人臉進行更好的特徵編碼,預期可以獲得更好的結果。
這裡我們介紹一下兩個典型代表[11][12],其一是3DDFA,它使用Projected Normalized Coordinate Code(簡稱PNCC)作為預測特徵。
一個三維點包括X,Y,Z和R,G,B值,將其歸一化到0~1之後便稱之為Normalized Coordinate Code。如果使用3DMM模型將圖像往X-Y平面進行投影,並使用Z-Buffer算法進行渲染,NCC作為Z-buffer算法的color-map,便可以得到PNCC圖。
論文《Face Alignment Across Large Poses: A 3D Solution》基於此提出了3DDFA框架,輸入為100×100的RGB圖和PNCC(Projected Normalized Coordinate Code)特徵圖,兩者進行通道拼接。算法的輸出為更新後的PNCC係數,包括6維姿態,199維形狀和29維表情係數。
整個網絡如下:包含4個卷積層,3個pooling層和2個全連接層,前兩個卷積層局部共享,後兩個卷積層不採用局部共享機制。這是一個級連迭代的框架,輸入為第k次更新的PNCC特徵,更新它的誤差,損失使用L1距離。
由於不同維度的係數有不同的重要性,作者對損失函數做了精心的設計,通過引入權重,讓網絡優先擬合重要的形狀參數,包括尺度、旋轉和平移。當人臉形狀接近真值時,再擬合其他形狀參數,實驗證明這樣的設計可以提升定位模型的精度。
由於參數化形狀模型會限制人臉形狀變形的能力,作者在使用3DDFA擬合之後,抽取HOG特徵作為輸入,使用線性回歸來進一步提升2D特徵點的定位精度。
其二是PRNet[12],論文Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network中提出了PRNet(Position map Regression Network),它利用UV位置圖(UV position map)來描述3D形狀。
在BFM模型中,3D頂點數為53490個,作者選擇了一個大小為256×256×3的圖片來進行編碼,其中像素數目等於256×256=65536,大於且接近53490。這個圖被稱為UV位置圖(UV position map),它有三個通道,分別是X,Y,Z,記錄了三維位置信息。值得注意的是,每個3D的頂點映射到這張UV位置映射圖上都是沒有重疊的。
有了上面的表示方法,就可以用CNN網絡直接預測UV位置圖,採用一個編解碼結構即可。
另外,作者們為了更好的預測坐標,或者說為了使預測出來的結果更有意義,計算損失函數時對不同區域的頂點誤差進行加權。不同區域包括特徵點,鼻子眼睛嘴巴區域,人臉其他部分,脖子共四個區域。它們的權重比例為16:4:3:0,可見特徵點最重要,脖子不參與計算。
[7] Tran A T, Hassner T, Masi I, et al. Regressing robust and discriminative 3D morphable models with a very deep neural network[C]//Computer Vision and Pattern Recognition (CVPR), 2017 IEEE Conference on. IEEE, 2017: 1493-1502.
[8] Chang F J, Tran A T, Hassner T, et al. ExpNet: Landmark-free, deep, 3D facial expressions[C]//2018 13th IEEE International Conference on Automatic Face & Gesture Recognition (FG 2018). IEEE, 2018: 122-129.
[9] Chang F J, Tuan Tran A, Hassner T, et al. Faceposenet: Making a case for landmark-free face alignment[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 1599-1608.
[10] Tewari A, Zollhöfer M, Kim H, et al. Mofa: Model-based deep convolutional face autoencoder for unsupervised monocular reconstruction[C]//The IEEE International Conference on Computer Vision (ICCV). 2017, 2(3): 5.
[11] Zhu X, Lei Z, Liu X, et al. Face alignment across large poses: A 3d solution[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 146-155.
[12] Feng Y, Wu F, Shao X, et al. Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network[J]. arXiv preprint arXiv:1803.07835, 2018.
從1999年被提出,至今3DMM模型已經有超過20年的歷史,技術已經發展到從早期基於傳統的優化方法到如今基於深度學習模型的係數回歸,不過當前的3DMM模型還面臨著許多的挑戰。
(1) 當前的模型基本上都受限於人臉,沒有眼睛,嘴唇以及頭髮信息,然而這些信息對於很多的應用卻非常有效。
(2) 3DMM模型參數空間是一個比較低維的參數空間,並且紋理模型過於簡單。基於3DMM模型的方法面臨的最大問題就是結果過於平均,難以重建人臉皺紋等細節特徵,並且無法恢復遮擋。對此有的方法通過增加局部模型[13]進行了改進,而最新的生成對抗網絡技術[14]也開始被用於紋理建模。
(3) 遮擋臉的信息恢復。二維的人臉信息一旦被遮擋,也難以被精確地重建,除了利用人臉的對稱先驗信息進行補全外,有的方法借鑑了檢索匹配[15]的思路,即建立一個無遮擋的數據集,將重建的模型進行姿態匹配和人臉識別相似度匹配,然後經過2D對齊,使用基於梯度的方法來進行紋理遷移,也有的方法使用GAN來進行遮擋信息恢復[16]。
(3) 當前3DMM模型中主要使用PCA來提取主成分信息,但是這不符合我們通常對人臉的描述,因此這並非是一個最合適的特徵空間。
(4) 當前存在著各種各樣的3DMM模型的變種,但是沒有一個模型能夠在各種場景下取得最優的效果。
另一方面,3DMM模型也與許多新的技術開始結合,比如與生成對抗網絡模型一起進行人臉的數據增強[17],姿態編輯[17],人臉的特徵恢復[18],對於提升人臉識別模型在具有挑戰性的大姿態以及遮擋場景下的性能中具有非常重要的意義。
[13] Richardson E, Sela M, Or-El R, et al. Learning detailed face reconstruction from a single image[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 1259-1268.
[14] Sela M, Richardson E, Kimmel R, et al. Unrestricted Facial Geometry Reconstruction Using Image-to-Image Translation[C]. international conference on computer vision, 2017: 1585-1594.
[15] Tran A T, Hassner T, Masi I, et al. Extreme 3D Face Reconstruction: Seeing Through Occlusions[C]//CVPR. 2018: 3935-3944.
[15] Egger B, Smith W A, Tewari A, et al. 3D Morphable Face Models - Past, Present and Future[J]. arXiv: Computer Vision and Pattern Recognition, 2019.
[16] Zhao J, Xiong L, Jayashree P K, et al. Dual-Agent GANs for Photorealistic and Identity Preserving Profile Face Synthesis[C]. neural information processing systems, 2017: 66-76.
[17] Yin X, Yu X, Sohn K, et al. Towards Large-Pose Face Frontalization in the Wild[C]. international conference on computer vision, 2017: 4010-4019.
[18] Yuan X, Park I. Face De-Occlusion Using 3D Morphable Model and Generative Adversarial Network[C]. international conference on computer vision, 2019: 10062-10071.
5. 如何學習以上算法
在上面我們介紹了基於3DMM模型的核心技術,實際上3DMM模型如今還有許多新的進展,後續深入學習可以參考有三AI秋季劃的人臉算法組,可分別學習相關內容。
詳情可以閱讀下文介紹:
「通知」如何讓你的2020年秋招CV項目經歷更加硬核?有三秋季劃
人臉相關的算法,在有三AI知識星球的人臉板塊中,有諸多介紹,有需要的同學可以加入。
本次我們給大家介紹了基於3DMM模型的三維人臉重建相關核心技術,人臉圖像屬於最早被研究的一類圖像,也是計算機視覺領域中應用最廣泛的一類圖像,其中需要使用到幾乎所有計算機視覺領域的算法,可以說掌握好人臉領域的各種算法,基本就玩轉了計算機視覺領域。
如果你想系統性地學習各類人臉算法並完成相關實戰,並需要一個可以長期交流學習,永久有效的平臺,可以考慮參加有三AI秋季劃-人臉圖像算法組,完整的介紹和總體的學習路線如下: