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