簡介:這是一篇17年的CVPR,做者提出使用現有的人臉識別深度神經網絡Resnet101來獲得一個具備魯棒性的人臉模型。算法
原文連接:https://www.researchgate.net/publication/311668561_Regressing_Robust_and_Discriminative_3D_Morphable_Models_with_a_very_Deep_Neural_Network網絡
摘要ide
主要說了兩個部分:第一部分,三維人臉模型尚未普遍應用到人臉識別等領域,主要緣由是同一個對象的不一樣照片生成的人臉模型差別較大,也就是不夠魯棒;或者不一樣對象生成的人臉模型又太接近,也就是人臉模型太泛化,沒有區分度。第二部分,就是做者的主要貢獻,其一是解決了訓練數據匱乏的問題,其二,用CNN作三維人臉重建,提升了人臉識別的準確率。函數
介紹學習
主要仍是圍繞前面提到的兩個問題,一是人臉模型沒有區分度,二是人臉模型不夠魯棒。優化
如圖所示,3DDFA獲得的就是一張大衆臉,沒有特點,做者的方法就比較接近潘大大了。idea
針對上述問題,做者就說了,咱們能解決上面的兩個問題。咱們用一個深度卷積神經網絡去迴歸3DMM形狀參數(Note:只是形狀!),而後就能夠獲得3維人臉形狀了,至於紋理參數是直接從照片中得來的,這不是做者關注的重點。另外,做者還解決了訓練數據集不夠的問題,用多張照片去生成3維人臉模型,做爲Ground Truth,這個後面會提到。.net
相關工做3d
此處略去n個字~,論文裏闡述了以往作3維人臉建模的一些方法。一句話總結:俱往矣~。視頻
Regressing 3DMM parameters with a CNN
做者認爲,以前沒有將CNN用在三維人臉建模方面,主要是由於從二維圖像重建三維人臉模型,咱們須要迴歸高維的形狀參數,這就要求很是深的網絡,而訓練很是深的網絡又須要大量的訓練數據,很尷尬,已知的三維人臉模型的訓練集小的可憐。那怎麼辦呢?追古溯今,做者淘到了一個好方法,利用一個對象的多姿態人臉圖片能夠生成準確率至關高的三維人臉形狀[30],而後把生成的模型做爲訓練集,ko一個問題;那魯棒性和區別性的人臉形狀怎麼解決呢?借鑑二維空間中的深度卷積神經網絡模型,並且模型仍是現成的~。
Generating training data
首先,利用中科院的CASIA WebFace dataset,借鑑[30]的方法。500k的單張圖片,每個都估計一個3DMM,後續還會繼續進行處理。估計方法以下:
利用BFM,使用Vetter等人的三維人臉重建公式:
參數說明請看原文,咱們要求的其實就是α和β。對[8][33]的方法作了一點改變,給定一張圖片,用他們的方法能夠獲得一個近似的形狀參數α*和紋理參數β*,這裏做者用了CLNF來作人臉檢測,獲得68我的臉關鍵點,求得該張圖片的置信度(後面會用到),將獲得的關鍵點用來初始化估計人臉模型的姿態,該姿態用六個自由度表示:
而後再優化3DMM的形狀,紋理,姿態,光照和顏色,利用[33]的方法解決定位偏差。 一旦損失函數收斂,就獲得的形狀參數和紋理參數,這就是圖像I獲得的3DMM估計,雖然這個過程計算量大,但它只是用在生成數據中,不會影響算法效率。
根據最近的工做[30],咱們將每一個對象的多個3DMM(包含形狀和紋理)估計進行池化,也就是每一個對象的多張照片對應獲得的3DMM估計,進行加權求和,最後一個對象只有一個3DMM估計,池化公式以下:
ωi是前面CLNF求到的置信度。
Learning to regress pooled 3DMM
上一個步驟結束以後,一個對象會有多個不一樣角度的照片,但只有一個3DMM估計。如今咱們要用這些數據去學習一個函數,使同一個對象的不一樣照片獲得的3DMM特徵向量是相同的。爲此,咱們引入了一個深度神經網絡ResNet,修改了它的最後一層全鏈接層,使輸出爲198維的3DMM特徵向量γ,用池化的3DMM估計做爲真實標註,讓網絡去學習。
The asymmetric Euclidean loss
由構造函數可知,3DMM向量屬於多元高斯分佈,均值在原點處,表明了均值人臉,就是那我的臉形狀和紋理重建公式,所以,在訓練期間,若是使用標準的歐拉損失函數來最小化距離,會使獲得的人臉模型太泛化,沒有區別性。
做者就提出了一個非對稱歐拉損失,使模型學習到更多的細節特徵,使三維人臉模型具備更多的區別性,公式以下:
效果還不錯:
Network hyperparameters
就是介紹一下訓練的時候,一些超參數的設置,具體參看原文。下面這個圖是對整個流程的總結,分三個部分,每一部分,上面都已經作了解釋:
Discussion: Render-free 3DMM estimator
3DMM參數直接經過對輸入圖像的迴歸獲得,沒有進行紋理渲染的優化,咱們主要是獲得準確的形狀,所以在估計3DMM時也更快。
Parameter based 3D-3D recognition
對獲得的3維人臉模型進行評價,看它是不是屬於同一個對象。
3D-3D recognition with a single image(???)
用3DMM參數γp做爲人臉特徵的描述子。由於不一樣的關鍵點經常表示不一樣的人臉外觀,應用PCA方法,從上面的訓練數據集(獲得68個關鍵點的那個)中學習,使估計的參數接近人臉關鍵點。最後用餘弦類似度量判斷兩我的臉三維模型是否類似。(沒搞懂,還望指教。。。)
3D-3D recognition with multiple-image
對於多圖像,首先使用上面的等式2對3DMM參數進行池化,此時權重都是相等的。對於每一個對象的視頻,咱們會池化獲得一個3DMM,而後他們的多張圖像,也是池化獲得一個3DMM,再對這些3DMM進行一次池化,反正最後一個對象,一個3DMM。
Face alignment
做者說了,咱們就用了二維圖像的人臉標準框,其餘的特徵點檢測,人臉對齊都沒用。但咱們方法對未對齊的人臉也很魯棒??,也很省時。。。
Experimental results
自由發揮了,溜了~~~
初來乍到,還望各位大佬多多指教!
參考:
知乎:https://zhuanlan.zhihu.com/p/24316690
[30]M. Piotraschke and V. Blanz. Automated 3D face reconstruction from multiple images using quality measures. In Proc. Conf. Comput. Vision Pattern Recognition, June 2016.
[33]S. Romdhani and T. Vetter. Estimating 3D shape and texture using pixel intensity, edges, specular highlights, texture constraints and a prior. In Proc. Conf. Comput. Vision Pattern Recognition, volume 2, pages 986–993, 2005.
[8]V. Blanz and T. Vetter. Face recognition based on fitting a 3d morphable model. Trans. Pattern Anal. Mach. Intell., 25(9):1063–1074, Sept 2003.