天天看點

matlab 人臉識别 神經網絡,人工神經網絡在人臉識别分類中的應用

摘要:在人臉識别技術不斷發展的今天,人們已經不局限于能夠識别出人臉,更主要的側重于人臉識别的準确性和高效性。人臉識别主要分成3個步驟人臉檢測、特征提取、識别分類,其中識别分類的方法決定了是否能夠正确識别出人臉。BP神經網絡具有正向傳播和反向傳播的特性,進而保證了分類的準确性,是以本文中筆者主要研究如何在MATLAB中把BP神經網絡應用在人臉的識别分類上。

關鍵詞:人工神經元網絡;BP神經網絡;matlab;識别分類

中圖分類号:TP391.41文獻辨別碼:A文章編号:1007-9599 (2010) 16-0000-02

Artificial Neural Network Application on Face Classification

Liang Xiaoli

(Heilongjiang Radio&TV University,Harbin150080,China)

Abstract:In the face recognition technology is developing continuously,people not limited to recognize the human face,but the main emphasis on the accuracy and efficiency of face recognition.

Face recognition is divided into three steps,face detection,feature extraction,recognition category,identification and classification of the methods in which the decision of whether to correctly identify the human face.BP neural network with forward propagation and back propagation characteristics,so as to ensure the accuracy of classif-

ication,Therefore,the main author of this article how to MATLAB,the BP neural network used in face recognition classification.

Keywords:Artificial neural network;BP neural network;Matlab;

Recognition category

人工神經元網絡,又稱為神經元網絡,它是對人腦的簡化、抽象和模拟,反映了人腦的基本特性神經元網絡是由大量處理單元廣泛互連而成的網絡。神經網絡研究的是模拟人腦資訊處理的功能,從人腦的生理結構出發來研究人的智能行為。是依托于數學、神經科學、實體學、計算機科學及工程等學科的一種綜合性技術。

一、人工神經網絡的分類

我們可以對人工神經網絡進行如下分類:

(一)單層的前向神經網絡

這裡所說的單層前向網絡是指擁有單層的神經元是,作為源節點個數的“輸入層”被看作是一層神經元,“輸入層”是不具有計算功能。

(二)多層的前向神經網絡

多層前向神經網絡與單層前向神經網絡的差别在于:多層的前向神經網絡和單層前向神經網絡的隐含層個數不同,在多層的前向神經網絡中完成計算功能的節點被稱為隐含單元(隐含神經元)。由于隐層的數量不同,使網絡能進行更高序的統計,尤其當輸入層規模龐大時,隐層神經元提取高序統計資料的能力便顯得非常重要。

(三)回報網絡

回報網絡指在網絡中最少含有一個回報回路的神經網絡。回報網絡中包含一個單層神經元,在這一層中的所有的神經元将自身的輸出信号回報給其他所有神經元作為輸入。

(四)随機神經網絡

随機神經網絡是在神經網絡中引入了随機概念,每個神經元都是按照機率的原理在工作,這樣每個神經元興奮或抑制具有随機性,其機率取決于神經元的輸入值。

(五)競争神經網絡

競争神經網絡最顯著的特點是它的輸出神經元之間互相競争以确定勝出者,勝出者指出哪一種原型模式最能代表輸入模式。

二、神經網絡的學習

神經網絡的學習又被稱為訓練,所指的是通過神經網絡所在外界環境的刺激下調整神經網絡的參數,使得神經網絡以一種調整好的方式對外部環境做出反應的過程。從環境中學習和在學習中提高自身性能是神經網絡最有意義的特征了。

學習方式可分為:有師學習和無師學習。有師學習又稱為有監督學習,在學習時需要給出指導信号(又可稱為期望輸出或者響應)。神經網絡對外部環境是未知的,但可以将指導信号看作對外部環境的了解,由輸入―輸出樣本集合來表示。指導信号或期望輸出代表了神經網絡執行情況的最佳結果,即對于網絡輸入調整網絡參數,使得網絡輸出逼近期望的輸出值。無師學習包括強化學習與無監督學習(可以被稱為自組織學習)。在強化學習中,對輸出的學習是通過與外界環境的連續作用最小化完成的。

三、BP神經網絡

BP(Back Propagation)神經網絡,就是指包含資訊正向傳播和誤差反向傳播算法的學習過程。輸入層的每一個神經元負責接收來自外界的輸入資訊,并傳遞給中間層中的每一個神經元;中間層的各個神經元是内部資訊處理層,負責資訊變換,可以設計為單隐層或者多隐層結構;最後隐含層傳遞到輸出層的資訊,經進一步處理後,完成一次學習的正向傳播處理過程,由輸出層向外界輸出資訊處理結果。當實際輸出與期望輸出不相符時,進入誤差的反向傳播階段。誤差通過輸出層作用于輸入層,按誤差梯度下降的方式分别修正各層權值,逐漸向隐含層和輸入層反傳。多次的經過資訊正向傳播和誤差反向傳播過程,是各層權值不斷調整的過程,也就是神經網絡學習訓練的過程,此過程一直進行到網絡的輸出誤差減少到可以被接受的程度,或者達到預先設定的學習次數才會停止。

四、實驗過程及結果

本文中假設已經用奇異值分解得到人臉特征點的資料,每個人臉劃分為五部分,每部分又得到5個特征值,是以也就是25個的特征值。本文采集了50個人人臉,每人采集10張不同姿态下的照片,也就是500張照片,對這些照片進行人臉檢測并進行奇異值分解,得到每張照片對應的25個特征值,從每人10張照片中随機抽出5張用于訓練出不同的姿态下的人臉,另外的5張用作測試樣本。

