基於稀疏表示的人臉識別

2021-06-15 07:58:55 字數 3675 閱讀 6430

訊號的稀疏表示並不是新的東西。我們很早就一直在利用這一特性。例如,最簡單的jpeg影象壓縮演算法。原始的影象訊號經過dct變換之後,只有極少數元素是非零的,而大部分元素都等於零或者說接近於零。這就是訊號的稀疏性。

任何模型都有建模的假設條件。壓縮感知,正是利用的訊號的稀疏性這個假設。對於我們處理的訊號,時域上本身就具有稀疏性的訊號是很少的。但是,我們總能找到某種變換,使得在某個變換域之後訊號具有稀疏性。這種變換是很多的,最常見的就是dct變換,小波變換,gabor變換等。

壓縮感知和稀疏表示其實是有些不同的。壓縮感知的字典是固定的,在壓縮感知的術語裡面其字典叫做測量矩陣。但壓縮感知的恢復演算法和稀疏表示是同乙個問題。他們都可以歸結為帶約束條件的l1範數最小化問題。求解這類泛函的優化有很多種方法。早在80年代,統計學中lasso問題,其實和稀疏分解的優化目標泛函是等價的。而求解統計學中lasso 問題的lars演算法很早就被提出了,故我們還可以通過統計學的lars演算法求解稀疏表示問題。目前很多統計學軟體包都自帶lars演算法的求解器。

人臉的稀疏表示是基於光照模型。即一張人臉影象,可以用資料庫中同乙個人所有的人臉影象的線性組合表示。而對於資料庫中其它人的臉,其線性組合的係數理論上為零。由於資料庫中一般有很多個不同的人臉的多張影象,如果把資料庫中所有的影象的線性組合來表示這張給定的測試人臉,其係數向量是稀疏的。因為除了這張和同乙個人的人臉的影象組合係數不為零外,其它的係數都為零。

上述模型匯出了基於稀疏表示的另外乙個很強的假設條件:所有的人臉影象必須是事先嚴格對齊的。否則,稀疏性很難滿足。換言之,對於表情變化,姿態角度變化的人臉都不滿足稀疏性這個假設。所以,經典的稀疏臉方法很難用於真實的應用場景。

稀疏臉很強的地方在於對雜訊相當魯棒,相關文獻表明,即使人臉影象被80%的隨機雜訊干擾,仍然能夠得到很高的識別率。稀疏臉另外乙個很強的地方在於對於部分遮擋的情況,例如戴圍巾,戴眼鏡等,仍然能夠保持較高的識別效能。上述兩點,是其它任何傳統的人臉識別方法所不具有的。

一談到識別問題,大家都會想到要用機器學習的方法。先進行訓練,把訓練的結果以模板的形式儲存到資料庫上;真實應用環境的時候,把測試樣本經過特徵提取之後,和資料庫中的模板進行比對,查詢得到乙個最相似的類別作為識別結果。往往,機器訓練的時間都超級長,幾天,幾個禮拜乃至幾個月,那是常見的事情;識別的時間一般是很小的。典型的例如人臉檢測問題。這是可以接受的,因為訓練一般都是離線的。

然而,基於稀疏分解的人臉識別是不需要訓練的,或者說訓練及其簡單。基於稀疏表示的人臉識別,其稀疏表示用的字典直接由訓練所用的全部影象構成,而不需要經過字典學習【也有一些改進演算法,針對字典進行學習的】。當然,一般是經過簡單的特徵提取。由於稀疏表示的方法對使用什麼特徵並不敏感。故而,其訓練過程只需要把原始影象資料經過簡單的處理之後排列成乙個很大的三維矩陣儲存到資料庫裡面就可以了。

關鍵的問題在於,當實際環境中來了一張人臉影象之後,去求解這張人臉影象在資料庫所有影象上的稀疏表示,這個求解演算法,一般比較耗時。儘管有很多的方法被提出,但是對於實時應用問題,依然沒法滿足。所以,問題的關鍵還是歸結於l1範數最小化問題上來。

l1範數最小化問題已經有很多種快速求解方法,這裡主要包括有梯度投影gradient projection,同倫演算法,迭代閾值收縮,領域梯度proximal gradient,增廣拉格朗日方法,這幾種方法都比正交匹配追蹤演算法omp要高效的多。上述幾種快速演算法中,採用增廣拉格朗日的對偶實現相比其它的快速演算法要更好。最近流行的spit bregman演算法也是不錯的選擇。

