【Caffe实践】基于Caffe的人脸识别实现
from:?http://blog.csdn.net/chenriwei2/article/details/49500687
導(dǎo)言
深度學(xué)習(xí)深似海、尤其是在圖像人臉識別領(lǐng)域,最近幾年的頂會(huì)和頂刊常常會(huì)出現(xiàn)沒有太多的理論創(chuàng)新的文章,但是效果擺在那邊。
DeepID是深度學(xué)習(xí)方法進(jìn)行人臉識別中的一個(gè)簡單,卻高效的一個(gè)網(wǎng)絡(luò)模型,其結(jié)構(gòu)的特點(diǎn)可以概括為兩句話:1、訓(xùn)練一個(gè)多個(gè)人臉的分類器,當(dāng)訓(xùn)練好之后,就可以把待測試圖像放入網(wǎng)絡(luò)中進(jìn)行提取特征,2對于提取到的特征,然后就是利用其它的比較方法進(jìn)行度量。具體的論文可以參照我的一篇論文筆記:【深度學(xué)習(xí)論文筆記】Deep Learning Face Representation from Predicting 10,000 Classes
首先我們完全參考論文的方法用Caffe設(shè)計(jì)一個(gè)網(wǎng)絡(luò)結(jié)構(gòu):
其拓?fù)鋱D如圖1所示:
?
圖1:DeepID的網(wǎng)絡(luò)結(jié)構(gòu),圖像比較大,需要放大才能看的清楚
網(wǎng)絡(luò)定義文件:
略2. 數(shù)據(jù)選擇
訓(xùn)練一個(gè)好的深度模型,一個(gè)好的訓(xùn)練數(shù)據(jù)是必不可少的。針對人臉識別的數(shù)據(jù),目前公開的數(shù)據(jù)也有很多:比如最近的MegaFace、港大的Celbra A、中科研的WebFace 等等。在這里,我選擇WebFace人臉數(shù)據(jù)庫作為訓(xùn)練(人臉庫不是很干凈,噪聲較多),圖像公共50萬張左右,共10575個(gè)人,但是數(shù)據(jù)不平衡。
要評測一個(gè)算法的性能,需要找一個(gè)公平的比對數(shù)據(jù)庫來評測,在人臉驗(yàn)證中,LFW數(shù)據(jù)庫無疑是最好的選擇。在lfw評測中,給出6000千對人臉圖像對進(jìn)行人匹配。
3. 數(shù)據(jù)處理
訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)都選擇好之后,就需要進(jìn)行數(shù)據(jù)處理了,為了提供較好的識別準(zhǔn)確度,我采用了訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)統(tǒng)一的預(yù)處理方法(雖然LFW上有提供已經(jīng)預(yù)處理過的人臉圖像,但是預(yù)處理的具體參數(shù)還是未知的),測試數(shù)據(jù)和訓(xùn)練數(shù)據(jù)都采樣相同的人臉檢測和對齊方法。
主要分為3個(gè)步驟:?
1,人臉檢測?
2,人臉特征點(diǎn)檢測?
3、人臉的對齊
這三個(gè)步驟可以用我做的一個(gè)小工具:FaceTools?來一鍵完成。
具體來說,需要選擇一個(gè)標(biāo)準(zhǔn)的人臉圖像作為對齊的基準(zhǔn),我挑選一位帥哥當(dāng)標(biāo)準(zhǔn)圖像:?
如圖:?
訓(xùn)練數(shù)據(jù)通過對齊后是這樣的:?
LFW測試數(shù)據(jù)通過對齊后是這樣的:?
4.數(shù)據(jù)轉(zhuǎn)換
圖像處理好之后,需要將其轉(zhuǎn)化為Caffe 可以接受的格式。雖然Caffe支持直接讀圖像文件的格式進(jìn)行訓(xùn)練,但是這種方式磁盤IO會(huì)比較的大,所以我這里不采用圖像列表的方式,而是將訓(xùn)練和驗(yàn)證圖片都轉(zhuǎn)化為LMDB的格式處理。
4.1 劃分訓(xùn)練集驗(yàn)證集
劃分訓(xùn)練集和驗(yàn)證集(我采樣的是9:1的比例)?
腳本如下:
略
4.2 數(shù)據(jù)轉(zhuǎn)換
再調(diào)用Caffe 提供的轉(zhuǎn)化函數(shù):?
腳本如下:
這樣之后,訓(xùn)練的數(shù)據(jù)就準(zhǔn)備好了。
訓(xùn)練網(wǎng)絡(luò)
上面的這些步驟之后,數(shù)據(jù)就已經(jīng)處理好了,現(xiàn)在需要指定網(wǎng)絡(luò)的超參數(shù):
具體超參數(shù)設(shè)置如下:
略 訓(xùn)練的時(shí)候,可以查看學(xué)習(xí)曲線:?
6.LFW上測試
LFW上,提供了6000對的人臉圖像對來作為評測數(shù)據(jù),由于我采用的是自己選的人臉檢測和對齊方法,所以有些人臉在我的預(yù)處理里面丟失了(檢測不到),為了簡單的處理這種情況,在提特征的時(shí)候,沒有檢測到的圖像就用原來的圖像去替代。
略然后進(jìn)行人臉的比對
略 結(jié)果ROC曲線:?
通過選擇合適的腳本,得到的準(zhǔn)確度為:0.826333333333, 有點(diǎn)低。
7.結(jié)果分析
實(shí)驗(yàn)的結(jié)果沒有理想中的那么好,主要的原因分為幾個(gè):?
1、數(shù)據(jù)集不夠好:有較多的噪聲數(shù)據(jù)?
2、數(shù)據(jù)集合不平衡:每個(gè)人的圖片個(gè)數(shù)從幾十張到幾百張不等。?
3,、網(wǎng)絡(luò)結(jié)構(gòu)沒優(yōu)化:原始的DeepID的大小為:48*48,而我選擇的人臉圖像大小為64*64,網(wǎng)絡(luò)結(jié)構(gòu)卻沒有相對應(yīng)的調(diào)整。(主要影響在于全連接層的個(gè)數(shù)太多了)
總結(jié)
以上是生活随笔為你收集整理的【Caffe实践】基于Caffe的人脸识别实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Caffe实践】 添加自己的网络层
- 下一篇: 【Caffe实践】基于Caffe的人脸检