【caffe實踐】基於caffe的人臉識別實現
目錄(?)
[+]
導言資料選擇
資料處理
資料轉換
1 劃分訓練集驗證集
2 資料轉換
訓練網路
lfw上測試
結果分析
深度學習深似海、尤其是在影象人臉識別領域,最近幾年的頂會和頂刊常常會出現沒有太多的理論創新的文章,但是效果擺在那邊。
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實踐 基於Caffe的人臉識別實現
深度學習深似海 尤其是在影象人臉識別領域,最近幾年的頂會和頂刊常常會出現沒有太多的理論創新的文章,但是效果擺在那邊。deepid是深度學習方法進行人臉識別中的乙個簡單,卻高效的乙個網路模型,其結構的特點可以概括為兩句話 1 訓練乙個多個人臉的分類器,當訓練好之後,就可以把待測試影象放入網路中進行提取...
Caffe 應用實踐
一 資料整理 1 資料處理 標註類標籤 資料打亂 shuf 2 轉換成caffe可讀的leveldb或者lmdb儲存。build tools convert imageset backend lmdb resize heiht 45 resize width 45 image data print ...
人臉識別 基於Caffe
0 jpg 0 修改部分 example home jh face detect data home jh face detect tools caffe安裝目錄 build tools train data root home jh face detect train val data root ...