焦健雄,孫利雷,徐 勇
1(電子科技大學 信息與通信工程學院,成都 610054)
2(貴州大學 貴州省公共大數據重點實驗室,貴陽 550025)
3(貴州大學 計算機科學與技術學院,貴陽 550025)
4(哈爾濱工業大學 深圳研究生院,深圳 518055)
字典學習的目標,是學習一個過完備字典,從字典中選擇少數的字典原子,通過選擇的字典原子的線性組合來近似表示給定的原始信號.字典學習在圖像降噪、復原、分類、超分辨率圖像、圖像壓縮等圖像領域有非常好的應用效果[1,2].
字典學習的魯棒性非常重要[3],其不僅意味著學習獲得的字典和特征可以有效抵抗噪聲和奇異值,而且可以為模式分類任務帶來令人滿意的識別結果.利用適當的約束可以克服噪聲和奇異值,相關標簽和原子相關約束可以被用來達到這個目的[4].當字典學習算法或是其他算法應用于圖像數據時,首先需要將每個圖像轉換為矢量表示形式[5],而轉換方式則有多種,例如將圖像矩陣的第一行到最后一行按照順序連接為一個矢量,或者將圖像矩陣的第一列到最后一列按照順序連接為一個矢量.
字典學習的研究者大多數把精力用于尋找良好的分類算法和表示算法.然而,在固定算法條件下,尋找如何最好利用原始數據以達到最佳性能的方法很少被研究者注意.對于圖像數據,原始圖像的多重表示可以提供圖像樣本的不同觀察視角,從而提高了數據的多樣性[6],當相同字典學習算法應用于它們時,由于多重表示的互補性,很有可能獲得更好的性能.多矢量表示和多視圖[7]部分相似,但多矢量表示直接從原始圖像生成,消耗的計算成本很小.
在人臉數據庫中,原始樣本的潛在樣本對于計算機視覺和分類任務很有用,因為它們和真實面部圖像非常像.比較典型的潛在樣本包括虛擬面部樣本和合成面部樣本[8],例如,對稱人臉圖像獲得真實人臉的對稱結構[9],也可以通過復雜算法生成虛擬或合成面部樣本[10].潛在的多個樣本和多矢量表示都可以提供更多外觀表示,而它們的不同點在于,潛在的多個樣本意味著從原始樣本中生成了新的替代樣本,多矢量表示只是原始樣本的不同排列結果.
2019年,徐勇將相同的字典學習算法應用于原始圖像的多矢量表示,并在此基礎上設計了一種魯棒的字典學習方法[6].
通過對以上文獻可以發現,雖然現有方法在人臉數據集上已經獲得了較好的性能,但仍然存在沒有充分利用原始圖像信息的問題.為了解決這一問題,我們采用組合更多種原始圖像的矢量表示應用到字典學習算法中,這種方法能夠充分挖掘和利用表示多樣性,提高字典學習算法的精度和魯棒性.我們在本文分析不同組合矢量表示對字典學習算法性能的影響.在第2 節中闡述研究方法.在第3 節中展示研究方法的合理性.第4 節描述實驗結果.第5 節提出一個簡要的結論.
為了更加充分提取原始圖像的判別特征,我們通過不同掃描方式提取原始圖像的矢量表示,讓機器能夠從不同觀察角度提取原始圖像判別特征,配合合理的加權對數和方案,對分類準確率和魯棒性進行改進.
本文研究方法的主要步驟如下:
步驟1.由原始圖像直接生成N種矢量表示,每種矢量表示都是使用特定的轉換方案生成.例如,將原始圖像逐像素轉換為矢量表示就是一種矢量表示可行方案[11,12].在下一節中,設置4 類基礎矢量表示,每類基礎矢量表示有4 種矢量表示,N=16.
步驟2.將相同的字典學習算法應用于原始圖像的每種矢量表示.因為原始圖像有N種矢量表示,我們有N種訓練樣本和測試樣本,從而由相同字典學習算法生成N種訓練樣本和測試樣本的特征.
步驟3.對這N種訓練樣本和測試樣本的特征使用相同的分類算法,并且針對每種特征,獲得所有測試樣本相對不同類別的分類分數.
步驟4.對于測試樣本,采用求和融合方案來添加該測試樣本相對同一類別的分類分數.求和融合結果被稱為該類別的測試樣本的最終分數.求和融合方案以4 類基礎矢量表示為基礎并選擇組合,獲得15 種矢量表示組合方案,得到15 種分類分數.
研究方法的流程圖如圖1所示.

圖1 研究方法的流程圖
我們將在本小節介紹設計方法的詳細信息.對于第r種樣本,我們用表示矢量形式的第i個訓練樣本,用pr表示矢量形式的測試樣本.和pr是由原始圖像生成,使用字典學習算法獲得的和pr的特征分別是和qr,對應的字典用Dr表示.
本文設計的矢量表示共有4 類基礎矢量表示形式,每類基礎矢量表示形式有4 種矢量表示產生方式,共16 種矢量表示產生方式.

