主要参考博客:https://www.cnblogs.com/gmhappy/p/9472388.html
准备工作
源码下载:https://github.com/davidsandberg/facenet.git
数据集下载:http://vis-www.cs.umass.edu/lfw/lfw.tgz
模型下载:https://drive.google.com/file/d/1R77HmFADxe87GmoLwzfgMu_HY0IhcyBz/view
使用的环境: win10 Python3.6(Anaconda)
首先在anaconda中新建一个python3.6的环境,安装TensorFlow和sklearn库。
在自己环境对应的\Lib\site-packages目录下,新建facenet文件夹,并将下载的源码src文件夹中的所有文件复制到该目录下。本人的目录如下:
并且将该路径配置到环境变量中,结果如图:
对数据集进行预处理
将下载好的数据集解压,并且新建一个lfw_160的文件夹用于存储预处理完成的数据。
将目录切换到下载好的源码的src\align路径下,这时可以使用“activate + 环境名称”(我的是tensorflow_env)来**环境。也可以像下面,使用环境路径下的python.exe来运行align_dataset_mtcnn.py文件。(建议**环境)
此程序的运行命令为:python align_dataset_mtcnn.py (lfw文件夹的路径) (lfw_160文件夹的路径) data/lfw data/lfw_160 --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25
遇到下列问题,说明facenet模块没有安装,检查准备工作的倒数第二步。
align模块没有安装,可以使用下面的命令安装:pip/conda install align -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
若出现 No module name “align.detect_face” 说明facenet的路径没有加入到环境变量中,检查倒数第一步。
还会出现很多类似下面这样的错误,是因为Python环境中没有安装相应的module,一般使用conda install (模块名)来安装模块即可。
安装opencv时,使用以下命令:conda install -chttps://conda.binstar.org/menpo opencv
若出现module 'scipy.misc' has no attribute imread的错误,则要安装Pillow模块。同理,使用命令conda install Pillow。
运行需要一定的时间,耐心等待。
最后的运行结果如下:(因为Python版本的问题,一些函数已经弃用,所以报了很多警告,可以先不理)
到此,就完成了对数据集的预处理工作。
对模型的评估
已经训练好的模型有两种,本文用的是第一种,模型的介绍详见源码下载的网站。
退回到到源码的src目录,使用命令python validate_on_lfw.py (lfw_160文件夹的路径)(下载好的模型中20180408-102900.pb文件路径)进行预测。
第一次跑的话可能会比较慢(我跑了一小时)
预测结果如下:(同样有很多警告)
最后的参数本来应该是模型文件夹名称也可以,但是我运行的时候报错了,所以用了文件作参数,报错原因还不知道。