Facenet初探

来源:互联网 发布:php location延时跳转 编辑:程序博客网 时间:2024/05/22 03:15

本文主要描述如何使用FaceNet验证在数据集LFW的人脸检测效果。


一、前提条件
1.已安装Tensorflow
2.已在安装下列包(二选一): 

   a.python下安装scipy, scikit-learn, opencv-python, h5py, matplotlib, Pillow, requests, psutil 

   b.安装Anaconda集成环境

3.已更新Sklearn至最新版本(二选一):

  a.可在propmt下"conda update conda "

  b.直接在cmd命令行下"pip install -U scikit-learn"

4.已安装git

备注:如果没有完成以上的第3点,之后执行align时,可能会出现"no module named facenet","no module named align","no module named scikit-learn"等情况


二、安装和配置Facenet

1.在cmd命令行,定位到自己想下载的文件夹,用git下载FaceNet源代码工程:git clone --recursive https://github.com/davidsandberg/facenet.git


图1


2.下载数据集LFW。LFW数据集是由美国马萨诸塞大学阿姆斯特分校计算机视觉实验室整理的。下载地址:http://vis-www.cs.umass.edu/lfw/lfw.tgz,下载完成后,把数据解压到目录..facenet\data\lfw\raw下面,新建一个空文件夹命名为"lfw_160"。可以看到数据集中每张图像的分辩率是250*250。


图2


图3


3.设置环境变量,以下方法二选一:

a.在cmd命令行键入:set PYTHONPATH=...\facenet\src, 例如笔者的是:set PYTHONPATH=D:\Anaconda2\envs\py3.6\Lib\site-packages\facenet\src

b.在 计算机-->属性-->高级系统设置-->环境变量 中,新建PYTHONPATH,键入 D:\Anaconda2\envs\py3.6\Lib\site-packages\facenet\src

检验:在cmd命令行下面,键入set,查看设置情况


图4


图5


三、对图像数据进行预处理

我们需要将待检测所使用的数据集校准为和预训练模型所使用的数据集大小一致。

1.使用facenet\src\align\align_dataset_mtcnn.py进行校准,校准后的图片存在..facenet\data\lfw\lfw_160下面。在cmd命令行 或者 对应语言版本的propmt下,定位到facenet所在位置,键入"python src\align\align_dataset_mtcnn.py data/lfw/rawdata/lfw/lfw_160 --image_size 160--margin 32 --random_order--gpu_memory_fraction 0.25 "


图6


2.校准后发现图像大小变了


图7


四、评估谷歌预训练模型在数据集的准确率


1.下载预训练的模型。模型存储在Google网盘,需要翻墙。把下载的文件解压到src\models\目录下面。最终效果如图9。


图8


图9


2.程序下载好了,测试数据集LFW也有了,模型也有了,接下来就可以评估模型在数据集的准确率了。在cmd命令行或者propmt下定位到facenet文件夹下,输入"python src\validate_on_lfw.py data\lfw\lfw_160 src\models\20170512-110547",紧接着,预测中,结果如图:


图10