基於係數表達的人臉識別演算法隨筆

2021-07-24 19:52:27 字數 1581 閱讀 8053

稀疏表達在人臉識別領域無疑有著舉足輕重的地位。下面簡單介紹一下大致內容:
考慮乙個樣本訓練集,它分為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...