王雨欣,張國華
(湖南工業大學理學院,湖南 株洲 412000)
人臉識別是基于人的臉部特征進行身份識別的生物技術之一[1],其應用十分廣泛。例如人臉識別應用在小區、公司、寫字樓等場所可以為人民生命和財產安全提供保障;在日常通勤中人臉識別幫助判定乘客購票情況;在刑事偵查方面可以通過人臉識別追蹤逃犯;人臉識別技術也使支付手段更加多樣化,在一些場所已經開通了人臉支付的功能。人臉識別一般流程如圖1所示。

圖1 人臉識別流程圖
矩陣分解的經典方法有奇異值分解、三角分解、QR 分解等,非負矩陣分解就是其中一種。非負矩陣是機械學習經典算法之一,把一個非負矩陣分解為兩個同樣非負的矩陣的乘積,分解后的兩個矩陣與原矩陣相比維數與計算機對信息的儲存都降低了。由于其分解前后矩陣都是非負的,可解釋性強且具有良好的現實意義,所以用途廣泛。
非負矩陣分解(Nonnegative Matrix Factorization)簡稱為NMF是由Lee和Seung在自然雜志上提出的[2]。顧名思義,對于一個各個元素都是非負的矩陣,可以分解為兩個同樣非負的矩陣乘積。例如,對于任意一個m × n 維的非負矩陣W,可以分解為非負的m × r 維的矩陣U 和r × n 維的矩陣V 的乘積,可表達為Wmn=UmrVrn,分解實例如圖2所示。

