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

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

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

4.2 實驗操作



4.3 實驗對比

5 改進的非負(fù)矩陣分解在人臉識別中的應(yīng)用
6 結(jié)束語