基於稀疏表示的人臉識別

本文主要記錄本身在學習稀疏表示在人臉識別中的應用所遇到的問題做一簡單的總結。算法


1.  問題背景


        信號的稀疏表示並非新的東西。咱們很早就一直在利用這一特性。例如,最簡單的JPEG圖像壓縮算法。原始的圖像信號通過DCT變換以後,只有極少數元素是非零的,而大部分元素都等於零或者說接近於零。這就是信號的稀疏性。數據庫

        任何模型都有建模的假設條件。壓縮感知,正是利用的信號的稀疏性這個假設。對於咱們處理的信號,時域上自己就具備稀疏性的信號是不多的。可是,咱們總能找到某種變換,使得在某個變換域以後信號具備稀疏性。這種變換是不少的,最多見的就是DCT變換,小波變換,gabor變換等。框架

        然而,這種正交變換是傳統視頻圖像處理採用的方法。目前所採用的通常不是正交變換。它是基於樣本採樣的。或者說是經過大量圖像數據學習獲得的,其結果稱做字典,字典中的每個元素稱做原子。相關的學習算法稱做字典學習。常見的算法例如K-SVD算法。學習的目標函數是找到全部樣本在這些原子的線性組合表示下是稀疏的,即同時估計字典和稀疏表示的係數這兩個目標。機器學習


       壓縮感知和稀疏表示實際上是有些不一樣的。壓縮感知的字典是固定的,在壓縮感知的術語裏面其字典叫作測量矩陣。但壓縮感知的恢復算法和稀疏表示是同一個問題。他們均可以歸結爲帶約束條件的L1範數最小化問題。求解這類泛函的優化有不少種方法。早在80年代,統計學中Lasso問題,其實和稀疏分解的優化目標泛函是等價的。而求解統計學中lasso 問題的LARS算法很早就被提出了,故咱們還能夠經過統計學的LARS算法求解稀疏表示問題。目前不少統計學軟件包都自帶LARS算法的求解器。函數


2. 基於稀疏表示的分類 SRC


      人臉的稀疏表示是基於光照模型。即一張人臉圖像,能夠用數據庫中同一我的全部的人臉圖像的線性組合表示。而對於數據庫中其它人的臉,其線性組合的係數理論上爲零。因爲數據庫中通常有不少個不一樣的人臉的多張圖像,若是把數據庫中全部的圖像的線性組合來表示這張給定的測試人臉,其係數向量是稀疏的。由於除了這張和同一我的的人臉的圖像組合係數不爲零外,其它的係數都爲零。性能

       上述模型導出了基於稀疏表示的另一個很強的假設條件:全部的人臉圖像必須是事先嚴格對齊的。不然,稀疏性很難知足。換言之,對於表情變化,姿態角度變化的人臉都不知足稀疏性這個假設。因此,經典的稀疏臉方法很難用於真實的應用場景。學習

       稀疏臉很強的地方在於對噪聲至關魯棒,相關文獻代表,即便人臉圖像被80%的隨機噪聲干擾,仍然可以獲得很高的識別率。稀疏臉另一個很強的地方在於對於部分遮擋的狀況,例如戴圍巾,戴眼鏡等,仍然可以保持較高的識別性能。上述兩點,是其它任何傳統的人臉識別方法所不具備的。測試


