韓睿


摘要:本文設計描述了三種人臉識別技術:(1)通過膚色模型訓練的圖像變化技術對圖像的人臉區域進行識別并分割出來。(2)Eigenface人臉識別算法的圖像表示技術通過輸入已知人臉圖片,可視化特征臉,與系統相似臉匹配并計算識別準確率。(3)全連接神經網絡技術和卷積神經網絡技術實現對對輸入人臉的識別分析和匹配測試,從系統庫里找到與之最相近的的臉,并可視化展示。
[關鍵詞]人臉識別深度學習神經網絡
1引言
1.1課題研究的目的和意義
近年來,隨著科學技術的進步和社會的發展,對有效辨別人身的需求越來越迫切。傳統的指紋識別和密碼識別等方式雖已發展較為完善但存在著識別率偏低,應用性不廣等問題。人臉識別技術在識別身份和圖像處理方面有著廣泛的應用和發展空間,與其他身體特征相比,人臉不容易被遺忘,不易竊取,且具有非接觸性和穩定性。而身份驗證和人臉檢測方面對人臉識別的準確度提出越來越高的要求,故而人臉識別智能算法對識別準確度有著較為重要的影響。
1.2設計需求
在當今社會中,人臉識別技術主要適用于身份識別和匹配,一方面需要將獲取到的人臉圖像進行面部識別,即將圖像中的人臉區域進行提取,另一方面需要將識別到的人臉與系統庫里已有的人臉圖像進行匹配驗證進而達到身份驗證的目的。
本文通過多建立人臉訓練膚色模型檢
測人臉區域部分,提取人臉區域,分別使用Eigenface算法,全連接網絡的人臉識別,卷積神經網絡的人臉識別實現簡易人臉識別系統并測試其準確率。
2多人臉訓練膚色模型檢測
2.1訓練膚色模型
人臉的膚色不依賴于面部的其他特征,不受表情和妝容影響,具有很好的穩定性。由于不同膚色的人臉對應的色調基本一致,故人臉膚色的特征主要通過膚色模型描述,故本方案采用高斯模型來表示。
2.1.1色彩空間
為了把人臉區域從非人臉區域分割出來,需要使用適合不同膚色和不同光照條件的可靠的膚色模型。在本文的實驗中選用YCrCb空間作為膚色分布統計的映射空間,該空間的優點是受亮度變化的影響較小,而且是兩維獨立分布,能較好地限制膚色分布區域。進而大大提高了人倆檢測的效率和正確性。
2.1.2建立膚色樣本
建立膚色模型需要使用大量包含不同膚色的圖像信息,由于本設計目的為對一已知面部圖片進行膚色識別,進而可以只截取3-5張該圖像的膚色信息圖片(即人臉的一小部分)作為膚色樣本。將其從RGB圖片轉化為YCbCr色彩空間。
2.1.3建立膚色模型
在構建膚色模型之后,首先使用二位高斯分布來描述這種Cb-Cr的色度分布,然后對膚色樣本進行一定的分析得到一個分布中心,在根據所觀察的像素離該中心的遠近來得到一個膚色的相似度。利用已知樣本圖像,計算均值和方差得到高斯分布模型。
均值計算公式:a=s/(m*n);(像素值總和除以像素個數)
方差計算公式如下:a2==s/(m*n-1);(S為所有像素與均值的平方和)
二維高斯分布表達式為:
2.2測試分析
2.2.1閾值分割
在進行閾值分割之前,首先將彩色圖像轉換為灰度圖像,實驗證明,不同的膚色具有相同的2D模型G(m,V^2)。灰度值對應屬于皮膚區域的可能性,同過設定門限,就可以轉換為二值圖像,1,0分別表示皮膚和非皮膚區域。使得圖像對存儲需求和傳輸帶寬的要求大大降低,從而達到在完成圖像壓縮的同時也保證了視覺上幾乎沒有損失的效果,進而使得圖像的傳輸速度更快,存儲更加方便。
由于人體皮膚區域的像素與膚色模型的相似程度較高,計算得到相似度比1較大,因此在膚色灰度圖中,皮膚區域會顯得比其他部分更亮。通過嘗試改變閾值即可達到目的效果。
本設計通過選擇的閾值以0.05為間隔從0。8逐漸減小。根據閾值的選擇,就可以將膚色灰度圖轉化為二值圖。轉化二值圖片效果如圖1所示。
2.2.2人臉區間分析
由于二值化圖像可能包含多個類膚色區域,受環境亮度影響,可能會導致人臉判斷錯誤。
故而需對圖像進行標記和判決,以便于逐個處理,本設計采用形態學判斷法,即人為設定長寬高比,逐像素判斷是否在設定的膚色范圍內將符合條件的像素設置為白色,其余像素設置為黑色獲取圖片中的連通區域,刪除面積較小的連通區域對于每個保留的連通區域,畫出包含連通區域的最小矩。當檢測區域的高度比值落在該區間時,則認為該區域為人臉候選區域。
并用矩形方框框出滿足條件的部分,如圖2所示。
3Eigenface實現人臉識別系統
3.1特征臉與平均臉的構建
3.1.1平均臉
由系統已知的圖像知共165張圖像,實驗證明,將15人的165張圖像劃分為訓練集和測試集,訓練集主要用于平均臉的計算以及計算特征值,測試集主要用于和訓練集中的人臉圖像進行匹配進而得到識別準確度。
平均臉的計算需要先計算各張訓練集圖像的像素以及求出平均值。由于數量巨大,本設計采用將每張圖片依次讀取各張測試集圖片并存儲成一個向量。即獲取包含M張人臉圖像的集合S。每張圖像可以轉換成一個N維的向量然后把這M個向量放到一個集合S里。在獲取到人臉向量集合S后,計算得到平均圖像甲,計算公式如下:
將平均臉按像素排列順序進行排列如圖3所示。
3.1.2特征臉
由高等數學知識知求特征臉即為計算九張測試集的特征向量,其中ψ表示平均圖像,C為特征向量計算公式如下:
即先計算每張圖像和平均圖像的差值φ,就是用S集合里的每個元素減去步驟二中的平均值。
找到M個正交的單位向量un,這些單位向量其實是用來描述φ(步驟三中的差值)分布的。un里面的第k(k=1,2.,..M)個向量uk是通過下式計算的
當這個Nk(原又里取了個名子叫特征值)
取最小的值時,uk基本就確定了。
上面的等式使得uk為單位正交向量。計算上面的uk其實就是計算如下協方差矩陣的特征向量:
其中A={中,P2,φ,....,中。}
對于一個NxN(比如100x100)維的圖像來說,上述直接計算其特征向量計算量實在是太大了(協方差矩陣可以達到10000x10000),所以有了如下的簡單轉化計算。如果訓練圖像的數量小于圖像的維數比如(M 一旦我們找到了L矩陣的M個特征向量vI,那么協方差矩陣的特征向量ul就可以表示 這些所求的特征向量即為特征臉,根據像素排列順序進行排列,在程序中用可視化界面顯示即可得到九張特征連,如圖4所示。 其中2代表要判別的人臉,S2k代表訓練集內的某個人臉,兩者都是通過特征臉的權重來表示的。式子是對兩者求歐式距離,當距離小于閾值時說明要判別的臉和訓練集內的第k個臉是同一個人的。 3.2識別準確率檢測 由上式得特征臉可以用如下方式表示: 其中k=.2...M,對于第k個特征臉uk,上式可以計算其對應的權重,M個權重可以構成一個向量: 計算識別的準確率本設計采用歐式距離的最小值進行計算,當測試集中的圖像與訓練集的圖像一對應(即為同一個人)計數加一,用識別正確的數量比測試集的圖像數量進而得到準確率。 由已知可以通過上式對測試集求特征值,從而進行特征值比進而得到歐式距離。其中Q代表要判別的人臉,9k代表訓練集內的某個人臉,兩者都是通過特征臉的權重來表示的。式子是對兩者求歐式距離,當距離小于閾值時說明要判別的臉和訓練集內的第k個臉是同一個人的。采用公式如下: 4全連接網絡人臉識別系統 4.1數據結構的構建 構建結構體儲存圖像的數據,其中包含:訓練集與測試集的圖像數據,訓練集的均值,圖像數據所屬類別,訓練集驗證機的索引。將數據集分為3組,將每個人的十張照片分為訓練集,驗證集和測試集,比例為6:2:2。其中訓練集作為以上程序的訓練樣本,另外兩組作為檢驗樣本和驗證。結構存儲如下所示: imdb.images.data%訓練集與測試集的圖像數據 imdb.images.data_mean%訓練集的平均值 imdb.images.labels%data中圖像所屬類別 imdb.images.set%訓練集,驗證集的引索 imdb.meta%儲存元數據信息 其中本設計由于讀入數據為圖像信息,故采用計算特征臉的方法,具體步驟如下: (1)創建并申請錄入數據的矩陣內存 (2)從地址中依次讀入圖像并把圖像矩陣按列順序轉化為行向量 (3)計算錄入圖片信息的平均值 (4)進行特征值歸一化處理 讀取圖片及轉化函數如下: imdb.images.labels(10*i-10+j)=i;. b=sprintf("%d_%d.bmp',ij); c=strcat(a,b); im=imread(c); imdb.images.raw(..,.10*i-10+j)=im; im一imresize(im,[28,28]'nearest); im=double(im); 4.2網絡結構的構建 使用函數創建神經網絡,并確立損失函數,同時需要設置網絡參數神經網絡創建函數如下: net=newff(minmax(input),[103],{'logsig''purelin'},'traingdx'); net=vl_simplenn_tidy(net);%用默認值初始化網絡參數 網格參數設置如下:net=vl_simplenn_tidy(net);%用默認值初始化網絡參數 net.meta.inputSize一[112,92,1];%圖像加載大小. net.meta.trainOpts.learningRate0.001;%學習率 net.meta.trainOpts.numEpochs=150;%迭代次數 net.meta,trainOpts.batchSize=64;%batchsize 測試數據歸一*化如下所示:testInput=tramnmx([t1,t2,t3,t4]',minI,maxI) 4.3訓練集進行訓練 選擇最優函數,通過網絡訓練得到最優參數。讀取測試函數,將測試數據歸一化,對結果進行仿真。 訓練函數使用如下: images=imdb.images.daa(:;;,batch); labels=imdb.images.labels(l,batch); 測試數據歸一化函數使用如下: testInput=tramnmx([t1,t2,t3,t4]',minI,maxI); 4.4最優結果測試 測試結果計算識別準確率,經過訓練達92%,實驗結果如圖5所示。 5卷積神經網絡的人臉識別系統 5.1網絡結構構建 卷積神經網絡目的在于通過構建模型,并經過訓練,進而完成對人臉的匹配。對于一張待識別的圖片,無論旋轉平移還是鏡像變換,總是本人。對圖像進行預處理,能夠更好地提高準確率。識別總流程為: (1)輸入待識別人臉圖片p (2)對p進行旋轉平移鏡像變化等產生批量人臉圖片pp (3)將pp輸入人臉識別模型中,進行批量分量檢測,產生輸出與pp對應的批量輸出qq (4)選取qq相似度最大的類型輸出,該類別最大程度的代表輸入人臉的類別。 網絡構建并構建數據結構并錄入數據構建方法與全連接網絡相似,主要步驟同為定義網絡結構并進行訓練,并用測試集圖像進行測試。在構建模型時,取兩層卷積層,一層全連接層為模型,兩層卷積層的過濾器分別為36個[5,5,1]與40個[4,4,36]。 6總結與展望 本設計通過使用多種算法,從不同角度實現了對人臉的識別處理。其中,多人臉訓練膚色模型通過對圖像的處理進而分割出人臉部分區域,進而達到人臉的識別。Eigenface人臉識別算法的圖像表示技術,以及全連接神經網絡技術和卷積神經網絡技術是在已知輸入圖像的基礎上進而達到與系統庫里的人臉圖像的準確匹配。且進過一定的訓練,準確率達到90%以上。本次設計中,對算法的優化程度上依然有較大的提升空間。 本次設計中,初步了解了人臉識別算法的實現過程和數學思維,加深了對算法的理解程度。實踐能力和編程能力均得到了較大的提 參考文獻 [1]張洪明,趙德斌,高文.基于膚色模型,神經網絡和人臉結構模型的平面旋轉人臉檢測[J].計算機學報,2002,25(11):1250-1256. [2]夏良正。數字圖像處理(修訂版)[M].南京:東南大學出版社,1999. [3]梁淑芬,劉銀華,李立琛.基于LBP和深度學習的非限制條件下人臉識別算法[J].通信學報,2014,35(06):154-160. [4]楊健,楊靜宇,王正群等,一種組合特征抽取的新方法[J].計算機學報,2002,25(06):570-575.