張 穎, 馬承澤, 楊 平, 王新民
(1. 長春財經學院 信息工程學院, 長春 130122; 2. 長春工業大學 數學與統計學院, 長春 130012)
人臉識別算法主要包括人臉特征的提取和識別兩部分, 其中特征提取是人臉識別過程中的重要部分, 提取到的特征是否合理直接關系到人臉識別系統識別準確率的高低和速度的快慢. 由于受外部環境(如晝夜、光照等)和被拍者自身因素(如姿態、表情、是否配戴眼鏡等)的影響, 人臉特征提取不準確會導致人臉識別效果較差[1]. 人臉特征提取要解決兩方面的問題, 即高頻和高維問題. 高頻是指圖像在采集、傳送過程中會受到噪聲的影響, 從而在圖像中留下印記; 高維是指圖像的數據維度大, 且存在彼此關聯的、冗余的信息[2].
對圖像頻率成分進行分析, 傳統方法采用Fourier變換, 但Fourier變換缺少時域信息, 雖然改進的STFT(short-time Fourier transform)可通過時間窗將圖像信號分割為一定時間內平穩的信號, 但同一個時間窗內的頻率是固定的, 同樣會導致分析的精度不夠. 小波分析的特點是其可以將信號分割為不同空間的分量, 過濾出圖像中的高頻分量和低頻分量, 從而達到圖像的有效去噪[3]. 目前對圖像進行降維的主要方法是主成分分析(principal component analysis, PCA)方法. PCA是以K-L變換(Karhunen-Loeve transform)為基礎的統計方法, 旨在用少量的特征表征樣本信息, 即可將原始數據從原來的R維空間投影到M維空間(R?M), 且在低維空間中保留了原有數據中的絕大部分特征信息.
本文通過對人臉圖像進行小波分解、去噪, 利用改進的PCA方法對圖像進行主成分提取, 獲得了代表人臉特征的特征向量[4]. 實驗結果表明, 本文算法具有較強的魯棒性, 能有效提高人臉識別效果.
對于一維離散信號f(t), 其小波變換(分解)可表示為
其中Wf(a,b)為頻域信號,ψa,b(t)為小波函數序列,a為伸縮因子,b為轉移因子. 原始信號f(t)經過與不同伸縮尺度a和不同轉移因子b的母小波函數ψ(t)卷積變換后得到原信號的頻域信號Wf(a,b),Wf(a,b)中的a體現了對原信號處理中的分辨(高低頻)特性,b體現了原信號中的時域特性.
對于人臉圖像數據, 原信號f(x,y)可認為是二維離散數據, 處理時先按照一維小波分解的原理, 按行順序對行進行處理, 然后按列順序對行處理的結果再進行相同處理. 小波分解后的圖像包括子帶圖像低頻、水平高頻垂直低頻、水平低頻垂直高頻和高頻四部分. 其中低頻表示原始圖像的低頻信息, 是圖像的近似表示; 水平高頻垂直低頻表示圖像在水平方向上的奇異特性; 水平低頻垂直高頻表示圖像在垂直方向上的奇異特性; 高頻表示圖像的對角邊緣特性(水平、垂直都高頻). 人臉圖像的一級小波變換和二級小波變換分解如圖1所示.

圖1 人臉圖像的小波變換一級和二級分解原理Fig.1 First and second level decomposition principle of face image based on wavelet transform
研究表明, 人臉的光照、少許遮蓋、旋轉、扭曲和表情等只影響圖像中的高頻部分, 低頻部分較穩定, 因此用經過小波分解后的低頻部分代替原始的人臉圖像, 可降低光照、表情等客觀因素的影響, 同時降低計算復雜度, 且能較好地描述人臉的分類特征. 圖2為人臉圖像的Haar小波變換一級分解. 由圖2可見, 利用Haar小波對Olivetti Faces人臉庫中的圖像進行一級小波分解, 圖像低頻部分保留了人臉的主要信息, 同時將人臉圖像數據降到原來的1/4, 從而減少了后續計算的復雜度.

圖2 人臉圖像的Haar小波變換一級分解Fig.2 First level decomposition of face image based on Haar wavelet transform
K-L變換是一種有效的線性變換, 其目的是快速找到一個原始多維數據的投影方向, 該方向能代表原始數據, 通過變換實現對特征空間降維[5]. PCA就是一種以K-L變換為基礎的統計方法.
假設有一張大小為K×K像素的人臉圖像, 將該圖像視為一個長度為M維的列向量(M=K2), 訓練樣本集共有N張圖像, 可表示為(x1,x2,…,xN), 其中每個x都是一個M維向量. 則這N張人臉的平均值向量表示為

