轉自:http://blog.csdn.net/wsj998689aa/article/details/39294171
之前做過一段時間的人臉姿態估計研究,取得了比較理想的效果,拿出來和大家分享一下,第一次寫博客,肯定有表達不清晰的地方,還請大家多多批評哈!
當時自己剛開始這方面的研究,特別想找到關於這方面的博客介紹,可惜沒有,於是產生了寫一篇該方向上博客的想法,廢話不多說,開始介紹!
人臉姿態估計,顧名思義,給定一張人臉圖像,確定其姿態,姿態由什么構成呢?很簡單(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維的,正面的“標准模型”。
這個模型的好壞很重要,人臉的特征點精度可以不高,因為后面的姿態估計算法可以采用魯棒方法予以彌補,但是標准模型一旦有問題,勢必會導致姿態估計的精度偏低。
算法最重要的還是思想,其余諸如流程什么的,都是實現思想的手段而已。人臉姿態估計的思想:旋轉三維標准模型一定角度,直到模型上“三維特征點”的“2維投影”,與待測試圖像上的特征點(圖像上的特征點顯然是2維)盡量重合。這時候我們腦海中就應該浮現出一種詭異的場景:在幽暗的燈光中,一個發着淡藍色光芒的人皮面具一點點的“自我調整”,突然一下子“完美無缺”的“扣在了你的臉上”。這就是人臉姿態估計的思想。
想到了什么沒?這貌似聽起來像是某種數學中常常介紹的一種方法。是的,大部分論文中也經常利用這種方式來建立模型。這個方法就叫做“非線性最小二乘”。
我們也可以利用非線性最小二乘方法來建立我們的模型,模型公式如下:
其中,(α,β,γ)代表人臉姿態三個旋轉角度, N代表着一張人臉上標定特征點的個數,qi代表着待測試人臉特征點,pi代表對應着的三維通用標准模型特征點,R代表旋轉矩陣, t為空間偏移向量,s為伸縮因子。R的具體形式是如下三個矩陣相乘:
給出了人臉姿態估計的模型,我們可以發現,這個公式的形式,剛好對應於剛剛提出的人臉姿態估計算法思想。數學是奇妙的!
更奇妙的在下面.....
這個公式看起來很直觀,很好的解釋了人臉姿態估計的內涵,但是,這個公式怎么求解?
對了,別忘記,這是“爛大街的”非線性最小二乘算法,從牛頓爺爺開始,就有着大把的優化方法,梯度下降,牛頓高斯,信賴域,馬誇爾特等等等等等用於解決它,等到下一篇博客,我會盡量用通俗的語言,為大家介紹姿態估計的下一個重要階段:迭代求精。
附圖(姿態估計效果圖):