TensorFlow运行facenet代码踩得坑

本人刚刚开始学习人脸识别,文章试验可以成功运行MTCNN算法

先去GitHub下载facenet源码:https://github.com/davidsandberg/facenet

再下载数据集下载地址为:http://vis-www.cs.umass.edu/lfw/lfw.tgz

1. TensorFlow版本问题

一开始安装TensorFlow2.0,在Pycharm查看slign_dataset_mtcnn.py代码就出现以下警示

Facets 不能添加 spring_ci

这是由于TensorFlow2.0模块进行更改

import tensorflow as tf

改为

import tensorflow.compat.v1 as tf

但是后面还有一系列版本问题,尤其后面还有一些变量类型的问题,改了很久都没有成功,简直爆炸。

所以咱不受这气这直接放弃新版本,直接新建了一个TensorFlow1.7,Python3.5版本的编译环境好啦,这是代码对应的版本。

2. facenet模块加载问题

在安装TensorFlow1.7版本的路径...\Ancaonda3\envs\TF1.7\Lib\site-packages下创建一个名为facenet文件夹,并将下载的facenet\src文件下的全部文件复制到新建的facenet,这是为了能寻找到facenet中的.py文件。

Tips:这里的TF1.7是自己创建编译环境的命名

Facets 不能添加 spring_Facets 不能添加 spring_02

接着在Anaconda Prompt中激活TensorFlow1,7环境,运行python,输入import facenet,不出错就OK

Facets 不能添加 spring_深度学习_03

但是这里可能出现

ImportError: No module named 'align'

按理来说__init__.py存在可以直接加载的,本人刚刚起步也不是很熟,就自己添加路径。在Anaconda Prompt中输入以下命令

set PYTHONPATH=C:\Program Files (x86)\Ancaonda3\envs\TF1.7\Lib\site-packages\facenet

然后输入set,出现

Facets 不能添加 spring_Facets 不能添加 spring_04

说明成功解决路径问题。

3. 库的版本问题

下载lfw数据库,并改名为raw,接着移动到datasets\lfw文件夹下,这个datasets文件夹自己创建的

Facets 不能添加 spring_深度学习_05

另一个文件不用管,可以自己生成的。

接着你的运行代码文件夹为以下形式

Facets 不能添加 spring_深度学习_06

然后在Anaconda Prompt寻找到你的代码路径,本人的路径如下

Facets 不能添加 spring_tensorflow_07

然后就可以开始测试MTCNN算法了。

python  facenet/src/align/align_dataset_mtcnn.py   datasets/lfw/raw  datasets/lfw/lfw_mtcnnpy_160 --image_size 160 --margin 32 --random_order

出现ValueError: Object arrays cannot be loaded when allow_pickle=False错误

这是由于numpy版本的问题

输入以下降低numpy版本,据调查降为1.16.2较为合适

pip install numpy==1.16.2

自动卸载当前版本,安装numpy的1.16.2版本。

在运行出现AttributeError: module 'scipy.misc' has no attribute 'imread'错误

这是由于scipy的版本问题, 降级到scipy==1.2.1就可以了

pip install scipy==1.2.1

再输入就可以成功运行align_dataset_mtcnn.py文件了,运行结果如下

Facets 不能添加 spring_tensorflow_08

 

4. 总结TensorFlow需要安装的第三方库

可以选择以下命令一次安装,就ok啦

pip install tensorflow==1.7 scipy==1.2.1 scikit-learn opencv-python h5py matplotlib Pillow requests psutil numpy==1.16.2

后续可能会更新继续踩得坑