ASM(active shape models)算法介紹

ASM是基於統計學習模型的特徵點提取的一種方法。這個方法是95年就提出來的,不過至今仍是我認爲比較好的人臉特徵點提取的方案。方法的提出人Tim Cootes後來還提出了aam算法,也很有名,但如果簡單是特徵點的定位的話,我認爲asm的效果可能更好一些。ASM跟大多數統計學習方法一樣,也包括train和test(or fit)兩部分,也就是形狀建模build和形狀匹配fit。這個算法其實很簡單,可以用來做實時性的檢測,但我還是看了很久,而且還有理解有問題的地方,肯定有很多不對的地方,希望大家多多指正。

一、模型的建立(build)

1.選擇合適的特徵點

特徵點的選取很重要啊,這點不用我多說啦。好的特徵點大概應該或多或少滿足如下幾點:邊緣點、曲率大的、T型連接點和以上這些點的連線上的等分點。(如下圖)


記錄好這些特徵點的順序,以便於後面確定圖形的邊界和連線等等。這也是asm方法的優點,得到的特徵點是有序的。這樣得到一組特徵點集X


我們這裏把它看做是一個2n維的向量


2.形狀統計模型

剛剛得到的2n維向量維數很高(因爲圖像中我們選擇的特徵點往往很多),但這2n維彼此是有很強的相關性的,彼此的位置距離是大致不變的。這裏作者使用最最常用的PCA來進行降維,提取出主成分,這裏作者叫它modes。於是任意一組特徵點集可以看做是主成分向量空間的一個座標點,而這個座標原點就認爲是這些點集的平均,這樣任意點就是座標原點加上一個向量。即:


這裏P是包含了前t個主成分的協方差矩陣,b是一個t維的向量,用來控制特徵點形狀的變化,當b爲0時,x即座標原點(平均形狀),其實是很好理解哈。但這裏b不要太大,如果太大,會導致整個形狀變化超出人臉的變化範圍,會使人變得異常猙獰,大家懂的。。。所以作者這裏做了約束


這步還有個問題,就是PCA中主成分個數t的選取,有兩種方法:1)選擇前s個;2)選擇前k%的分量,這裏作者推薦使用第二種方法。

3.把模型和新點集進行匹配

這個過程是asm方法的核心所在了,貫穿始終。說來也簡單,無非就是把剛得到的模型進行旋轉,放縮,平移。


其中T爲旋轉放縮平移矩陣


我們的目的就是是模型X和圖像特徵點集Y最接近,這裏目標函數選擇是其各點歐氏距離和最小


具體的匹配過程就是,先初始化b向量爲0,得到模型X,用其他方法找到變換矩陣T,這個很簡單,可以用其他方法(haar人臉檢測器,光流法,kalman濾波等等等等)大致找到目標的位置和大小以及方向。求的Y,再利用Y反求b,並且更新b,直到收斂。這裏比較容易陷入局部最小,也是該方法的一個缺點。

二、模型在圖像中的匹配(fit)

說白了,也就是在圖像中找到模型的匹配點,前面已經說過了,可以利用其它方法大致找到模型的位置大小方向(不要小瞧這步,如果預處理的不好,是很容易陷入局部最小的),接下來就是如何改善參數得到好的匹配結果了。模型中可以調整的參數有b、Xt、Yt、s、theta這5個參數。這裏作者提到了兩種手段:

1)先驗信息認爲特徵點主要是圖像的強邊緣點,並且圖像灰度的梯度服從高斯分佈,只要找到模型特徵點附近梯度最大的值,即認爲是特徵點所在的位置


示意圖如下:


這種方法很明顯,對圖像的噪聲很敏感,我這裏不太推薦

2)對模型特徵點周圍的紋理信息進行採樣,對比圖像和模型訓練集的紋理,找到紋理最接近的點即認爲是特徵點。作者這裏比較紋理的工具是馬氏距離。爲了提高搜索的效率,作者還提到了多分辨率搜索周圍像素紋理,對於粗糙的尺度,搜索範圍大,對於細緻的尺度,進行細緻的搜索,提高了匹配的效率。這個方法是我比較推薦的。

發佈了5 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章