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