圖2 非負矩陣分解圖
圖2 中,U 稱為特征矩陣表示從原矩陣中提取出的特征,V 稱為系數矩陣描述原矩陣中的特征重要性,該分解的思想是局部構成整體。在投影角度上,V 的每一個列向量可看作W 的列向量在U 上投影所得坐標系數。矩陣分解時往往要求(m+n)r 在實際中,UV 相乘只能盡量逼近W,所以用Wmn≈UmrVrn來表示,為了刻畫UV與原矩陣之間的誤差,可應用以下兩個目標函數。 ①基于歐氏距離的目標函數: s.t.U,V ≥0,?m,n. ②基于KL散度的目標函數: s.t.U,V ≥0,?m,n. 需要注意KL 散度是描述兩個概率分布相似度的度量,其不是對稱的,所以DKL(W∣∣UV)與DKL(UV∣∣W)不同。 目標函數DE(W∣∣UV)與DKL(W∣∣UV)對于U,V 中的一個是凸函數,但對于U,V來說并不同時是凸函數。一般我們采用乘性迭代法來進行優化,于是對于式⑴有: 對于⑵式有: 一直迭代下去就會收斂(證明略),我們也可以根據具體實驗情況設計迭代次數。 由于矩陣U,V乘積是盡量逼近矩陣W,所以我們可以把矩陣分解看成含線性噪聲的線性混合體模型Wm×n=Um×rVr×n+Em×n,其中Em×n為噪聲矩陣[3]。 梯度下降得: ⑴通過拍攝工具對人臉圖像進行采集。 ⑵對采集的圖片進行預處理,目的是增強人臉圖像質量為之后特征提取打下基礎;常見的預處理方法有去噪、增強對比度、尺寸歸一化等。 ⑶通過檢測系統判斷圖片中人臉圖像是否存在以及存在的位置,并對人臉上如眼睛、鼻子、嘴巴等特征明確與定位。 ⑷特征提取階段。 數據庫中每張人臉圖片都可轉化為原始矩陣W中的列向量,其中W 是非負的,特征提取就是對其進行分解。特征矩陣U由人臉中眼睛、鼻子、嘴巴等特征構成,各個特征在人臉上的重要性用系數矩陣V表示。如圖3 中右上角的Original 圖片表示經過處理后原始人臉圖片,圖中左邊矩陣稱為特征矩陣,它由數據庫中所有人臉上的主要特征構成,這些特征處于不同位置有不同的形態;右邊矩陣為系數矩陣表示左邊矩陣中不同特征的重要性,這兩個矩陣都是非負的。左右兩邊矩陣相乘得到眼睛、鼻子、嘴巴等特征相加構成整張人臉,體現了非負矩陣分解原理中局部構成整體的思想。同時這兩個矩陣也是稀疏的,稀疏是指矩陣中大多數元素為零,體現了非負矩陣分解完之后比原來矩陣更加簡單,占用內存更少的特點。 圖3 非負矩陣分解實例圖 ⑸信息對比識別成功或失敗。 將提取出的特征與數據庫中已有的特征進行比對,在這之前一般會設定一個閾值,若提取出的特征與數據庫中某一張人臉特征之間差距小于設定的閾值則識別成功否則識別失敗。 接下來運用非負矩陣分解算法在計算機上進行實際操作。 數據庫說明:人臉數據庫Olivetti 中共有400 張圖片,每張大小為64 × 64,由40 個人每個人分別拍照10次得到,這些圖片中有些戴眼鏡有些不戴面部表情也不同,有些圖片是在不同的時間段采集的。采用人臉數據庫Olivetti中的六張人臉圖片進行實驗。 實驗環境:本次實驗在Windows 10 系統上進行,使用的編程軟件為Spyder(Python 3.7)。 我們的目的是利用非負矩陣分解算法對這6張圖片進行特征提取,將這六張圖片轉化為矩陣W中的列向量,通過分解得到特征矩陣U 與系數矩陣V。該算法主要步驟為①讀取圖像數據;②初始化特征矩陣與系數矩陣;③按照迭代公式對特征矩陣與系數矩陣進行迭代;④人臉重建。本次實驗中設置的特征提取個數為7。 原始的6張人臉圖片如圖4,部分代碼展示如圖5,運用非負矩陣分解算法得到的人臉圖像如圖6。 圖4 原始人臉圖片 圖5 部分代碼展示 圖6 非負矩陣分解算法提取的圖片特征 實驗結果顯示,運用非負矩陣分解算法得到的人臉圖像中五官及臉部輪廓等都很好地還原了出來。 在機械學習中還有其他可用來進行人臉識別的算法,如主成分分析算法、奇異值分解算法等,其中主成分分析算法在人臉識別中運用較為廣泛。主成分分析算法主要思想是用主要數據表達原始數據,關鍵是計算數據協方差矩陣,取該矩陣中較大的幾個特征值,由這幾個特征值對應特征向量構成子空間,將原始矩陣投影到子空間上得到維數降低后的矩陣。在人臉識別時需要計算由數據庫中人臉矩陣構成的子空間,待檢測人臉由該子空間表示,通過衡量待檢測人臉與數據庫中人臉在子空間上表達數據之間差距判定能否識別成功。使用主成分分析算法對這6 張圖片進行特征提取,運行結果如圖7所示。 圖7 主成分分析算法提取的圖片特征 主觀上運用非負矩陣分解算法提取出的人臉特征比主成分分析算法提取出的特征圖像更清晰一些。通過圖像重構誤差公式,其中Fij為原始圖像歸一化后灰度值,Gij為重構后圖像歸一化后灰度值,m × n 為圖像大小,運用非負矩陣分解算法重構誤差為0.0563 運用主成分分析算法重構誤差為0.0651,與主觀上觀察相符。原因可能是運用主成分分析算法進行人臉識別時,會使一些具有較強辨別性的細節特征數據丟失;還有一種原因是主成分分析算法在處理人臉時并沒有區分哪個特征對應哪個部位,而是把所有主要特征都體現了出來,造成提取出來的圖像較為模糊。而根據非負矩陣分解原理人臉上特征都有具體的數據表達,使得局部特征更加清晰,又矩陣分解前后非負性的限制使局部之間只能相加構成整張人臉,非負矩陣分解原理以及“加”的思想使其在人臉識別中展現出一定優異性。 經過研究與改進學者們將非負矩陣分解分為四類[4],即原始的非負矩陣分解(Basic NMF)、添加約束條件的非負矩陣分解(Constrained NMF)、結構化非負矩陣分解(Structured NMF)、廣義的非負矩陣分解(Generalized NMF)以及衍生出的圖正則化非負矩陣分解和局部非負矩陣分解。 人臉識別中遇到的一些問題可以通過改進非負矩陣分解算法來解決。例如為使矩陣分解后特征圖像表現效果更好,有學者提出了稀疏圖正則化非負矩陣分解[5];為解決樣本數據非線性可分問題學者們提出了核局部非負矩陣分解方法[6];使用L21范數作為矩陣之間度量,在保證行與列稀疏的同時還可以增強算法魯棒性;而把原始矩陣分解為噪聲矩陣與兩個非負矩陣乘積的和可以在一定程度上消除噪聲對數據的影響,結合上述優點得到的基于L21范數的權重稀疏圖非負矩陣分解方法[7]比基本的非負矩陣分解增強了魯棒性與應對噪聲的能力。 實際運用人臉識別時還存在許多問題,比如識別時人面部表情或臉部遮擋等會對識別產生干擾。在處理臉部遮擋問題時,一種基于局部自適應結構引導約束的非負矩陣分解方法(NMF_LASGC)不用有遮擋部位的先驗信息,可以運用在有監督與無監督情況[8]。也有學者將非負矩陣分解與卷積神經網絡(CNN)結合提出了一種深層非負矩陣分解網絡(Deep SANMF)并給出了其應用在有遮擋人臉識別中的框架[9]。在處理人面部表情對人臉識別產生影響時,有文獻結合分塊加權算法優勢提出了分塊加權算法與稀疏矩陣分解算法融合的人臉識別方法,并在人臉數據庫上得到了有效驗證[10]。 綜上,通過對非負矩陣分解算法改進可以提高其在人臉識別上精確率,也可以在一定程度上解決人臉識別在實際應用中產生的問題。 本文首先介紹了人臉識別背景與非負矩陣分解算法原理、迭代法則等內容,通過實驗并與其他算法比較驗證了其在人臉識別上的應用,分析了其在人臉識別上展現優異性的原因,最后闡述了改進的非負矩陣分解算法在人臉識別上的應用。 非負矩陣分解算法還有很多值得研究的地方,例如針對不同人臉數據庫如何選擇合適的特征個數,針對不同的應用場景如何選擇適當的非負矩陣分解類型等,另外,矩陣分解時初始值的選擇與分解后迭代算法的制定等也值得進一步探討。非負矩陣分解算法在生物醫學、語音處理、文本聚類與模式識別等領域也將會有更成功的應用。2 非負矩陣分解目標函數與迭代法則
3 概率模型與目標函數及乘性迭代間的關系
4 實驗操作
4.1 人臉識別流程

4.2 實驗操作



4.3 實驗對比

5 改進的非負矩陣分解在人臉識別中的應用
6 結束語