【TensorFlow】facenet使用标记(Anaconda环境下)

参考:FMDangel 的 https://blog.****.net/qq_15192373/article/details/78693037

感谢~

一、前提条件:


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

(在这里踩坑了,不能用pycharm自带的setting中自动安装facenet,和这个git里边拉取的是不同的缺少很多文件,后边会提示no module named facenet)

【TensorFlow】facenet使用标记(Anaconda环境下)

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

(可以随便放一个目录,只要记得在哪里就OK)

【TensorFlow】facenet使用标记(Anaconda环境下)

【TensorFlow】facenet使用标记(Anaconda环境下)

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,查看设置情况

提示:这个环境变量一定要在有前边提示的所有包的环境下安装,不然之后是无法处理图像的。

比如我在Anaconda里边装了tensorflow用的整套环境,但是windows外部的py是不带DL环境的,这个时候用cmd就会报错。

【TensorFlow】facenet使用标记(Anaconda环境下)

【TensorFlow】facenet使用标记(Anaconda环境下)

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

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

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\raw data\lfw\lfw_160 --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25 "

这里,如果表示无法找到的话,可以直接:

python (facenet绝对路径)\src\align\align_dataset_mtcnn.py (facenet绝对路径)\data\lfw\raw (facenet绝对路径)\data\lfw\lfw_160 --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25

注意"--xxx"前边一定要有空格。

【TensorFlow】facenet使用标记(Anaconda环境下)

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

【TensorFlow】facenet使用标记(Anaconda环境下)

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

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

【TensorFlow】facenet使用标记(Anaconda环境下)

【TensorFlow】facenet使用标记(Anaconda环境下)

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

【TensorFlow】facenet使用标记(Anaconda环境下)