稀疏人臉識別演算法要用於實際的系統,需要在兩方面加以改進。首先,要突破人臉影象的對齊這一很強的假設。實際環境中的人臉往往是不對齊的,如何處理不對其的人臉是額待解決的問題。其實,是快速高效的優化演算法。最後,也是最重要,實際環境中的應用往往訓練樣本很少。目前,研究人員已經取得了很多可喜的成果,下面分別予以介紹。

cvpr2011 leizhang  sparse representatiion or callaborative representation: which helps face recognition? 稀疏表示和協同表示,哪乙個有助於人臉識別。該文作 者提出了用l2範數代替l1範數求解原問題。這樣,能夠非常快速的求解問題,實時性沒有任何問題。但稀疏性不像原來的l1範數那樣強。但作者對分類準則進行了改進,使得其分類效能幾乎接近於原始l1範數最小化問題分類效能。為了對比,我把關鍵性演算法列表如下:

src演算法求解的是方程1的解,而crc-rls演算法則直接給出了表示係數的最小二乘解。二者另外乙個主要的不同點在於計算殘差的方式不一樣,具體請注意上述方程2和方程10的不同點。後者的計算時間較前者最多情況下加速了1600倍。更多的實現細節可以參考原文。

cvpr2011 meng yang,robost  sparse coding for face recognition.魯棒的稀疏編碼演算法。該文作者沒有直接求解稀疏編碼問題,而是求解lasso問題,因為lasso問題的解和稀疏編碼的解是等價的。在傳統的src框架下,編碼誤差使用l2範數來度量的,這也就意味著編碼誤差滿足高斯分布,然而,當人臉影象出現遮擋和雜訊汙染的情況下,並非如此。在字典學習框架下,這樣的字典是有雜訊的。該文作者對原始lasso問題進行改進,求解加權l1範數約束的線性回歸問題。lasso問題描述如下:

加權lasso問題的目標函式描述如下:

此演算法的關鍵還在於權重係數的確定,文中採用的是logistic函式,而具體的實現則是通過迭代估計學習得到。該方法基於這樣乙個事實:被遮擋或雜訊干擾的畫素點賦予較小的權重,而其它畫素點的權重相對較大。具體迭代演算法採用經典的迭代重加權演算法框架,當然內部嵌入的稀疏編碼的求解過程。此演算法在50%遮擋面積的情況下取得的更好更滿意的結果。但是文中沒有比較計算時間上的優略而直說和src框架差不多。

cvpr2010. yigang peng.  robust batch alignment of images by sparse and low-rank decomposition. 這篇文章的作者在這篇文章中討論的是用矩陣的低秩分解和稀疏表示來對齊人臉的問題。

pami2011 wagner. towards a practical face recognition system:robust alignment and illumination by sparse representation.該文的目的和rasl類似。

eccv2012,meng yang. efficient misalignment-robust representation for real time face recognition.這篇文章又是meng yang的大作。這篇文章在充分分析rasr演算法的基礎上提出了乙個高效的快速演算法。該文對人臉對齊中求解變換矩陣t分為由粗到細的兩個階段。 這篇文章把稀疏臉應用在實際系統中推進了一大步。具體演算法實現本人正在拜讀之中。

對稀疏臉的改進演算法其實很多,例如分塊src演算法,表情魯棒src等。但本人認為能夠把它推向實際應用的卻很少。上述文獻是本人認為可圈可點的值得仔細拜讀的文獻。

SR(稀疏表示)人臉識別

寫在最前面的,我寫的這思路大概率不對。稀疏表示的實現例子 大概率不對 1 利用pca 得到的特徵向量做字典 2 取訓練集乘以該特徵向量,得到在字典空間下的係數 3 測試集乘以該特徵向量,此結果與2做內積,內積最大值的位置所屬的類別即為 該測試的分類。pca得到特徵向量u的方法請看上篇 做字典學習 u...

SRC稀疏表示人臉識別

假設 所有人的臉部影象都有某些共性 優點 訓練簡單 可以識別有遮擋的人臉 演算法 主要思路 公司一共有3個人 資料庫中有大東,大西,大北三個人的影象各一張 長w,寬h 將三張排成三列 今天大東來上班了,他來到門 們用立刻攝像頭拍攝他的一張 y 因為所有人的 都有共性,我們希望用資料庫中的人臉來表示y...

基於opencv的人臉識別

1前言參考的是 這篇用的是dlib的對齊還加了mask。本文方法 人臉檢測 shiqiyu libfacedetection opencv提取ptr類 2 facedetect.h include include include include include facedetect dll.h us...