FaceNet實現人臉檢測和識別


轉載博客(三處修改):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,不會報錯即可,如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM