Python facenet進(jìn)行人臉識(shí)別測(cè)試過(guò)程解析
1.簡(jiǎn)介:facenet 是基于 TensorFlow 的人臉識(shí)別開(kāi)源庫(kù),有興趣的同學(xué)可以扒扒源代碼:
https://github.com/davidsandberg/facenet
2.安裝和配置 facenet
我們先將 facenet 源代碼下載下來(lái):
git clone https://github.com/davidsandberg/facenet.git
在使用 facenet 前,務(wù)必安裝下列這些庫(kù)包:

或者直接移動(dòng)到 facenet 目錄下,一鍵安裝
pip install -r requirements.txt
3.下載 LFW 數(shù)據(jù)集
LFW 是由美國(guó)馬薩諸塞大學(xué)阿姆斯特分校計(jì)算機(jī)視覺(jué)實(shí)驗(yàn)室整理的。它包含13233張圖片,共5749人,其中4096人只有一張圖片,1680人的圖片多余一張,每張圖片尺寸是250x250 。
下載地址:http://vis-www.cs.umass.edu/lfw/ ->Menu->Download->All images as gzipped tar file
下載完成后,我們將文件解壓到 facenet/data/lfw_data/lfw 目錄下(沒(méi)有的話自己建個(gè)目錄),在 lfw_data 目錄下新建一個(gè)目錄 lfw_160,用來(lái)存放裁剪后圖片。
4.對(duì)圖像進(jìn)行預(yù)處理
因?yàn)槌绦蛑猩窠?jīng)網(wǎng)絡(luò)使用的是谷歌的“inception resnet v1”網(wǎng)絡(luò)模型,這個(gè)模型的輸入時(shí)160*160的圖像,而我們下載的LFW數(shù)據(jù)集是250*250限像素的圖像,所以需要進(jìn)行圖片的預(yù)處理。
運(yùn)行 facenet/src/align/align_dataset_mtcnn.py 來(lái)修改圖片尺寸大小,加入下列參數(shù)
facenet/data/lfw_data/lfw #輸入圖像文件夾 facenet/data/lfw_data/lfw_160 #輸出圖像文件夾 --image_size 160 --margin 32 --random_order--gpu_memory_fraction 0.25 #指定裁剪后圖像大小(如果不指定,默認(rèn)的裁剪結(jié)果是182*182像素的)
即
python align_dataset_mtcnn.py facenet/data/lfw_data/lfw facenet/data/lfw_data/lfw_160 --image_size 160 --margin 32 --random_order--gpu_memory_fraction 0.25
如果用的是 pycharm,可以在 RUN -> Edit Configurations 下添加參數(shù)信息,然后運(yùn)行 align_dataset_mtcnn.py 文件:

**這里自己運(yùn)行的時(shí)候一直報(bào)錯(cuò)提示:No module named 'align'
將 align_dataset_mtcnn.py 移動(dòng)至 src 文件夾下再運(yùn)行就不會(huì)報(bào)錯(cuò)了。
校準(zhǔn)后圖像大小即變?yōu)?60 x 160 。

5.評(píng)估 Google 預(yù)訓(xùn)練模型在數(shù)據(jù)集中的準(zhǔn)確性
facenet提供了兩個(gè)預(yù)訓(xùn)練模型,分別是基于CASIA-WebFace和 VGGFace2人臉庫(kù)訓(xùn)練的。(由于存儲(chǔ)在 Google 網(wǎng)盤(pán)中,需要 FQ 下載使用)
GitHub 地址:https://github.com/davidsandberg/facenet

這里我采用的是 CASIA-WebFace 預(yù)訓(xùn)練模型,有興趣了解的小伙伴,可以到CASIA-WebFace 官網(wǎng)看看:
http://www.cbsr.ia.ac.cn/english/CASIA-WebFace-Database.html
將下載好的預(yù)訓(xùn)練文件解壓到 facenet/src/models目錄下:
添加參數(shù)
facenet/data/lfw_data/lfw_160 facenet/src/models/20180408-102900
運(yùn)行 validate_on_lfw.py 文件。
這里我剛開(kāi)始運(yùn)行的時(shí)候報(bào)錯(cuò):

發(fā)現(xiàn)是預(yù)訓(xùn)練模型版本太舊,我們?cè)?facenet 上下載最新的CASIA-WebFace 訓(xùn)練庫(kù)再重新運(yùn)行即可。
運(yùn)行結(jié)果如下:

可以看到識(shí)別精度可以達(dá)到 97.7%,其識(shí)別準(zhǔn)確度還是非常不錯(cuò)的。
但是程序運(yùn)行完以后雖然最終運(yùn)行結(jié)果正確,但是最后卻還是報(bào)了個(gè)錯(cuò)誤:
_2_input_producer: Skipping cancelled enqueue attempt with queue not closed

原因是主線程已經(jīng)關(guān)閉,但是讀取數(shù)據(jù)入隊(duì)線程還在執(zhí)行入隊(duì)。
由于自己對(duì) TensorFlow 線程還不是特別了解,暫時(shí)還沒(méi)有解決這個(gè)問(wèn)題。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python判斷計(jì)算機(jī)是否有網(wǎng)絡(luò)連接的實(shí)例
今天小編就為大家分享一篇python判斷計(jì)算機(jī)是否有網(wǎng)絡(luò)連接的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
jupyter notebook運(yùn)行命令顯示[*](解決辦法)
這篇文章主要介紹了jupyter notebook運(yùn)行命令顯示[*],文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
python 實(shí)現(xiàn)視頻流下載保存MP4的方法
今天小編就為大家分享一篇python 實(shí)現(xiàn)視頻流下載保存MP4的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
python-tornado的接口用swagger進(jìn)行包裝的實(shí)例
今天小編就為大家分享一篇python-tornado的接口用swagger進(jìn)行包裝的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
Python操作MongoDB的教程詳解(插,查,改,排,刪)
MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。本文將詳細(xì)和大家聊聊Python操作MongoDB的方法,需要的可以參考一下2022-09-09
Python中關(guān)于元組 集合 字符串 函數(shù) 異常處理的全面詳解
本篇文章介紹了我在學(xué)習(xí)python過(guò)程中對(duì)元組、集合、字符串、函數(shù)、異常處理的總結(jié),通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下2021-10-10
python 實(shí)現(xiàn)批量替換文本中的某部分內(nèi)容
今天小編就為大家分享一篇python 實(shí)現(xiàn)批量替換文本中的某部分內(nèi)容,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12

