1. 程式人生 > >卷積神經網路(1)

卷積神經網路(1)

卷積神經網路作為一種置換了傳統網路中隱藏層的可自動提取樣本特徵的技術,具有較高的識別率。本文利用dlib與TensorFlow平臺實現了卷積神經網路人臉識別。結果準確率達到了0.984,取的了較為理想的結果。

**

1 引言

**
人臉識別是通過提取人的臉部特徵資訊進行身份識別的一種技術。目前,卷積神經網路在人臉識別上具有一定的應用成果。該網路通過訓練大量的人臉特徵影象,學習其中的特徵,進而實現對目標人臉的識別。但是像光照、無法擴充套件到平面以外等問題還是無法很好地解決。

2 卷積神經網路模型

2.1 卷積神經網路框架
如圖所示為大體結構:
這裡寫圖片描述
卷積神經網路是一種前饋神經網路,包括卷積層、池化層、全連線層。基本結構包括特徵提取層和特徵對映層。卷積層是用核矩陣,依次與影象的每個畫素做乘積,得到含有特徵的資訊矩陣。可以降低引數數量,防止過擬合。池化層則存在於卷積層之間,降低影象的空間尺寸。池化在每一個縱深維度上獨自完成,因此影象的縱深保持不變。
卷積與池化的結合結構可以出現多次,模型的不同需求決定了這個組合的次數。也可以使用卷積層+卷積層+池化層的組合,這是沒有限制的。最常見的CNN都是若干卷積層+池化層的組合,如上圖中的CNN結構。
2.2 人臉識別的流程


2.2.1 人臉影象採集
通過攝像頭把人臉有用的區域性特徵圖採集下來,使用dlib識別人臉,在採集過程中要不停地變換臉部表情,使得影象具有多樣性。另外,將大量其他人的人臉影象同樣作為訓練集,以提高模型的準確度。人臉的檢測採用了dlib中的detector方法:dets = detector(gray_img, 1)
2.2.2 人臉影象檢測
對人臉影象中的模式特徵進行檢驗,利用概率統計與Adaboost挖取到人臉中的有用資訊,建立起檢驗標準。特徵提取器選用dlib自帶的frontal_face_detector()方法。
2.2.3 人臉影象處理與特徵提取
將影象進行灰度變化、過濾、銳化等處理後,利用卷積與池化將影象資訊轉化為數值資訊,進一步轉化為特徵向量。
卷積計算:將輸入的影象進行卷積核的過濾,得到輸出值,卷積過程如公式:

這裡寫圖片描述
池化學習:卷積層越多,訓練的壓力變越大,引數也就越多,池化層能將每一層卷積的輸入張量的各個子矩陣進行壓縮,以降低空間維度。過程為公式:
這裡寫圖片描述
2.2.4 人臉影象識別
人臉識別存在著兩種不同的方式,一種類似Apple的面容ID,反饋的結果為單人身份確認;另一種是多應用於安防領域中,存在於視訊流中多選一的識別。在經過了大量的訓練之後,利用訓練得到的特徵資訊,對實時採集的個人面部影象進行鑑別,對大量人群中的某個身份進行追蹤。

3 實驗與分析

本文主要分析個人的識別,訓練圖集包含面部多表情、多姿態。結果會自動的將準確率大於0.98的影象儲存下來。
本人訓練集,用dlib分時段採集10000張影象。爬取13000張其他人的影象,作為挖取特徵的對比訓練集。OpenCV實時採取本人5000張測試集,初始維度為128*128,每500張作為一組,採取結束後,網路給出訓練識別率。
十組的準確率變化如圖:

這裡寫圖片描述
可以明確的顯示出卷積神經網路較高的識別準確率,最高的達到了0.984。

4 結語

本文介紹了卷積神經網路人臉識別模型。通過識別結果看出,卷積的識別率比較高,這是因為CNN將傳統的隱含層置換為了卷積層與池化層,能夠自動提取影象的有效特徵。自動提取有效特徵。
海量的影象訓練集與卷積過程使得CNN的遷移能力較弱,不同的目標需要重新進行訓練,未來的研究目標將會在遷移方向展開。