圖2 原始圖像示意圖
第1 類基礎矢量表示形式:行/列順序排列表示.
1)行順序順排列:row1→row2→···→rowm?1→rowm.
2)列順序順排列:col1→col2→···→coln?1→coln.
3)行順序倒排列:rowm→rowm?1→···→row2→row1.
4)列順序倒排列:coln→coln?1→···→col2→col1.
第2 類基礎矢量表示形式:行/列倒序排列表示.
1)行倒序順排列:Rrow1→Rrow2→···→Rrowm?1→Rrowm.
2)列倒序順排列:Rcol1→Rcol2→···→Rcoln?1→Rcoln.
3)行倒序倒排列:Rrowm→Rrowm?1→···→Rrow2→Rrow1.
4)列倒序倒排列:Rcoln→Rcoln?1→···→Rcol2→Rcol1.
第3 類基礎矢量表示形式:順序行/列之字形排列表示.
1)順序行之字形順排列:row1→Rrow2→···→rowm?1→Rrowm.
2)順序列之字形順排列:col1→Rcol2→···→coln?1→Rcoln.
3)順序行之字形倒排列:rowm→Rrowm?1→···→row2→Rrow1.
4)順序列之字形倒排列:coln→Rcoln?1→···→col2→Rcol1.
第4 類基礎矢量表示形式:倒序行/列之字形排列表示.
1)倒序行之字形順排列:Rrow1→row2→···→Rrowm?1→rowm.
2)倒序列之字形順排列:Rcol1→col2→···→Rcoln?1→coln.
3)倒序行之字形倒排列:Rrowm→rowm?1→···→Rrow2→row1.
4)倒序列之字形倒排列:Rcoln→coln?1→···→Rcol2→col1.
在步驟3)中,通過以下方式使用分類算法獲得分數.訓練樣本的標簽矩陣用L表示,L的第j行行向量Lj表示第j個訓練樣本的類別標簽.如果第j個訓練樣本屬于第j類,則Lj的第k個條目為1,所有其他條目為零.對于一種樣本,所有樣本的特征形成矩陣X.假設矩陣W可以將X近似轉換為L,則XW=L.我們要求W具有最小范數,因此我們有的解,其中 γ是一個小的正常數.對于測試樣本,使用lr=qrW計算其所需標簽,然后我們用表示測試樣本相對于第g類的得分.labelg是第g類的類標簽,使用one-hot 編碼形式.
在步驟4 中,求和融合方案的公式為:

求和融合方案以4 類基礎矢量表示作為基礎并對其進行選擇組合,獲得15 種矢量表示組合方案,得到15 種分類分數.
每一類矢量表示作為基礎表示,用A1、A2、A3、A4 表示,將4 類基礎表示進行組合,具體矢量表示組合方案為:
僅基礎表示:A1,A2,A3,A4;
選取兩種基礎表示組合:
B1(A1+A2),B2(A1+A3),B3(A1+A4),
B4(A2+A3),B5(A2+A4),B6(A3+A4);
B5(A2+A4),B6(A3+A4);
選取3 種基礎表示組合:
C1(A1+A2+A3),C2(A1+A2+A4),
C3(A1+A3+A4),C2(A2+A3+A4);
選取4 種基礎表示組合:
D1(A1+A2+A3+A4).
本文充分利用原始圖像數據的表示多樣性,為同一對象提供了更多的外觀,原始圖像更多的矢量表示意味著獲得對同一對象更全面的觀察,更充分地利用了原始圖像的信息.不同的矢量表示組合則意味著從同一對象的不同外觀組合中進行字典學習,可以通過觀察不同矢量表示組合下的性能,進而選擇更好的矢量表示組合.
由于字典學習算法中的矩陣分解也進一步增加了原始圖像多矢量表示的差異.具體來說,字典學習算法將原始樣本矩陣P分解為字典矩陣D和特征矩陣X,不同D的差異和不同X的差異通常比不同P的差異大.基于字典的特征表示:

