facenet + Mtcnn 实现人脸识别(实现步骤)
網(wǎng)上關(guān)于facenet以及Mtcnn原理的博客有很多,本文便不再贅述,如果有不明白的可以參考該博客http://www.uml.org.cn/ai/201806124.asp。
本文更多的是幫助大家使用facenet以及Mtcnn 實(shí)現(xiàn)人臉識別功能,這里我們利用的是Github上的一個開源項(xiàng)目,項(xiàng)目鏈接:https://github.com/davidsandberg/facenet
解壓后得到facenet文件夾,我們把它放到主目錄下,方便使用,如圖:
值得注意的是如果單單git該項(xiàng)目的話,并不能實(shí)現(xiàn)功能我們還要下載其附帶的預(yù)訓(xùn)練模型:
這里的資源是需要連接外網(wǎng)的,有篇博客提供了國內(nèi)資源下載:https://pan.baidu.com/share/init?surl=LLPIitZhXVI_V3ifZ10XNg
密碼:12mh。下載后我們會得到一個20170512-110547的壓縮文件,解壓后放入之前的facenet文件夾,這里我用到的是20180402-114759,不過并不影響。
到這里我們的一切項(xiàng)目準(zhǔn)備工作就已經(jīng)完成了,接下來我們按步驟進(jìn)行。
1.給代識別的人臉建造數(shù)據(jù)庫
在facenet文件夾中新建文件夾test_imgs,在文件夾下創(chuàng)建若干個文件夾存放若干個人的照片,形如:
每個文件夾下的照片具體是多少并沒有嚴(yán)格要求,但是不能太少,10張以上是必須的,不然SVM分類的準(zhǔn)確率會下降。
2.對已經(jīng)建好的數(shù)據(jù)庫的圖片進(jìn)行Mtcnn和剪裁處理
在運(yùn)行之前我們要先配置python路徑,在終端以此輸入:
export PYTHONPATH=~/facenet/src/align
export PYTHONPATH=~/facenet/src
如果依然報缺少模塊錯誤,就將二者順序反一下輸入,注意此處每打開一次終端就得重新輸入一次,想要徹底解決,需要修改配置文件,具體見下文,接下來開始處理:
因?yàn)橛?xùn)練網(wǎng)絡(luò)里所用到的圖片的大小均為160x160像素,所以我們要將圖片處理成對應(yīng)像素,并利用Mtcnn將圖片中的人臉剪裁出來。這里我們用到的代碼是位于facenet/src/align中的align_dataset_mtcnn.py,具體使用方法如下。
1.進(jìn)入align_dataset_mtcnn.py所在的文件夾。
2.執(zhí)行上述指令,參數(shù)解析:(1).py文件(2)待處理的人臉數(shù)據(jù)庫絕對路徑(3)處理后的人臉數(shù)據(jù)庫路徑,此處給出就好,具體將由程序代碼自動生成(4)--image_size 160 圖像尺寸 (5)在Mtcnn檢測得到的人臉的基礎(chǔ)上縮小32像素。
執(zhí)行后我們產(chǎn)生了如圖所示的文件夾test_imgs_160:
3.利用處理好的數(shù)據(jù)庫進(jìn)行SVM分類,產(chǎn)生.pkl文件
此處我們用到了位于/facenet/src中的classifier.py文件具體使用如下圖。
1.進(jìn)入classifier.py所在的文件夾,已在則忽略
2.運(yùn)行上述命令,參數(shù)解析(1).py文件 (2)模式選擇,仔細(xì)看源碼我們發(fā)現(xiàn),有兩種模式可供選擇,這里我們選擇TRAIN(訓(xùn)練模式)(3)待分類的人臉數(shù)據(jù)庫(4)之前下載的模型,這里要替換成所下載的版本,我的是20180402-114759。(5)pkl文件所在的位置及名字,此處同樣給出就好,代碼會自動創(chuàng)建。
4.修改原項(xiàng)目自帶的模型文件,以及.pkl文件
1.進(jìn)入/facenet/contributed,打開face.py文件。
2.修改選中部分為自己的模型文件以及.pkl文件,并保存。
5.調(diào)用代碼實(shí)現(xiàn)時實(shí)人臉識別
在facenet/contributed文件夾下運(yùn)行real_time_face_recognization.py文件即可查看效果。
/----------------------------------------------------------------------------------------------------------------------------------------------------------------/
文章截止到這里就已經(jīng)可以實(shí)現(xiàn)基本的人臉識別效果,以下內(nèi)容為自己修改部分。
1.解決需要重復(fù)導(dǎo)入python路徑問題:
回到主目錄打開配置文件:
在文件最下面添加:
保存文件。
注意要根據(jù)自己的實(shí)際情況對路徑作出修改!
2.原有的項(xiàng)目僅能對數(shù)據(jù)庫中的人進(jìn)行識別,而未在數(shù)據(jù)庫中的人物也能識別,不符合我們的需求,所以我們對閾值做了修改
打開上文提到的face.py文件
添加a = unknow,修改閾值,如果分類的預(yù)測率 小于 設(shè)定閾值,則返回 a.
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的facenet + Mtcnn 实现人脸识别(实现步骤)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubantu16.04安装显卡驱动遇到的
- 下一篇: 利用python将txt文件中的内容写入