本文主要記錄本身在學習稀疏表示在人臉識別中的應用所遇到的問題做一簡單的總結。算法
信號的稀疏表示並非新的東西。咱們很早就一直在利用這一特性。例如,最簡單的JPEG圖像壓縮算法。原始的圖像信號通過DCT變換以後,只有極少數元素是非零的,而大部分元素都等於零或者說接近於零。這就是信號的稀疏性。數據庫
任何模型都有建模的假設條件。壓縮感知,正是利用的信號的稀疏性這個假設。對於咱們處理的信號,時域上自己就具備稀疏性的信號是不多的。可是,咱們總能找到某種變換,使得在某個變換域以後信號具備稀疏性。這種變換是不少的,最多見的就是DCT變換,小波變換,gabor變換等。框架
然而,這種正交變換是傳統視頻圖像處理採用的方法。目前所採用的通常不是正交變換。它是基於樣本採樣的。或者說是經過大量圖像數據學習獲得的,其結果稱做字典,字典中的每個元素稱做原子。相關的學習算法稱做字典學習。常見的算法例如K-SVD算法。學習的目標函數是找到全部樣本在這些原子的線性組合表示下是稀疏的,即同時估計字典和稀疏表示的係數這兩個目標。機器學習
壓縮感知和稀疏表示實際上是有些不一樣的。壓縮感知的字典是固定的,在壓縮感知的術語裏面其字典叫作測量矩陣。但壓縮感知的恢復算法和稀疏表示是同一個問題。他們均可以歸結爲帶約束條件的L1範數最小化問題。求解這類泛函的優化有不少種方法。早在80年代,統計學中Lasso問題,其實和稀疏分解的優化目標泛函是等價的。而求解統計學中lasso 問題的LARS算法很早就被提出了,故咱們還能夠經過統計學的LARS算法求解稀疏表示問題。目前不少統計學軟件包都自帶LARS算法的求解器。函數
人臉的稀疏表示是基於光照模型。即一張人臉圖像,能夠用數據庫中同一我的全部的人臉圖像的線性組合表示。而對於數據庫中其它人的臉,其線性組合的係數理論上爲零。因爲數據庫中通常有不少個不一樣的人臉的多張圖像,若是把數據庫中全部的圖像的線性組合來表示這張給定的測試人臉,其係數向量是稀疏的。由於除了這張和同一我的的人臉的圖像組合係數不爲零外,其它的係數都爲零。性能
上述模型導出了基於稀疏表示的另一個很強的假設條件:全部的人臉圖像必須是事先嚴格對齊的。不然,稀疏性很難知足。換言之,對於表情變化,姿態角度變化的人臉都不知足稀疏性這個假設。因此,經典的稀疏臉方法很難用於真實的應用場景。學習
稀疏臉很強的地方在於對噪聲至關魯棒,相關文獻代表,即便人臉圖像被80%的隨機噪聲干擾,仍然可以獲得很高的識別率。稀疏臉另一個很強的地方在於對於部分遮擋的狀況,例如戴圍巾,戴眼鏡等,仍然可以保持較高的識別性能。上述兩點,是其它任何傳統的人臉識別方法所不具備的。測試
一談到識別問題,你們都會想到要用機器學習的方法。先進行訓練,把訓練的結果以模板的形式存儲到數據庫上;真實應用環境的時候,把測試樣本通過特徵提取以後,和數據庫中的模板進行比對,查詢獲得一個最類似的類別做爲識別結果。每每,機器訓練的時間都超級長,幾天,幾個禮拜乃至幾個月,那是常見的事情;識別的時間通常是很小的。典型的例如人臉檢測問題。這是能夠接受的,由於訓練通常都是離線的。優化
然而,基於稀疏分解的人臉識別是不須要訓練的,或者說訓練及其簡單。基於稀疏表示的人臉識別,其稀疏表示用的字典直接由訓練所用的所有圖像構成,而不須要通過字典學習【也有一些改進算法,針對字典進行學習的】。固然,通常是通過簡單的特徵提取。因爲稀疏表示的方法對使用什麼特徵並不敏感。故而,其訓練過程只須要把原始圖像數據通過簡單的處理以後排列成一個很大的三維矩陣存儲到數據庫裏面就能夠了。編碼
關鍵的問題在於,當實際環境中來了一張人臉圖像以後,去求解這張人臉圖像在數據庫全部圖像上的稀疏表示,這個求解算法,通常比較耗時。儘管有不少的方法被提出,可是對於實時應用問題,依然無法知足。因此,問題的關鍵仍是歸結於L1範數最小化問題上來。
L1範數最小化問題已經有不少種快速求解方法,這裏主要包括有梯度投影Gradient Projection,同倫算法,迭代閾值收縮,領域梯度Proximal Gradient,增廣拉格朗日方法,這幾種方法都比正交匹配追蹤算法OMP要高效的多。上述幾種快速算法中,採用增廣拉格朗日的對偶實現相比其它的快速算法要更好。最近流行的Spit Bregman算法也是不錯的選擇。
CVPR2011 Meng Yang,Robost Sparse Coding for Face Recognition. 魯棒的稀疏編碼算法。該文做者沒有直接求解稀疏編碼問題,而是求解Lasso問題,由於Lasso問題的解和稀疏編碼的解是等價的。在傳統的SRC框架下,編碼偏差使用L2範數來度量的,這也就意味着編碼偏差知足高斯分佈,然而,當人臉圖像出現遮擋和噪聲污染的狀況下,並不是如此。在字典學習框架下,這樣的字典是有噪聲的。該文做者對原始Lasso問題進行改進,求解加權L1範數約束的線性迴歸問題。Lasso問題描述以下:
加權Lasso問題的目標函數描述以下:
此算法的關鍵還在於權重係數的肯定,文中採用的是logistic函數,而具體的實現則是經過迭代估計學習獲得。該方法基於這樣一個事實:被遮擋或噪聲干擾的像素點賦予較小的權重,而其它像素點的權重相對較大。具體迭代算法採用經典的迭代重加權算法框架,固然內部嵌入的稀疏編碼的求解過程。此算法在50%遮擋面積的狀況下取得的更好更滿意的結果。可是文中沒有比較計算時間上的優略而直說和SRC框架差很少。