(一)實驗過程

由于資料過長,本文隻以2個人,每人2張照片作為的訓練樣本資料為例來說明。

第一步:訓練樣本(每人25個特征值),在p是一個25行,4列的矩陣,每一列代表一個人的25個特征值,屬于一個樣本;列數4表示樣本總數;

p=[ 7.4264 9.0728 7.9825 9.5632;

7.5719 7.8115 6.5564 7.8561;

12.8074 12.7073 12.4536 11.5423;

9.0284 10.3744 8.7569 9.9965;

7.0083 9.0284 7.1254 8.8876;

1.2597 2.1578 1.3556 3.0112;

0.6896 0.7835 0.7859 0.9658;

0.7814 0.8818 0.7568 0.8213;

1.0248 1.6783 1.1542 1.5234;

1.0112 1.0248 0.9568 0.9652;

1.0427 1.0813 1.0425 0.9568;

0.5970 0.5886 0.5968 0.5889;

0.4928 0.5969 0.3569 0.6012;

0.6438 0.6417 0.6589 0.5612;

0.3563 0.6438 0.2534 0.6689;

0.4474 0.4235 0.4568 0.4236;

0.2483 0.2282 0.2253 0.2259;

0.3633 0.4616 0.3102 0.4556;

0.3383 0.4167 0.3561 0.3456;

0.3130 0.3383 0.3302 0.3359;

0.3378 0.3313 0.3219 0.3569;

0.1916 0.1767 0.1564 0.1952;

0.2356 0.3422 0.2355 0.3012;

0.2088 0.3268 0.1958 0.3568;

0.1858 0.2088 0.0956 0.1968;];

第二步:目标輸出矩陣

因為就兩個人,是以采用一位二進制編碼就可以,在這裡定義第一類樣本的編碼為0;第二類樣本的輸出編碼為1。

t=[0 1 0 1];

第三步:使用MATLAB建立網絡結構

net1=newff(minmax(p),[25,9,1],{'tansig','tansig','hardlim'},'traingdm');

說明:[25,10,1]表示該網絡的輸入結點為25個值,輸出結果為1為二進制編碼的值,中間層由經驗公式 (rnd為0-1之間的随機數),是以本文選取5-15之間數分别作為隐含層的神經元個數,得出的結論是9的收斂速度最快。

第四步:對網絡進行訓練

[net1,tr]=train(net1,p,t);

第五步:儲存網絡

save aa net1

則檔案會以aa.mat的格式儲存,儲存了訓練好的網絡以及權值。

第六步:輸入測試樣本

先加載上一步中儲存好的網絡,本實驗中隻輸入一個測試樣本,下面的資料代表測試樣本的特征值,共25個。

load aa.mat

p1=[7.8115;0.7835;0.5886;0.2282;0.1767;1.0197;0.7896;0.6814;1.1238;1.1114;0.9427;0.5970;0.4569;0.5438;0.4563;0.1983;0.4632;0.3383;0.3130;0.4377;0.1817;0.2256;0.2088;0.2854;0.2812];

第六步:網絡仿真

a=hardlim(sim(net1,p1)-0.5)

(二)實驗結果

根據上述實驗過程,得出的結果是:

下圖是執行了10次中的一次算法模拟情況。

Elapsed time is 0.469seconds

網絡仿真的輸出結果是:a=0

本文中測試的資料來源于訓練樣本中輸出為0的樣本,識别結果正确。換了10個測試樣本,其中識别正确的是6個,也就是正确率大約在60%。

然後,采用相同的辦法,在實驗中把訓練樣本由每人兩個不同姿态下的樣本增加到了3個,也就是輸入向量的p由4列增加到6列,其他的均不變,網絡的訓練時間為0.471 seconds。還是使用上面的10個測試樣本,其中識别正确的達到了8個,正确率提高到了80%左右。

在樣本量擴大到250時,這些樣本是來自于,50個人,每人拍攝10張不同姿态下的照片,也就是500張,然後從其中随機的取出每個人對應的5張照片作為訓練樣本,然後再把從剩餘的250張作為測試樣本,進行測試。輸入結點數為250,每個結點對應的特征向量為25;輸出值用二進制的編碼表示,由于後面要實作的人臉識别系統中要應用在一個隻有50人的環境下,是以采用二進制編碼6位就夠了,但是為了系統的可擴充性,是以采用7位二進制編碼來設計輸出結點的值,bp網絡就是25維輸出7維輸出。此時測試的250個資料中隻有一組資料是錯誤的,原因是照片中的人嘴和鼻子被口罩遮住了。

樣本量增加後網絡訓練到一個樣本測試仿真所有的時間是1.936seconds。

五、小結

本文介紹了基于BP神經網絡的人臉識别分類方法,先用matlab設計了一個模拟程式,然後不斷的增加訓練樣本中同一人樣本的樣本數,訓練後用10個人分别測試兩個網絡的正确率,當同一人的樣本數增加到3時,正确率由60%提高到了80%。可以證明網絡訓練樣本的增加有利于提高識别的正确率。把在上一章中采集到的50個人所對應的500張照片作為标準樣本庫,從中随機取出250張作為訓練樣本,然後設定輸出值,輸出的值應該有50類,采用二進制的編碼構成,然後再實用剩餘的250張照片作為測試樣本,進行測試。

實驗後的得出的結論是當訓練樣本數增加到5個時,測試資料才沒有遮擋的情況下,可以達到100%的正确識别率。

在本實驗後,儲存了一個shengjingwangluo.mat的網絡,這個檔案是由250個樣本,對應50種樣本的資料訓練好的bp網絡。