稀疏表達在人臉識別領域無疑有著舉足輕重的地位。下面簡單介紹一下大致內容:
考慮乙個樣本訓練集,它分為c類,第i類的訓練樣本表示為:xi
=[xi
1,xi
2,…,
xni]
∈rm∗
n ,xi
j 就代表屬於第i個類的第j個樣本的m維的列向量,這裡n=
∑ci=
1ni 就是訓練樣本的總數。我們把x=
[x1,
x2,…
,xc]
作為字典,測試樣本y可以由
x 線性表示,比如,y=xα
,這裡α
是個係數向量。若
m<
n ,那麼y=xα
就是不確定的,也就是說
α 並不唯一。因為測試樣本總能被訓練樣本正確歸類,而當訓練樣本數量足夠多的時候,表示矩陣往往是稀疏的。src強調用來標書的係數向量
α 越稀疏,那麼對測試樣本進行分類就越容易。這使得人們迫切希望通過求解下面的最優化問題來得到最稀疏的解: α^
=arg
min|
|y−x
α||2
+λ||
α||1
這裡,λ 是個標量。上述公式所示的最優化問題有很多有效地解決演算法,如:bp(basis pursuit)演算法,l1_ls(壓縮感知一範數求解)演算法等等。
到此,我們已經得到了最稀疏的解α^
,命ϵi:
rn−>rn
是乙個能夠人性化地為第i個類選擇相應的係數的函式,ϵi
(α^)
是乙個向量,其中唯一非零項同樣也是與第i類相關的α^
的項,測試樣本
y 就可以據此重構:yi
^=xϵ
i(α^
).那麼
y 該分到那個類呢?我們認為,y和
yi之間的類重構錯誤最少,那就應該分為哪一類。公式如下: id
enti
ty(y
)=ar
gmin
i||y
−xϵi
(α^)
||2
在實際的應用中,資料有可能出現損壞或遮擋等等,我們需要允許一定錯誤率,上面的公式可以重寫為: y=
y0+e
=xα+
e=[x
,i][
α,e]
t=bw
這裡 b=
[x,i
]∈rm
×(m+
n),i
∈rm×
n 是乙個單位矩陣。這個時候,「乾淨」的測試樣本資料y0
以及差錯
e 可以通過字典x以及
i 進行係數編碼,稀疏解w^
=[α^
t,e^
t]t就能通過解決最優化問題(上面提出第一條公式)得到計算。
y 的正確分類遵循下面額規則: id
enti
fy(y
)=mi
ni||
y−xϵ
i(α^
)−e^||2
基於opencv的人臉識別
1前言參考的是 這篇用的是dlib的對齊還加了mask。本文方法 人臉檢測 shiqiyu libfacedetection opencv提取ptr類 2 facedetect.h include include include include include facedetect dll.h us...
基於Opencv的人臉識別
要進行人臉的識別的訓練,首先我們要對openv中人臉識別類facerecognizer要有乙個了解,可以參考這個部落格對facerecognizer 有乙個了解 這個部落格對人臉的訓練解釋的很好,具體怎麼訓練可以閱讀這個部落格。關於人臉識別 我們有一下兩個步驟 1.利用pca變換的人臉識別,對人臉進...
基於Opencv的人臉識別
當在閱讀書籍opencv3時,偶遇人臉識別這一概念,通過網上查閱得知人臉識別是生物特徵識別的最新應用。在此書籍引導下,寫了乙個最基本的人臉識別 期間有乙個問題需要注意,再往工程目錄匯入xml檔案是注意不要導錯,應該是這兩個haarcascade frontalface alt.xml和haarcas...