Supervised Descent Method and its Applications to Face Alignment
廣播說明:
進(jìn)入深度學(xué)習(xí)時代,如下的方法已經(jīng)失去可比性,且我們的代碼實現(xiàn)地很粗糙,如果堅持要用,推薦如下代碼
https://github.com/wanglin193/SupervisedDescentMethod (看起來作者對sdm實現(xiàn)的不錯)
另外一篇基于深度學(xué)習(xí)的基于回歸的方法,也是使用的基于SDM的相同的思路,但是全部深度學(xué)習(xí)化,
更加魯棒。 見:《Stacked Hourglass Network for Robust Facial Landmark Localisation》
本方法是當(dāng)前人臉對齊最流行的算法,速度很快,很穩(wěn)定。下面我將介紹一下這篇文章的整體思路和相關(guān)細(xì)節(jié)。
在介紹之前,先給出幾個有用的鏈接:
1.)
本論文作者主頁,形象地介紹了SDM的特點:
http://xiong828.github.io/sdm.html
2. )
superviseddescent C++11版本的實現(xiàn):
http://patrikhuber.github.io/superviseddescent/
下面開始介紹:
人臉對齊就是要找人臉的特征點。如圖
。
我們要找到眼睛、鼻子、嘴巴等特征點。那么如何去做呢?方法有很多。本文講述了使用SDM去求特征點的方法。假設(shè)我們有一個初始的特征點x0x0,希望通過迭代,逐步求出準(zhǔn)確地特征點x?x?。這就是大致的思路。
SDM方法(Supervised Descent Method )
Derivation of SDM
給定一幅含有m個像素的圖像d∈Rm×1d∈Rm×1,d(x)∈Rp×1d(x)∈Rp×1用來索引圖像的p個特征點,x代表p個特征點。h(d(x))∈R128p×1h(d(x))∈R128p×1代表SIFT特征向量。在訓(xùn)練階段,我們假設(shè)準(zhǔn)確的p個特征點已知,設(shè)為x?x?。我們另外選取訓(xùn)練集特征點的平均值x0x0作為初始值。如圖:
這樣,Face Alignment可以通過在ΔxΔx求解如下的最優(yōu)化問題:
這里 Φ?=h(d(x?))Φ?=h(d(x?))代表手工標(biāo)記的特征點的SIFT特征。在訓(xùn)練階段, Φ?Φ?和 ΔxΔx已知。
f(x0+Δx)≈f(x0)+Jf(x0)TΔx+12ΔxTH(x0)Δxf(x0+Δx)≈f(x0)+Jf(x0)TΔx+12ΔxTH(x0)Δx
對上面關(guān)于 ΔxΔx求導(dǎo),令 f′(x0+Δx)=0f′(x0+Δx)=0,可得
Δx1=?H?1Jf=?2H?1JTh(Φ0?Φ?)Δx1=?H?1Jf=?2H?1JhT(Φ0?Φ?)
,這里 Φ0=h(d(x0))Φ0=h(d(x0)).
令 R=?2H?1JTh,ΔΦ0=Φ0?Φ?R=?2H?1JhT,ΔΦ0=Φ0?Φ?,于是R可看作 Δx1Δx1到 ΔΦ0ΔΦ0的線性回歸系數(shù)。但是,我們知道在測試階段, Φ?Φ?是未知的,但是固定的。因此我們不再使用 Φ?Φ?做訓(xùn)練,而是改用下面的公式:
Δx1Δx1Δx1===?2H?1JTh(Φ0?Φ?)?2H?1JThΦ0+(?2H?1JTh)(?Φ?)RΦ0+b0Δx1=?2H?1JhT(Φ0?Φ?)Δx1=?2H?1JhTΦ0+(?2H?1JhT)(?Φ?)Δx1=RΦ0+b0
使用訓(xùn)練樣本,我們的方法可以學(xué)習(xí) R0,b0R0,b0.
通常這種方法不可能一步迭代完成,需要進(jìn)行多步,除非f是二次的。為了處理這個非二次的方程,SDM將產(chǎn)生一系列的下降方向 {Rk}{Rk}和偏差 {bk}{bk}.
即
xk=xk?1+Rk?1Φk?1+bk?1(1)(1)(1)xk=xk?1+Rk?1Φk?1+bk?1(1) ,使得對于訓(xùn)練圖片集, xkxk將收斂到 x?x?.
Learning for SDM
假定給定一系列人臉{di}{di}與對應(yīng)的特征點{xi?}{x?i}.對于每張圖片,從初始的特征點xi0x0i出發(fā),R0,b0R0,b0可以通過求解最優(yōu)化問題獲得:
這里 Δxi=xi??xi0,Φi0=h(di(xi0))Δxi=x?i?x0i,Φ0i=h(di(x0i)).
我們假定 xi0x0i可以從服從正態(tài)分布的人臉檢測框?qū)R采樣。于是上面的最優(yōu)化問題化為:
argR0minb0∑di∑xi0||Δxi?R0Φi0?b0||2argR0minb0∑di∑x0i||Δxi?R0Φ0i?b0||2
以上方程是個線性的最優(yōu)化問題,可以直接求解。
當(dāng)?shù)谝徊角蠼馔戤吅?#xff0c;代入方程式(1),可以求出 x1x1,進(jìn)而又可以計算特征向量 Φik=h(di(xik))Φki=h(di(xki))和 Δxki?=xi??xikΔx?ki=x?i?xki.這樣 Rk,bkRk,bk可以通過一個新的線性回歸得到。
argRkminbk∑di∑xik||Δxki??RkΦik?bk||2argRkminbk∑di∑xki||Δx?ki?RkΦki?bk||2
隨著k的增大,誤差逐漸減小,一般4到5次的迭代就可以達(dá)到比較好的效果。
Training for SDM
當(dāng)我們計算出一系列的{Rk},{bk}{Rk},{bk},我們就可以通過迭代式(1)通過迭代求解特征點。一般初始的特征點可以選取訓(xùn)練時的初始特征點。
后續(xù)我們還會給出SDM方法的Matlab代碼及相關(guān)說明,你就會看到比較清楚的步驟和效果了。
總結(jié)
以上是生活随笔為你收集整理的Supervised Descent Method and its Applications to Face Alignment的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。