參考來源:http://www.cnblogs.com/lanye/p/5312620.htmlhtml
人臉姿態估計:pitch,yaw,roll三種角度,分別表明上下翻轉,左右翻轉,平面內旋轉的角度。
人臉姿態估計的方法有基於模型的方法,基於表觀的方法,基於分類的方法等等。其中,基於模型的方法獲得的效果最好,由於其獲得的人臉姿態是連續的,而另外兩種,是離散的,而且很耗時間。
人臉姿態估計算法通常當作不少人臉對齊相關論文的副產品被提出,近期,比較「出名」的人臉對齊論文主要來自於CVPR,ICCV等,以下:
《Supervised Descent Method and its Applications to Face Alignment》,這篇論文提供了demo,而且附加了人臉姿態估計功能,估計精度還不錯。
《Face Alignment at 3000 FPS via Regressing Local Binary Features》,這篇文章是最新的人臉對齊算法,基於隨機森林的算法,速度比較快,精度基本和上一篇持平。
《Face Alignment by Explicit Shape Regression》這篇文章很出名,做者也和上一篇是同一人。
還有經典的人臉對齊鼻祖算法ASM,AAM,想必你們也都知道,這裏再也不多說,由於咱這篇博客的主題是人臉姿態估計嘛!~
基於模型的估計方法的前提是,手頭必須具有兩樣東西,一個是人臉特徵點(眼鏡,嘴巴,鼻子等處的像素位置),另一個,是須要本身製做一個3維的,正面的「標準模型」。
<ignore_js_op>
這個模型的好壞很重要,人臉的特徵點精度能夠不高,由於後面的姿態估計算法能夠採用魯棒方法予以彌補,可是標準模型一旦有問題,勢必會致使姿態估計的精度偏低。
算法最重要的仍是思想,其他諸如流程什麼的,都是實現思想的手段而已。人臉姿態估計的思想:旋轉三維標準模型必定角度,直到模型上「三維特徵點」的「2維投影」,與待測試圖像上的特徵點(圖像上的特徵點顯然是2維)儘可能重合。這時候咱們腦海中就應該浮現出一種詭異的場景:在幽暗的燈光中,一個發着淡藍色光芒的人皮面具一點點的「自我調整」,忽然一會兒「天衣無縫」的「扣在了你的臉上」。這就是人臉姿態估計的思想。
想到了什麼沒?這貌似聽起來像是某種數學中經常介紹的一種方法。是的,大部分論文中也常常利用這種方式來創建模型。這個方法就叫作「非線性最小二乘」。
咱們也能夠利用非線性最小二乘方法來創建咱們的模型,模型公式以下:
<ignore_js_op>
其中,(α,β,γ)表明人臉姿態三個旋轉角度, N表明着一張人臉上標定特徵點的個數,qi表明着待測試人臉特徵點,pi表明對應着的三維通用標準模型特徵點,R表明旋轉矩陣, t爲空間偏移向量,s爲伸縮因子。R的具體形式是以下三個矩陣相乘:
<ignore_js_op>
給出了人臉姿態估計的模型,咱們能夠發現,這個公式的形式,恰好對應於剛剛提出的人臉姿態估計算法思想。數學是奇妙的!
更奇妙的在下面.....
這個公式看起來很直觀,很好的解釋了人臉姿態估計的內涵,可是,這個公式怎麼求解?
對了,別忘記,這是「爛大街的」非線性最小二乘算法,從牛頓爺爺開始,就有着大把的優化方法,梯度降低,牛頓高斯,信賴域,馬夸爾特等等等等等用於解決它,等到下一篇博客,我會盡可能用通俗的語言,爲你們介紹姿態估計的下一個重要階段:迭代求精。
附圖(姿態估計效果圖):
<ignore_js_op> <ignore_js_op><ignore_js_op>
原圖 3D標準模型正面照 姿態估計算法擬合圖算法