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代码就出现以下警示
这是由于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是自己创建编译环境的命名
接着在Anaconda Prompt中激活TensorFlow1,7环境,运行python,输入import facenet,不出错就OK
但是这里可能出现
ImportError: No module named 'align'
按理来说__init__.py存在可以直接加载的,本人刚刚起步也不是很熟,就自己添加路径。在Anaconda Prompt中输入以下命令
set PYTHONPATH=C:\Program Files (x86)\Ancaonda3\envs\TF1.7\Lib\site-packages\facenet
然后输入set,出现
说明成功解决路径问题。
3. 库的版本问题
下载lfw数据库,并改名为raw,接着移动到datasets\lfw文件夹下,这个datasets文件夹自己创建的
另一个文件不用管,可以自己生成的。
接着你的运行代码文件夹为以下形式
然后在Anaconda Prompt寻找到你的代码路径,本人的路径如下
然后就可以开始测试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文件了,运行结果如下
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
后续可能会更新继续踩得坑