1.簡介: facenet 是基于 TensorFlow 的人臉識別開源庫,有興趣的同學可以扒扒源代碼:
https://github.com/davidsandberg/facenet
2.安裝和配置 facenet
我們先將 facenet 源代碼下載下來:
git clone?https://github.com/davidsandberg/facenet.git
在使用 facenet 前,務必安裝下列這些庫包:
或者直接移動到 facenet 目錄下,一鍵安裝
pip install -r requirements.txt
3.下載 LFW 數(shù)據(jù)集
LFW 是由美國馬薩諸塞大學阿姆斯特分校計算機視覺實驗室整理的。它包含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 目錄下(沒有的話自己建個目錄),在 lfw_data 目錄下新建一個目錄 lfw_160,用來存放裁剪后圖片。
4.對圖像進行預處理
因為程序中神經(jīng)網(wǎng)絡使用的是谷歌的“inception resnet v1”網(wǎng)絡模型,這個模型的輸入時160*160的圖像,而我們下載的LFW數(shù)據(jù)集是250*250限像素的圖像,所以需要進行圖片的預處理。
運行 facenet/src/align/align_dataset_mtcnn.py 來修改圖片尺寸大小,加入下列參數(shù)
facenet/data/lfw_data/lfw #輸入圖像文件夾 facenet/data/lfw_data/lfw_160 #輸出圖像文件夾 --image_size 160 --margin 32 --random_order--gpu_memory_fraction 0.25 #指定裁剪后圖像大?。ㄈ绻恢付?,默認的裁剪結(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ù)信息,然后運行 align_dataset_mtcnn.py 文件:
**這里自己運行的時候一直報錯提示:No module named 'align'
將 align_dataset_mtcnn.py 移動至 src 文件夾下再運行就不會報錯了。
校準后圖像大小即變?yōu)?60 x 160 。
5.評估 Google 預訓練模型在數(shù)據(jù)集中的準確性
facenet提供了兩個預訓練模型,分別是基于CASIA-WebFace和 VGGFace2人臉庫訓練的。(由于存儲在 Google 網(wǎng)盤中,需要 FQ 下載使用)
GitHub 地址:https://github.com/davidsandberg/facenet
這里我采用的是 CASIA-WebFace 預訓練模型,有興趣了解的小伙伴,可以到CASIA-WebFace 官網(wǎng)看看:
http://www.cbsr.ia.ac.cn/english/CASIA-WebFace-Database.html
將下載好的預訓練文件解壓到 facenet/src/models目錄下:
添加參數(shù)
facenet/data/lfw_data/lfw_160 facenet/src/models/20180408-102900
運行 validate_on_lfw.py 文件。
這里我剛開始運行的時候報錯:
發(fā)現(xiàn)是預訓練模型版本太舊,我們在 facenet 上下載最新的CASIA-WebFace 訓練庫再重新運行即可。
運行結(jié)果如下:
可以看到識別精度可以達到 97.7%,其識別準確度還是非常不錯的。
但是程序運行完以后雖然最終運行結(jié)果正確,但是最后卻還是報了個錯誤:
_2_input_producer: Skipping cancelled enqueue attempt with queue not closed
原因是主線程已經(jīng)關閉,但是讀取數(shù)據(jù)入隊線程還在執(zhí)行入隊。
由于自己對 TensorFlow 線程還不是特別了解,暫時還沒有解決這個問題。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