3. 稀疏人臉識別的實現問題


        一談到識別問題,你們都會想到要用機器學習的方法。先進行訓練,把訓練的結果以模板的形式存儲到數據庫上;真實應用環境的時候,把測試樣本通過特徵提取以後,和數據庫中的模板進行比對,查詢獲得一個最類似的類別做爲識別結果。每每,機器訓練的時間都超級長,幾天,幾個禮拜乃至幾個月,那是常見的事情;識別的時間通常是很小的。典型的例如人臉檢測問題。這是能夠接受的,由於訓練通常都是離線的。優化


        然而,基於稀疏分解的人臉識別是不須要訓練的,或者說訓練及其簡單。基於稀疏表示的人臉識別,其稀疏表示用的字典直接由訓練所用的所有圖像構成,而不須要通過字典學習【也有一些改進算法,針對字典進行學習的】。固然,通常是通過簡單的特徵提取。因爲稀疏表示的方法對使用什麼特徵並不敏感。故而,其訓練過程只須要把原始圖像數據通過簡單的處理以後排列成一個很大的三維矩陣存儲到數據庫裏面就能夠了。編碼


        關鍵的問題在於,當實際環境中來了一張人臉圖像以後,去求解這張人臉圖像在數據庫全部圖像上的稀疏表示,這個求解算法,通常比較耗時。儘管有不少的方法被提出,可是對於實時應用問題,依然無法知足。因此,問題的關鍵仍是歸結於L1範數最小化問題上來。


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

      

4. 稀疏表示人臉識別的改進算法


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

4.1 CRC-RLS算法 

          CVPR2011 LeiZhang  Sparse Representatiion or Callaborative Representation: Which helps Face Recognition? 稀疏表示和協同表示,哪個有助於人臉識別。該文做 者提出了用L2範數代替L1範數求解原問題。這樣,可以很是快速的求解問題,實時性沒有任何問題。但稀疏性不像原來的L1範數那樣強。但做者對分類準則進行了改進,使得其分類性能幾乎接近於原始L1範數最小化問題分類性能。爲了對比,我把關鍵性算法列表以下:

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

       

   4.2  RSC算法 

              CVPR2011 Meng Yang,Robost  Sparse Coding for Face Recognition. 魯棒的稀疏編碼算法。該文做者沒有直接求解稀疏編碼問題,而是求解Lasso問題,由於Lasso問題的解和稀疏編碼的解是等價的。在傳統的SRC框架下,編碼偏差使用L2範數來度量的,這也就意味着編碼偏差知足高斯分佈,然而,當人臉圖像出現遮擋和噪聲污染的狀況下,並不是如此。在字典學習框架下,這樣的字典是有噪聲的。該文做者對原始Lasso問題進行改進,求解加權L1範數約束的線性迴歸問題。Lasso問題描述以下:


                                                      


               加權Lasso問題的目標函數描述以下:

                                                             

            此算法的關鍵還在於權重係數的肯定,文中採用的是logistic函數,而具體的實現則是經過迭代估計學習獲得。該方法基於這樣一個事實:被遮擋或噪聲干擾的像素點賦予較小的權重,而其它像素點的權重相對較大。具體迭代算法採用經典的迭代重加權算法框架,固然內部嵌入的稀疏編碼的求解過程。此算法在50%遮擋面積的狀況下取得的更好更滿意的結果。可是文中沒有比較計算時間上的優略而直說和SRC框架差很少。


4.3  RASL算法

        CVPR2010. Yigang Peng.  Robust batch Alignment of Images by Sparse and Low-Rank Decomposition. 這篇文章的做者在這篇文章中討論的是用矩陣的低秩分解和稀疏表示來對齊人臉的問題。

4.4  RASR算法

       PAMI2011 Wagner. Towards a Practical Face Recognition System:Robust Alignment and Illumination by Sparse Representation.該文的目的和RASL相似。

4.5  MRR算法

          ECCV2012,Meng Yang. Efficient Misalignment-Robust Representation for Real Time Face Recognition.這篇文章又是Meng Yang的大做。這篇文章在充分分析RASR算法的基礎上提出了一個高效的快速算法。該文對人臉對齊中求解變換矩陣T分爲由粗到細的兩個階段。 這篇文章把稀疏臉應用在實際系統中推動了一大步。具體算法實現本人正在拜讀之中。

        對稀疏臉的改進算法其實不少,例如分塊SRC算法,表情魯棒SRC等。但本人認爲可以把它推向實際應用的卻不多。上述文獻是本人認爲可圈可點的值得仔細拜讀的文獻。
相關文章
相關標籤/搜索