基於Caffe的人臉識別實現

2021-07-23 12:47:36 字數 2157 閱讀 5909

深度學習深似海、尤其是在影象人臉識別領域,最近幾年的頂會和頂刊常常會出現沒有太多的理論創新的文章,但是效果擺在那邊。

deepid是深度學習方法進行人臉識別中的乙個簡單,卻高效的乙個網路模型,其結構的特點可以概括為兩句話:1、訓練乙個多個人臉的分類器,當訓練好之後,就可以把待測試影象放入網路中進行提取特徵,2對於提取到的特徵,然後就是利用其它的比較方法進行度量。具體的**可以參照我的一篇**筆記:【深度學習**筆記】deep learning face representation from predicting 10,000 classes

其拓撲圖如圖1所示:

圖1:deepid的網路結構,影象比較大,需要放大才能看的清楚

網路定義檔案:

訓練乙個好的深度模型,乙個好的訓練資料是必不可少的。針對人臉識別的資料,目前公開的資料也有很多:比如最近的megaface、港大的celbra a、中科研的webface 等等。在這裡,我選擇webface人臉資料庫作為訓練(人臉庫不是很乾淨,雜訊較多),影象公共50萬張左右,共10575個人,但是資料不平衡。

要評測乙個演算法的效能,需要找乙個公平的比對資料庫來評測,在人臉驗證中,lfw資料庫無疑是最好的選擇。在lfw評測中,給出6000千對人臉影象對進行人匹配。

訓練資料和測試資料都選擇好之後,就需要進行資料處理了,為了提供較好的識別準確度,我採用了訓練資料和測試資料統一的預處理方法(雖然lfw上有提供已經預處理過的人臉影象,但是預處理的具體引數還是未知的),測試資料和訓練資料都取樣相同的人臉檢測和對齊方法。

主要分為3個步驟:

1,人臉檢測

2,人臉特徵點檢測

3、人臉的對齊

這三個步驟可以用我做的乙個小工具:facetools 來一鍵完成。

具體來說,需要選擇乙個標準的人臉影象作為對齊的基準,我挑選一位帥哥當標準影象:

如圖:

訓練資料通過對齊後是這樣的:

lfw測試資料通過對齊後是這樣的:

影象處理好之後,需要將其轉化為caffe 可以接受的格式。雖然caffe支援直接讀影象檔案的格式進行訓練,但是這種方式磁碟io會比較的大,所以我這裡不採用影象列表的方式,而是將訓練和驗證都轉化為lmdb的格式處理。

劃分訓練集和驗證集(我取樣的是9:1的比例)

指令碼如下:

再呼叫caffe 提供的轉化函式:

指令碼如下:

這樣之後,訓練的資料就準備好了。

上面的這些步驟之後,資料就已經處理好了,現在需要指定網路的超引數:

具體超引數設定如下:

訓練的時候,可以檢視學習曲線:

lfw上,提供了6000對的人臉影象對來作為評測資料,由於我採用的是自己選的人臉檢測和對齊方法,所以有些人臉在我的預處理裡面丟失了(檢測不到),為了簡單的處理這種情況,在提特徵的時候,沒有檢測到的影象就用原來的影象去替代。

然後進行人臉的比對

結果roc曲線:

通過選擇合適的指令碼,得到的準確度為:0.826333333333, 有點低。

實驗的結果沒有理想中的那麼好,主要的原因分為幾個:

1、資料集不夠好:有較多的雜訊資料

2、資料集合不平衡:每個人的個數從幾十張到幾百張不等。

3,、網路結構沒優化:原始的deepid的大小為:48*48,而我選擇的人臉影象大小為64*64,網路結構卻沒有相對應的調整。(主要影響在於全連線層的個數太多了)

基於Caffe的人臉識別實現

深度學習深似海 尤其是在影象人臉識別領域,最近幾年的頂會和頂刊常常會出現沒有太多的理論創新的文章,但是效果擺在那邊。deepid是深度學習方法進行人臉識別中的乙個簡單,卻高效的乙個網路模型,其結構的特點可以概括為兩句話 1 訓練乙個多個人臉的分類器,當訓練好之後,就可以把待測試影象放入網路中進行提取...

Caffe實踐 基於Caffe的人臉識別實現

深度學習深似海 尤其是在影象人臉識別領域,最近幾年的頂會和頂刊常常會出現沒有太多的理論創新的文章,但是效果擺在那邊。deepid是深度學習方法進行人臉識別中的乙個簡單,卻高效的乙個網路模型,其結構的特點可以概括為兩句話 1 訓練乙個多個人臉的分類器,當訓練好之後,就可以把待測試影象放入網路中進行提取...

Caffe實踐 基於Caffe的人臉識別實現

caffe實踐 基於caffe的人臉識別實現 目錄 導言資料選擇 資料處理 資料轉換 1 劃分訓練集驗證集 2 資料轉換 訓練網路 lfw上測試 結果分析 深度學習深似海 尤其是在影象人臉識別領域,最近幾年的頂會和頂刊常常會出現沒有太多的理論創新的文章,但是效果擺在那邊。deepid是深度學習方法進...