人臉識別入門學習(一):人臉識別的一些基本概念

        人臉識別是一門非常非常龐雜的理論系統,我們需要由淺到深地學習,逐步構建人臉識別理論體系,學習過程任重道遠。人臉識別的概念不用多說了,在生活中已經十分常見了,首先對人臉識別的一些最基礎的概念做一些解釋。

人臉識別的基本步驟?

  1. 在圖像上選取一個(矩陣)區域作爲觀察窗口
  2. 提取窗口中的一些特徵來對這個窗口進行描述
  3. 根據特徵描述來判斷該窗口是否框住了一張人臉

        不斷重複上面三個步驟,將圖像中所有窗口,從左上到右下依次遍歷(滑動窗口),直到找到人臉或者遍歷完所有窗口。

 

如何選擇窗口的大小?

        選取的窗口大小應該與人臉的大小接近一致,窗口基本貼合人臉的外輪廓。但不同圖像中人臉的大小不同,對應的窗口大小也不同。一種思路是分別用不同大小的窗口來檢查圖像,但這種方法很低效。換一種角度看,既然改變窗口大小很低效,那麼我們可以通過改變圖像大小,對人臉進行縮放,來適應固定大小的窗口。稱之爲圖像金字塔

 

        通過構建圖像金字塔,並允許窗口與人臉的貼合有一定的誤差,我們就可以檢測不同位置、不同大小的人臉了。

 

如何提取特徵並描述一個窗口?

        從人的視覺上看,一張圖像的所有信息都可以很直觀的呈現出來。但機器沒有視覺,他所感知到的就是圖像區域各個像素點顏色值排列組成的矩陣,是密密麻麻的0和1,所以機器從一個窗口中提取出來的數據也是01串,我們對這些密密麻麻的01串進行一系列複雜的計算之後,將其抽象爲特徵向量,即這個窗口的特徵。總而言之,特徵提取過程就是從原始的輸入數據變換到對應的特徵向量的過程。

 

如何用特徵來判斷窗口是否包含人臉?

        我們將窗口劃分爲兩類:一類是包含人臉的窗口,稱之爲人臉窗口;另一類是不包含人臉的窗口,稱之爲非人臉窗口。而最終判斷的過程就是將圖像中所有窗口不斷分類的過程。 由於窗口中提取的特徵是由數值構成的特徵向量,所以我們是通過可計算的數學模型來對特徵進行處理,這個數學模型我們稱之爲分類器。分類器以特徵向量爲輸入,通過一系列的計算,輸出這個窗口對應的類別。可以給兩個類別定義成標籤,人臉窗口爲1,非人臉窗口爲-1。

        總而言之,我們通過將從窗口中的提取到的特徵向量,送入分類器中進行計算,得到該窗口的標籤,來判斷該窗口是否包含人臉。

 

如何構建分類器?

        考慮一個最簡單的分類器:將特徵向量每一維上的數相加,得到一個sum值,如果這個sum大於某個數T,那麼就表示這個窗口中包含着人臉;若小於T,則表示這個窗口中不包含人臉。

        這個T就是分類器的參數,分類器可以有一個或者多個參數,這些參數共同決定了機器對窗口的判斷。那麼我們如何來選擇這個參數呢?機器並不懂人類的需求,我們也無法確定怎麼選參數才能使判斷的正確率更高。那麼一個可行的方法就是:

        給機器一個訓練集,其中包括了許多窗口和其對應的標籤,機器通過整理學習這些帶着“答案”的窗口的特徵向量,不斷調整自身的參數值來使訓練成績更高,就像做練習題一樣。然後我們再給機器一個測試集,包括了許多不帶標籤的窗口,讓機器使用之前通過測試集所訓練出來的參數來對這些窗口進行判斷,也就是“考試”。如果考試成績夠了,例如判斷正確率大於80%,那麼我們就認爲這個參數已經足夠優了,隨即終止訓練;若是訓練時間過於長了,或者機器認爲自己的“成績”無法再通過訓練來提高,那麼這時我們也應該終止訓練。

        總而言之,構建分類器的方法就是:設定目標,向機器輸入訓練集和測試集來讓機器自發地調整參數,從而達到我們想要的效果。

        至此,人臉識別所需的幾大最基本的要素都已構建完成。但如此簡單的人臉識別系統效率非常低,需要做一些突破,我們之後再講。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章