人脸关键点的定位
http://blog.csdn.net/wishchin/article/details/51554036
? ? 人臉的Pose檢測可以使用基于位置約束的特征點的方法。人臉特征點定位的目的是在人臉檢測的基礎(chǔ)上,進一步確定臉部特征點(眼睛、眉毛、鼻子、嘴巴、臉部外輪廓)的位置。定位算法的基本思路是:人臉的紋理特征和各個特征點之間的位置約束結(jié)合。經(jīng)典算法是ASM和AAM。
???????? 一不小心聽懂了ASM、AAM、CLM算法,還是記錄下來......................
CLM/AAM/ASM/Snake模型:
???????? 參考文獻:An Introduction to Active Shape Models.? Constrained Local Model for FaceAlignment. Xiaoguang Yan(2011).
???????? Kass et al [15] introduced Active Contour Models (or ‘snakes’) which are energy minimising curves. In the original formulation the energy has an internal term which aims to impose smoothness on the curve, and an external term which encourages movement toward image features. They are particularly useful for locating the outline of general amorphous objects, such as some cells (see Chapter 3, secion 3.1 for the application of a snake to microscope images). However, since no model (other than smoothness) is imposed, they are not optimal for locating objects which have a known shape. As the constraints are weak, this can easily converge to incorrect solutions.
??????? ASM模型起源于snake模型(作為動態(tài)邊緣分割的snake模型),該方法用一條由n個控制點組成的連續(xù)閉合曲線作為snake模型,再用一個能量函數(shù)作為匹配度的評價函數(shù),首先將模型設(shè)定在目標對象預估位置的周圍,再通過不斷迭代使能量函數(shù)最小化,當內(nèi)外能量達到平衡時即得到目標對象的邊界與特征。
??????? 1989年yuille等人此提出使用參數(shù)化的可變形模板來代替snake模型,可變形模板概念的提出為aam的產(chǎn)生奠定了理論基礎(chǔ)。
??????? 1995年cootes等人提出的asm算法是aam的直接前身,asm采用參數(shù)化的采樣形狀來構(gòu)成對象形狀模型,并利用pca方法建立描述形狀的控制點的運動模型,最后利用一組參數(shù)組來控制形狀控制點的位置變化從而逼近當前對象的形狀,該方法只單純利用對象的形狀,因此準確率不高.
??????? 1998年,cootes等人在asm算法的基礎(chǔ)上首先提出aam,與asm的不同之處是他不僅利用了對象的形狀信息而且利用了對象的紋理信息。
Snake模型:
???????? 參考文章:圖像分割之(五)活動輪廓模型之Snake模型簡介
?????????自1987年Kass提出Snakes模型以來,各種基于主動輪廓線的圖像分割理解和識別方法如雨后春筍般蓬勃發(fā)展起來。Snakes模型的基本思想很簡單,它以構(gòu)成一定形狀的一些控制點為模板(輪廓線),通過模板自身的彈性形變,與圖像局部特征相匹配達到調(diào)和,即某種能量函數(shù)極小化,完成對圖像的分割。再通過對模板的進一步分析而實現(xiàn)圖像的理解和識別。
??????? 簡單的來講,SNAKE模型就是一條可變形的參數(shù)曲線及相應(yīng)的能量函數(shù),以最小化能量目標函數(shù)為目標,控制參數(shù)曲線變形,具有最小能量的閉合曲線就是目標輪廓。
?????????模型的形變受到同時作用在模型上的許多不同的力所控制,每一種力所產(chǎn)生一部分能量,這部分能量表示為活動輪廓模型的能量函數(shù)的一個獨立的能量項。???????? Snake模型首先需要在感興趣區(qū)域的附近給出一條初始曲線,接下來最小化能量泛函,讓曲線在圖像中發(fā)生變形并不斷逼近目標輪廓。
??????? Kass等提出的原始Snakes模型由一組控制點:v(s)=[x(s), y(s)]?? s∈[0, 1]組成,這些點首尾以直線相連構(gòu)成輪廓線。其中x(s)和y(s)分別表示每個控制點在圖像中的坐標位置。 s是以傅立葉變換形式描述邊界的自變量。在Snakes的控制點上定義能量函數(shù)(反映能量與輪廓之間的關(guān)系):
????????????
????????? .................................................
????????? 此外由不同的參數(shù)不同的函數(shù)值,表示為輪廓能量表達式,通過最小化輪廓能量來控制輪廓的演化,完成圖像分割。
????????? 效果:原始的snake模型傾向于生成光滑的邊緣,對邊緣變化劇烈的圖像分割效果不明顯....
????????? 其他方法:基于輪廓內(nèi)外函數(shù)差值的圖像分割方法
ASM模型:
???????? 參考文獻:An Introduction to Active Shape Models
???????? 參考文獻:ASM(Active Shape Model)算法介紹
???????? 算法理論查看論文即可,在此處只列出ASM算法其中的幾個關(guān)鍵點,也是當初起疑的地方。
概述:
???????? ASM是一種基于點分布模型(Point?Distribution?Model,?PDM)的算法。在PDM中,外形相似的物體,例如人臉、人手、心臟、肺部等的幾何形狀可以通過若干關(guān)鍵特征點(landmarks)的坐標依次串聯(lián)形成一個形狀向量來表示。本文就以人臉為例來介紹該算法的基本原理和方法。首先給出一個標定好68個關(guān)鍵特征點(怎么標的??)的人臉面部圖片,如下所示:
???
???????? 三維框顯示了面部的位姿。ASM在實際應(yīng)用中,包括了一般的ML訓練和搜索兩個部分。年級大了,就顯得憔悴......................
ASM模型:訓練/學習過程
??????? 1、建立形狀模型
???????? 搜集N個訓練樣本:
???????????????? 搜集的圖片只要有人臉的面部區(qū)域就可以了,暫時不需要考慮尺寸的歸一化問題。以便完成人臉區(qū)域的ASM訓練。
?????????手動記錄每個樣本中的k個關(guān)鍵點:
????????????????? 對于訓練集中的一個圖片而言,你需要手動標記下(68)個關(guān)鍵點的位置坐標信息,并且將它們保存在文本中。最好用程序?qū)崿F(xiàn)半自動化標定。
?????????構(gòu)建訓練集的形狀向量:
???????????????? 將一幅圖片中的K個關(guān)鍵點組成一個形狀向量?X(?Xi,Y?), 其中,Xi 為 i 個位置坐標組成的向量,這樣所有N個圖像便生成N個訓練樣本,構(gòu)成了N個形狀向量組成的集合S(X |X(Xi,Y?) ,N )。
?????????形狀歸一化:
???????????????? 改步驟的目的在于對前面手動標定的人臉形狀進行歸一化或者對齊操作,從而消除圖片中人臉由于不同角度、距離遠近、姿態(tài)變換等外界因素造成的非形狀干擾,從而使點分布模型更加有效。 一般,使用Procrusts方法進行歸一化:把一系列的點分布模型通過適當?shù)钠揭啤⑿D(zhuǎn)和縮放變換,在不改變點分布模型的基礎(chǔ)上對齊到一個點分布模型,從而改變原始的 非形狀干擾。
???????????????? Procrusts歸一化方法一般為使用一個四元數(shù):旋轉(zhuǎn)角度a, 縮放尺度s,水平位移x, 垂直位移y 。可以用一個 4X4 的矩陣來完成轉(zhuǎn)換過程。
???????????????? 在ASM模型中,利用Procrusts轉(zhuǎn)換 完成 點分布模型的對齊操作,具體過程為:
??????????????????????????? (1)、將訓練集中的所有人臉模型對齊到第一個人臉模型(典型意義,可以自主選擇);
??????????????????????????? (2)、計算平均人臉模型 X0,
??????????????????????????? (3)、將所有人臉模型對齊到平均人臉 X0,
??????????????????????????? (4)、重復(2)(3),直至X0收斂或者到一定時間停止。
????????? 灰度模型:
????????????????? 方法請參考原始論文
??????????選擇是否PCA:
???????????????????? 若考慮到某些特征的影響可以忽略,可以考慮PCA。
????????? 示意圖:
???????????????????
????????????模型描述:
????????????????????
??????????????? X 為平均臉,b表示一個臉與平均臉的差的參數(shù)化,可以描述為圖像到參數(shù)空間的變化。任意的一個臉可以由平均臉和參數(shù)b來進行描述,參數(shù)b描述了平均臉到人臉的細微變化。
ASM模型:搜索/使用過程
??????? 通過訓練樣本集得到ASM模型之后即可進行ASM搜索,首先對平均形狀進行仿射變換得到一個初始模型:
??????????????? X = M( Tp ) + Xc
??????? 用初始模型在新的圖像中搜索目標形狀,使搜索中的特征點和相對應(yīng)的特征點最為接近,搜索過程可以通過仿射變換Tp和參數(shù)b變化(Xc)完成。
??????? 進行迭代搜索,持續(xù)優(yōu)化Xc,計算最接近模型。
初始化過程:
??????? 依據(jù)上述描述,目標向量的初始化是由 初始模型在圖像中搜索得到,這是個得到近似結(jié)果的過程。也可以借由其他的人臉檢測算法檢測出人臉,再由初始模型按照固定參數(shù)起始點進行搜索,得到目標形狀向量。
????????
迭代匹配過程:
??????? 原始過程描述:
??????????????
???????? 通過模型由平均臉 y0 尋找 目標向量 Y,? 來獲得仿射轉(zhuǎn)換參數(shù)Tp;
???????? ---------由 Y 經(jīng) Tp的逆 得到 平均臉的接近值 y;
???????? 通過向y 的 切平面 投影得到原始尺度 y1;
???????? 得到模型描述的殘差b = y1 - y0 ;再由 b 更新 Y------------
???????? 反復迭代,直到 殘差b 小到一定范圍...
????????
???????? 結(jié)果:得到形狀和Pose(x,y,z,旋轉(zhuǎn))最匹配 平均臉 的結(jié)果Y,完成對齊過程,和得到一個收斂的 b來描述結(jié)果。
?? ? ???ASM的搜索過程:
??????????????? 持續(xù)更新Y:根據(jù)灰度模型來更新Y;
?????????????????
?????????????? 由更新的 Y 獲得 y, y1, 更新b 。
AAM模型:
????????參考文獻:Active Appearance Models
??????? ASM是基于統(tǒng)計形狀模型的基礎(chǔ)上進行的,而AAM則是在ASM的基礎(chǔ)上,進一步對紋理(將人臉圖像變形到平均形狀而得到的形狀無關(guān)圖像g)進行統(tǒng)計建模,并將形狀和紋理兩個統(tǒng)計模型進一步融合為表觀模型。
??????? AAM模型相對于ASM模型的改進為:使用兩個統(tǒng)計模型融合 取代?ASM的灰度模型。主要對特征點的特征描述子進行了改進,增加了描述子的復雜度和魯棒性。
?????????
CLM模型:
???????? 參考鏈接:機器學習理論與實戰(zhàn)(十六)概率圖模型04?????????????????機器學習理論與實戰(zhàn)(十六)概率圖模型04
Patch模型/Local模型:
???????? 在ASM構(gòu)建好形狀模型之后,我們就可以在檢測到的人臉上初始化一個人臉形狀模型,接下來的工作就是讓每個點在其鄰域范圍內(nèi)尋找最佳匹配點。ASM使用灰度來更新Y,是沿著邊緣的方向進行塊匹配。匹配高錯誤率導致ASM的性能不是很好。后續(xù)各種改進版本大部分做法都是對候選匹配特征點鄰域內(nèi)的塊--局部 進行建模,我們統(tǒng)稱他們?yōu)橛屑s束的局部模型:CLM。
局部特征提取:
????????建議提取laws特征,比較有普遍適用性。
??????????????????????????????????????
??????????? ? ? ? ? ? ? ? ? ? ? ? CLM模型? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 特征點(左)其鄰域響應(yīng)圖(右)
優(yōu)化過程:
??????? 尋找最小殘差b 最后為可以轉(zhuǎn)化為一個二次凸優(yōu)化問題,作者在論文里有詳細的解釋。
??????? ...........................................????????
人臉的Pose檢測:
???????? 人臉的Pose檢測需要一個 SolvePNP 的過程,對于固定三維點集模型,找出二維點集對應(yīng)的位姿。此外,在track時使用點集尋找一個最優(yōu)的位姿起始,應(yīng)該給出一個好的起始點。
總結(jié)
- 上一篇: IPO:Impinj预计发行460万股普
- 下一篇: 探测(专题)--α、β、γ,应该用的探测