基於PCA降維和BP神經網路的人臉識別
1.ORL人臉庫
ORL人臉庫誕生於英國劍橋Olivetti實驗室。
ORL人臉資料庫共有40個不同年齡、不同性別和不同種族的對象。每個人10幅圖像共計400幅灰度圖像組成,圖像尺寸是92×112,圖像背景為黑色。其中人臉部分表情和細節均有變化,例如笑與不笑、眼睛睜著或閉著,戴或不戴眼鏡等。
取每個人前5幅圖像,共計200幅用來訓練,其餘用於測試。
2.PCA(主成分分析法)
Step 01:樣本中心化和標準化
Step 02:求其協方差矩陣
Step 03:求協方差矩陣的特徵值和特徵向量
Step 04:選擇k個最大特徵值,然後將對應的特徵向量分別作為列向量組成特徵向量矩陣
Step 05:將樣本點投影到選取的特徵向量上,投影后的數據FinalData為:
FinalData(m?k)=DataAdjust(m?n)×EigrnVectors(n?k)
其中DataAdjust(m?n)是中性化後的樣本矩陣,EigrnVectors(n?k)是選擇的k個最大特徵值所對應的特徵向量所構成的特徵向量矩陣。
對數據進行中心化預處理,這樣做的目的是要增加基向量的正交性,便於高維度向低緯度的投影,即便於更好的描述數據。
(圖片來自知乎:https://www.zhihu.com/question/37069477)。
對數據標準化的目的是消除特徵之間的差異性,當原始數據不同維度上的特徵的尺度不一致時,需要標準化步驟對數據進行預處理,使得在訓練神經網路的過程中,能夠加速權重參數的收斂。
過中心化和標準化,最後得到均值為0,標準差為1的服從標準正態分布的數據!!!
求協方差矩陣的目的是為了計算各維度之間的相關性,而協方差矩陣的特徵值大小就反映了變換後在特徵向量方向上變換的幅度,幅度越大,說明這個方向上的元素差異也越大(越有投影的必要,矩陣相乘的過程就是投影),故而選取合適的前k個能以及小的損失來大量的減少元數據的維度。
MATLAB自帶的那個確實是有點慢了,用的是Fast_PCA,最後選取了49維特徵作為輸入。
3.BP神經網路的概念
BP神經網路是一種多層的前饋神經網路,其主要的特點是:信號是前向傳播的,而誤差是反向傳播的,依次調節隱含層到輸出層的權重和偏置,輸入層到隱含層的權重和偏置。
參數:輸入層49,輸出層40
輸入層到隱含層傳遞函數:"purelin"。
隱含層到輸出層傳遞函數:"purelin"。
訓練函數:"traingdx"(動量及自適應lrBP的梯度訓練遞減函數)。
最後的識別準確率並不是很理想
僅為89.5%-90.5%
作者:馬一十二
數據和代碼:https://link.zhihu.com/?target=https%3A//pan.baidu.com/s/1qFCocFsKfJT-9aUIbQvT7A
密碼:66e4
- 加入人工智慧學院系統學習 -
※亞馬遜、谷歌等科技巨頭推進私營無人機空管網路開發
※重磅!南京大學成立人工智慧學院!
TAG:AI講堂 |