從式(2)可以直觀看出來在矩陣分解之后,范數具有更大的范圍,從而數據具有更大的差異.更多矢量表示組合意味著更多的訓練樣本以及更高的分類精確度.
采用的求和融合方案也是合理的.有兩個方面原因:
1)將第二小的得分減去最小的得分作為權值是合理的,如果第二小的得分比最小的得分大很多,則分類決策具有很高的置信度[13].
2)本文中的得分表示相異程度,采用最小的得分確定測試樣本的分類標簽,得分越小意味著屬于相應類別的可能性越高.并且求和融合公式采用得分的對數,不僅可以保持得分的數字順序,而且擴大了得分的差異.
所以本文采用的求和融合方案可以保持小得分的主導作用,有利于正確分類.
本文采用多種原始圖像不同的矢量表示意味著在實際中從不同觀測角度觀察對象.例如,行倒序順排序是在鏡子里觀察觀測對象;列倒序順排序是從旋轉180°的角度觀察觀測對象;之字形矢量表示則考慮人臉對稱性,在不同時間左臉和右臉的信息會有細微變化,之字形矢量表示可以觀察不同時間觀測對象的面部信息.采用更多不同原始圖像的矢量表示意味著擁有更大的觀測對象數據集,也就意味著字典學習算法將獲得更高的識別準確度.而隨著數據集的擴大,訓練時間也將變長,且與數據集大小成正比.
本文在K-SVD[14]、D-KSVD[15]、LC-KSVD[16]算法上實現不同矢量表示組合,并比較不同矢量表示組合下相同字典學習算法的性能,實驗中采用擴展Yale B人臉數據庫[17],AR 人臉數據庫[18]和COIL 20 數據庫[19],每種算法執行10 次,并記錄平均分類精確度.
擴展Yale B 人臉數據庫包含38 個人的2,414 張正面圖像,這些圖像是在各種光照條件和表情下拍攝的.每個人有59 到64 張圖像,每張圖像被轉換為32×32 像素的大小.來自該數據庫的一些面部圖像在圖3中示出.隨機選擇每個人的10 張圖像作為訓練樣本,其余圖像用于測試.對于K-SVD、D-KSVD、LC-KSVD算法,字典原子數從38 變為380,間隔為38.不同矢量表示組合在擴展Yale B 人臉數據庫上K-SVD、LC-KSVD、D-KSVD 算法識別準確度分別如圖4、圖5和圖6所示.其中,a1 表示行順序順排列矢量表示.

圖3 擴展Yale B 人臉數據庫的部分示例圖像

圖4 不同矢量表示組合在擴展Yale B 人臉數據庫上K-SVD 算法識別準確度

圖5 不同矢量表示組合在擴展Yale B 人臉數據庫上LC-KSVD 算法識別準確度

圖6 不同矢量表示組合在擴展Yale B 人臉數據庫上D-KSVD 算法識別準確度
AR 人臉數據庫包含126 個人超4000 張圖像,這些圖片分兩次拍攝而得.采集環境中的攝像機參數、光照環境、攝像機距離等都是嚴格控制的.本文采用AR 人臉數據庫的子集進行實驗[11],包含120 人的3120張圖像.每張AR 人臉圖像的尺寸為40×50 像素.來自該數據庫的一些面部圖像在圖7中示出.隨機選擇每個人的10 張圖像作為訓練樣本,其余圖像用于測試.對于K-SVD、D-KSVD、LC-KSVD 算法,字典原子數從120 變為1200,間隔為120.不同矢量表示組合在AR 人臉數據庫上K-SVD、LC-KSVD、D-KSVD 算法識別準確度分別如圖8、圖9和圖10所示.

圖7 AR 人臉數據庫的部分示例圖像

圖8 不同矢量表示組合在AR 人臉數據庫上K-SVD 算法識別準確度

圖9 不同矢量表示組合在AR 人臉數據庫上LC-KSVD 算法識別準確度
COIL20 數據庫包含不同光照條件下20 個物體的不同視角,每張圖片尺寸為32×32 像素.來自該數據庫的一些面部圖像在圖11中示出.隨機選擇每個人的10 張圖像作為訓練樣本,其余圖像用于測試.對于K-SVD、D-KSVD、LC-KSVD 算法,字典原子數從40 變為200,間隔為20.不同矢量表示組合在COIL20 數據庫上KSVD、LC-KSVD、D-KSVD 算法識別準確度分別如圖12、圖13和圖14所示.

圖10 不同矢量表示組合在AR 人臉數據庫上D-KSVD 算法識別準確度

圖11 COIL20 數據庫的部分示例圖像

圖12 不同矢量表示組合在COIL20 數據庫上K-SVD 算法識別準確度

圖13 不同矢量表示組合在COIL20 數據庫上LC-KSVD 算法識別準確度

圖14 不同矢量表示組合在COIL20 數據庫上D-KSVD 算法識別準確度
本文提出一種基于矢量表示組合的字典學習方法,該方法通過充分利用人臉圖像的多矢量表示提升分類模型的準確率和魯棒性.通過在多個人臉數據集進行實驗對比可以得出:相同數量的基礎表示組合的得分融合數據相差很小,在各識別準確度的圖中呈曲線簇;組合中的矢量表示種類越多樣,字典學習算法的識別精確度越好,具有更好的魯棒性.本文通過組合更多的原始圖像矢量表示,充分挖掘和利用表示多樣性,提高字典學習算法的分類精度.