焦 陽,趙 嵩
(1. 河南牧業經濟學院 能源與智能工程學院,河南 鄭州 450046;2. 鄭州航空工業管理學院 智能工程學院,河南 鄭州 450046)
在生物特征識別領域,分類是識別過程中的關鍵的步驟。在各種分類方法中,最近鄰(Nearest Neighbor,NN)[1]分類法和最近鄰子空間(Nearest Subspace,NS)[2]分類法由于簡單易用而廣為使用。近年來,基于稀疏表示的分類(Sparse Representation based Classification, SRC)[3]因其魯棒性和良好性能引起了許多模式識別研究者的興趣[4]。DENG等[5]將SRC應用在每類具有極少訓練圖像的情況中。SRC使用稀疏信號重建的無參數學習方法表示數據,并依照重建誤差進行數據分類。但是SRC會失去在相同方向上的數據分類能力[6]。如果訓練樣本和測試樣本屬于兩個或多個分類并有相同的向量方向,SRC將不能實現分類。在機器學習中,核函數多用于構造非線性支持向量機[7],不同于徑向基函數和多項式核,Volterra核可以有任意(無須是平方)的形式,能夠對任意平滑的非線性函數有更好的表示,并產生連續的近似[8]。Volterra核的另一個優勢是其平移不變特性,如果原始圖像進行固定的量變換,映射圖像也同步進行量變換[9]。為了更好地利用Volterra核性能,學者們提出了一些關于Volterra核的改進算法,比如Volterra核的人工蜂群優化算法[10]。在SRC方面也出現了根據遮擋條件進行正則化參數修正優化[11]、多稀疏表示的決策融合[12]等改進算法。但這些方法對屬于同一方向不同類別樣本的分類準確率還不高,基于此,本文提出Volterra核稀疏表示的分類算法(Volterra-SRC)。該算法在空間域將原始圖像分為小塊,并使用Volterra核將每個小塊映射到高維度特征空間。在訓練階段,通過類間距離最大化和類內距離最小化處理,從而使目標函數導出最優Volterra核。在測試階段,使用表決程序協調SRC以判定每個分塊所屬的類。
WRIGHT等[3]將稀疏表示應用于分類,并拓展了SRC算法。該算法將測試樣本表示為訓練樣本的稀疏組合,其系數通過稀疏分解獲得,SRC方法如下:
假設有訓練符號集{(xi,yi)|xi∈χ?Rm,yi∈{1,2,…,c},i=1,2,…,n},其中c是類別數目,m是輸入空間χ的維度,yi對應于xi,給定測試樣本x∈χ,目標是從給定的c-分類訓練樣本中預測出x的標簽y。將第j分類訓練樣本作為矩陣Aj=[xj,1,…,xj,nj]∈Rm×nj(j=1,2,…,c)的列,xj,i表示樣本屬于第j類。對所有訓練樣本定義一個樣本矩陣A,
A=[A1,A2,…,Ac]∈Rm×n,
(1)
y=Aa,
(2)
其中:a∈Rn是系數向量。如果測試樣本x屬于第j類,那么所有的a應該是零,即:
a=[0,…,0,aj,1,…,aj,nj,0,…,0]T,
(3)
其中:aj,i∈R是訓練樣本xj,i的相關系數,且系數向量a是稀疏的。在SRC算法中,把尋找系數向量的問題轉化為凸規劃問題。
(4)
其中:‖·‖1是l1-范數。式(4)也被稱為l1-最小化問題??紤]樣本包含噪聲的情況,模型可修正為
y=Aa+ξ,
(5)
其中:ξ∈Rm是噪聲向量,其帶寬能量是‖ξ‖2<ε?!ぁ?是l2-范數,可修正為
(6)
文獻[11]使用l1-Magic軟件包用于解決上述二次規劃l1最小化問題,可以通過測試樣本和其近似之間的重建誤差進行樣本分類。使用與第i個類相關聯的系數可獲得第i個近似值。
SRC算法的具體步驟為
(1)輸入: 訓練樣本矩陣A∈Rm×n,測試矩陣y∈Rm;
(2)將A的列規范化為l2-norm;
(3)求解式(4)和式(5)中的l2-minimization值;
(4)計算殘差rk(y)=‖y-Aδk(a)‖2(k=1,2,…,c);
SRC算法能夠很好實現人臉的正面識別,但是對于線性可分離任務(即不同類的數據具有相同的方向)SRC會失去其分類能力。主要原因是在同一方向上的數據在標準化過程后會互相重疊,以至于難以區別。為了解決這個問題,引入Volterra核的方法計算部分廣義特征值問題。
根據費舍爾線性不一致的概念,采用最大化類間距離和最小化類內距離定義一個映射矩陣方程。該距離可以通過散列矩陣計算得出,也就是度量數據的方差。令圖像集包括C個類,且每個類Xi有ni個樣本,類間散列矩陣(Sb)和類內散射矩陣(Sw)通過式(7)、式(8)計算得出。
(7)
(8)
Volterra核由截斷的Volterra級數展開形成。由于其具有記憶效應適用于非線性系統建模,已經被成功應用在不同的場景中[14]。本文采用的Volterra級數的離散形式如式(9)所示。
x(m-q1)…x(m-qn)。
(9)
式(9)是無限序列的格式,對于特定應用,只有開始的幾項需要給出近似方程。因此,需要Volterra級數的縮短形式,即:
(10)
其中:p表示最大階數。在截選的Volterra級數中,h(m)是占位符。
方程的數學表達式是
(11)
(12)
對稱矩陣Sw和Sb可構造為
(13)
在測試中,使用表決程序協調SRC以判定每個分塊所屬的類。選取的Volterra核大小是3×3,線性情況下使用的非重疊的圖像分塊大小為8×8。采用標準的人臉數據庫ORL和擴展數據庫YaleB。在每個數據庫中隨機選擇的一半的圖像作為訓練樣本,剩下的作為測試樣本,對于隨機選擇的10個訓練集每個實驗重復10次。
ORL數據庫包含40個人的400張面部圖像[15],圖像尺寸為112×92,像素灰度值為256,在這些圖像集中有姿態、光線變化以及面部表情。在實驗中,使用的裁剪圖像分辨率為32×32,圖1顯示了一個人的示例圖像,表1為在ORL上的平均識別錯誤率。
圖1 ORL數據庫中的某一個人的圖像樣本Fig. 1 A sample image of a person in the ORL database
對于隨機選擇的10個訓練樣本,實驗時將重復10次。首行為訓練集規模,表明使用的訓練圖像數量,訓練樣本數為2、4、6、7。從表1可以看到,本文提出的Volterra-SRC比SRC具有更優越的性能。
表1 在ORL數據庫中錯誤識別率對比表Tab. 1 Compares of false recognition rate in the ORL database
為了更進一步比較Volterra-SRC和SRC的特性,圖2給出了錯誤識別率的差值與樣本數量的關系。樣本數量為2時Volterra-SRC高于SRC算法近4%。隨著訓練樣本數量增加,Volterra-SRC的性能優勢不再明顯。這意味著本文算法在魯棒性和小訓練樣本數量方面有優勢。
圖2 ORL數據庫中不同訓練樣本測試的錯誤識別率差值Fig. 2 The error recognition rate of different trainingsample tests in ORL database
YaleB數據庫包含38個人的2414張正面人臉圖像[16]。圖像是在各種角度可控的實驗照明下獲取,每個樣本拍攝64組圖片。在實驗中,使用圖像分辨率為32×32的剪裁。圖3顯示了YaleB數據庫的示例圖片。
圖3 YaleB數據庫里一個典型的子集樣本Fig. 3 A typical subset sample in the YaleB database
表2給出了YaleB的平均識別錯誤率,訓練樣本數為4、8、16、32??梢钥闯?,本文提出的Volterra-SRC比SRC具有更優越的性能。
表2 在YaleB數據庫里錯誤識別率對比表Tab. 2 Compares of false recognition rate in the YaleB database
圖4表明在小訓練樣本數量情況下,Volterra-SRC算法的錯誤識別率高于SRC近3%。本文提出的Volterra核方法改善了SRC的分類性能。
圖4 YaleB數據庫中不同訓練樣本測試的錯誤識別率差值Fig. 4 The error recognition rate of different training sampletests in YaleB database
本文提出了Volterra核稀疏表示分類方法,該方法是一種非線性擴展的SRC方法。該方法將原始圖像在空間上分塊,并映射到一個高維特征空間,利用Volterra核可以產生更好的近似平滑的非線性函數。通過對包含不同的姿勢(ORL)和不同照明條件(YaleB)的人臉數據庫進行實驗,實驗結果驗證了Volterra核優化的SRC人臉識別算法在小訓練樣本數量上有一定的優勢和魯棒性,而且Volterra核優化的SRC人臉識別算法比標準SRC算法具有更好的分類性能。