(3)


(4)
從而得到樣本集的偏差矩陣D=(Φ0,Φ1,…,ΦN-1)N×M, 進一步可得樣本集的協方差矩陣C為

(5)

利用PCA進行人臉特征提取的工作量主要是計算樣本集協方差矩陣C的特征值和特征向量. 由于C是一個M×M維的方陣, 當維度M非常大, 例如M=10 000時, 采用傳統的PCA算法提取主成分分量時系統運行速度較慢, 甚至會出現內存泄露的錯誤. 因此, 本文采用一種改進的PCA人臉特征提取算法.
對于求解大樣本矩陣, 可采用改進PCA算法計算矩陣特征值所對應的特征向量[8]. 設ΦN×M為每個樣本與樣本均值差的矩陣, 則總體散布矩陣為C=(ΦTΦ)M×M. 考慮矩陣R=(ΦΦT)N×N, 一般情況下由于樣本數量N遠小于樣本維度M, 所以R的大小也遠小于總體散布矩陣C的大小, 但其與C有相同的非零特征值, 所以求總體散布矩陣C的特征值和特征向量可通過求得R的特征值和特征向量間接求得.
假設n維列向量V是R的特征向量, 則有
(ΦΦT)V=λV.
(6)
將式(6)兩端同時左乘ΦT, 并應用矩陣乘法的結合律得
(ΦTΦ)(ΦTV)=λ(ΦTV).
(7)
式(7)表明ΦTV為散布矩陣C=(ΦTΦ)M×M的特征向量. 因此可通過計算小矩陣R=(ΦΦT)N×N的特征向量V, 然后左乘ΦT得到散布矩陣C=(ΦTΦ)M×M的特征向量ΦTV.
實驗采用美國紐約大學整理的Olivetti Faces人臉數據集, 該數據集共包括40個不同的對象, 每個人都有10張不同的人臉圖像, 總計400張圖像, 圖像大小為64×64像素. 在特征提取時, 使用不同種類、不同級的小波分解和改進PCA降維預處理, 判斷對訓練時間和識別率的影響. 分別選取每個人7張圖像, 總計280張圖像作為測試樣本; 其他3張總計120張圖像作為測試樣本. 經過小波分解與重構的圖像如圖3所示, 經過改進PCA降維后的圖像如圖4所示.

圖3 人臉圖像各層低頻系數重構結果Fig.3 Reconstruction results of face image with different layer low-frequency coefficients

圖4 變換及重構圖片Fig.4 Transformation and reconstruction images
在分類時, 本文采用經典的深度卷積神經網絡VGG-16(visual geometry group network)模型作為人臉識別分類器[9]. VGG-16模型包含13個卷積層、5個池化層和3個全連接層. 本文利用TensorFlow框架實現該VGG-16分類器[10]. 訓練時網絡的batch_size設為256, 使用L2懲罰, drop_out比例設置為0.5, 學習率初始值為0.1, 并隨著迭代進行動態更新.
表1為采用不同小波、不同分解級數和改進PCA的實驗數據.

表1 采用不同小波、不同分解級數和改進PCA的實驗數據
由表1可見, 對人臉圖像先進行一級、二級小波變換和改進PCA的混合特征預處理, 再經過VGG-16分類器, 識別率較高, 可知原圖有效信息未嚴重丟失. 但對人臉圖像進行三級小波變換的預處理后, 圖像識別率明顯下降, 表明數據丟失嚴重. 實驗結果表明, 經過二級小波變換和改進PCA特征提取后, 圖像識別時間明顯縮短, 提高了識別效率. 經過sym6(Symlets 6)小波分解和改進PCA特征提取后, 識別率和識別時間均優于Haar和PCA、Db5(Daubechies 5)和PCA的組合特征提取算法, 效果最佳.
綜上所述, 本文提出了一種混合小波變換和改進主成分分析的人臉特征預處理方法, 并將該方法應用于Olivetti Faces人臉庫數據集. 實驗結果表明, 該混合算法處理后的圖像特征數據, 利用VGG-16卷積神經網絡模型算法分類時, 識別的準確率和速度均較單純使用PCA算法進行特征提取約提高10%和37%.