轉載博客(三處修改):https://www.cnblogs.com/weixuqin/p/9046225.html
參考博客:http://www.cnblogs.com/gmhappy/p/9472388.html
整個過程比較順利,如果有一兩個報錯情況,百度即可。
facenet 進行人臉識別測試
1.簡介:facenet 是基於 TensorFlow 的人臉識別開源庫,有興趣的同學可以扒扒源代碼:
https://github.com/davidsandberg/facenet
2.安裝和配置 facenet
我們先將 facenet 源代碼下載下來:
git clone https://github.com/davidsandberg/facenet.git
在使用 facenet 前,務必安裝下列這些庫包:
這里如果是anaconda環境,強烈建議隔個虛擬環境一鍵安裝,如果tf版本過新后面一定會報錯
或者直接移動到 facenet 目錄下,一鍵安裝
pip install -r requirements.txt
3.下載 LFW 數據集
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路徑
tar zxvf lfw.tgz -C ./
在 lfw_data 目錄下新建一個目錄 lfw_160,用來存放裁剪后圖片。
4.對圖像進行預處理
因為程序中神經網絡使用的是谷歌的“inception resnet v1”網絡模型,這個模型的輸入時160*160的圖像,而我們下載的LFW數據集是250*250限像素的圖像,所以需要進行圖片的預處理。
運行 facenet/src/align/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 #指定裁剪后圖像大小(如果不指定,默認的裁剪結果是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 下添加參數信息,然后運行 align_dataset_mtcnn.py 文件:
校准后圖像大小即變為160 x 160
5.評估 Google 預訓練模型在數據集中的准確性
facenet提供了兩個預訓練模型,分別是基於CASIA-WebFace和 VGGFace2人臉庫訓練的。
百度網盤地址:https://blog.csdn.net/weixin_41813620/article/details/87282076
將下載好的預訓練文件解壓到 facenet/src/models目錄下
python src/validate_on_lfw.py data/lfw_data/lfw_160 src/models/20180402-114759
可以看到識別精度可以達到 98.5%可以看到識別精度可以達到 97.7%
但是程序運行完以后雖然最終運行結果正確,但是最后卻還是報了個錯誤:_2_input_producer: Skipping cancelled enqueue attempt with queue not closed
原因是主線程已經關閉,但是讀取數據入隊線程還在執行入隊。
6.對比2個人臉經過它的網絡映射之后的歐式距離
python src/compare.py src/models/20180402-114759/20180402-114759.pb data/images/Anthony_Hopkins_0001.jpg data/images/Anthony_Hopkins_0002.jpg
得到的值為0.8396,這個值代表的是歐氏距離,用來判別這兩張圖片是否為同一個人。兩張人臉圖片越相似,空間距離越小;差別越大,則空間距離越大。
7.安裝和配置Facenet環境(方法二)【轉】
1. 在自己電腦對應的Anaconda3\Lib\site-packages目錄下,新建facenet文件夾,本人的目錄如下:
2. 然后,將facenet-master\src目錄下的全部文件復制到上面新建的facenet文件夾內;
facenet-master\src目錄下的全部文件信息如下:
復制到facenet目錄內,如下:
3. 最后,在Anaconda Prompt內輸入import facenet,不會報錯即可,如下: