基于圖像的人臉三維重建在人臉分析與娛樂領域里有巨大的應用場景,同時它也可以用于提升人臉關鍵點檢測,人臉識別,人臉編輯等很多任務。本文重點介紹其中基于3DMM模型的核心技術及其研究進展。
1. 什么是人臉三維重建
人臉三維重建就是建立人臉的三維模型,它相對于二維人臉圖像多了一個維度,在電影,游戲等領域應用廣泛。目前獲取人臉三維模型的方法主要包括三種,軟件建模,儀器采集與基于圖像的建模。
(1) 軟件建模作為最早的三維建模手段,現在仍然是最廣泛地在電影,動漫行業中應用。頂頂大名的3DMax就是典型代表,作品如下圖。
(2) 由于手工建模耗費大量的人力,三維成像儀器也得到了長期的研究和發展。基于結構光和激光儀器的三維成像儀是其中的典型代表,我們熟知的iphoneX中的人臉識別就是基于結構光進行三維人臉重建,正因如此才有iphonex中的三維人臉表情包。這些基于儀器采集的三維模型,精度可達毫米級,是物體的真實三維數據,也正好用來為基于圖像的建模方法提供評價數據庫。不過由于儀器的成本太高,一般的用戶是用不上了。
(3) 基于圖像的建模技術(image based modeling),顧名思義,是指通過若干幅二維圖像,來恢復圖像或場景的三維結構,這些年得到了廣泛的研究。
我們這里說的人臉三維重建,就特指基于圖像的人臉三維重建方法。人臉三維重建的研究已經有幾十年的歷史,但是基于圖像的快速高精度三維人臉重建還沒有工業落地,需要研究人員繼續努力。
2. 什么是3DMM模型
基于人臉圖像的三維重建方法非常多,常見的包括立體匹配,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年的文章“A Morphable Model For The Synthesis Of 3D Faces”,其傳統的求解思路被稱為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年的文章中提出了采集方法,但是沒有開源數據集,Pascal Paysan等人在2009年使用激光掃描儀精確采集了200個人臉數據得到了Basel Face Model數據集(簡稱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模型,能夠進一步提升表達能力。
2009年發布的Basel Face Model版本中沒有表情系數,而2017年發布的版本BFM 2017中提供了表情系數,同樣還是一個線性模型。
當然了,在國內也有一個著名的數據集,就是FaceWarehouse,不過不開源,一般研究者拿不到數據。
當然也有一些商業號稱會開源更好的模型,這個大家可以拭目以待。人臉的三維模型數據之所以不公開,是因為使用高精度的三維模型可以很容易仿真真實人臉,容易發生安全事故。
當前基于3DMM的表情模型主要有兩個思路,分別是加性模型和乘性模型。加性模型就是線性模型了,將表情作為形狀的一個偏移量,Es,Ee分別表示形狀和表情基,Ws,We分別表示對應的系數。
但是因為表情也會改變人臉的形狀,因此它和形狀并非完全正交的關系,所以有的研究者提出了乘性模型,如下。
其中de是一個表情遷移操作集合,第j個操作即為Tj,δ都是校準向量。
另一方面,紋理模型也被稱為表觀模型,它相對于形狀模型來說更加復雜,受到反射率和光照的影響,不過大部分的3DMM模型不區分兩者,所以我們將其視為一個因素,即反射率。
光照模型通常采用的是球面模型,光照模型比較復雜,我們這里就不列出具體的表達式,大家可以自行閱讀相關論文。
在2009年提出的BFM模型中,紋理模型是一個線性模型,即由多個紋理表情基進行線性組合。后續的研究者們在整個基礎上增加了紋理細節,用于仿真臉部的皺紋等。
盡管在大多數情況下,我們使用的都是線性3DMM模型,但是非線性3DMM模型同樣也被研究,由于不是主流,就不展開講了。
? ? ? ?責任編輯:pj
評論
查看更多