Python facenet進(jìn)行人臉識(shí)別測(cè)試過(guò)程解析
1.簡(jiǎn)介:facenet 是基于 TensorFlow 的人臉識(shí)別開源庫(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ī)視覺實(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 目錄下(沒有的話自己建個(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 #指定裁剪后圖像大?。ㄈ绻恢付ǎJ(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)盤中,需要 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 文件。
這里我剛開始運(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í)還沒有解決這個(gè)問題。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python中實(shí)現(xiàn)一行拆多行和多行并一行的示例代碼
這篇文章主要介紹了Python中實(shí)現(xiàn)一行拆多行和多行并一行的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09python?pygame實(shí)現(xiàn)控制物體移動(dòng)
這篇文章主要為大家詳細(xì)介紹了python?pygame控制物體移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Python實(shí)現(xiàn)登錄人人網(wǎng)并抓取新鮮事的方法
這篇文章主要介紹了Python實(shí)現(xiàn)登錄人人網(wǎng)并抓取新鮮事的方法,可實(shí)現(xiàn)Python模擬登陸并抓取新鮮事的功能,需要的朋友可以參考下2015-05-05python re模塊findall()函數(shù)實(shí)例解析
這篇文章主要介紹了python re模塊findall()函數(shù)實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python Socket TCP雙端聊天功能實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了Python Socket TCP雙端聊天功能實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06