人脸检测实现

使用的是谷歌人脸识别系统facenet里面的MTCNN人脸检测部分,这部分可用于人脸检测和人脸对齐,输出160×160大小的图像

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

解压后放在tensorflow的文件夹下
人脸检测实现
打开requirements.txt,我们可以看到我们需要安装以下依赖

tensorflow==1.7
scipy
scikit-learn
opencv-python
h5py
matplotlib
Pillow
requests
psutil

打开Anaconda Prompt控制台,**tensorflow环境:activate tensorflow,然后使用conda install或者pip3 install安装上面这些包
人脸检测实现
更新Sklearn至最新版本

pip3 install –U scikit-learn

配置Facenet环境

在自己电脑对应的Anaconda\Lib\site-packages目录下和Anaconda\enve\tensorflow\Lib\site-packages目录下,新建facenet文件夹,然后,将facenet-master\src目录下的全部文件复制到上面新建的facenet文件夹内;

在Anaconda Prompt中运行python,输入import facenet,不报错即可

设置环境变量,在计算机–>属性–>高级系统设置–>环境变量 中,新建PYTHONPATH,键入

D:…\Anaconda\enve\tensorflow\Lib\site-packages\facenet

下载LFW数据集

数据集下载地址为:http://vis-www.cs.umass.edu/lfw/lfw.tgz
下载完成后,解压数据集,在lfw下新建一个文件夹raw,把lfw中所有的文件(除了raw)移到raw文件夹中。在lfw下新建一个文件夹lfw_160用于放置剪裁后的图片。

人脸检测

使用MTCNN网络进行人脸检测和对齐,并缩放到160×160。
MTCNN的实现主要在文件夹facenet/src/align中,文件夹的内容如下:

  • detect_face.py:定义了MTCNN的模型结构,由P-Net、R-Net、O-Net组成,这三个网络已经提供了预训练的模型,模型数据分别对应文件det1.npy、det2.npy、det3.npy。
  • align_dataset_matcnn.py:是使用MTCNN的模型进行人脸检测和对齐的入口代码。

打开Anaconda Prompt切换到facenet目录,
人脸检测实现
输入如下命令进行校准:

python align\align_dataset_mtcnn.py --help

再运行如下命令:

python align\align_dataset_mtcnn.py D:\Anaconda\envs\tensorflow\facenet\datasets\lfw\raw D:\Anaconda\envs\tensorflow\facenet\datasets\lfw_160 --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25

参数–image_size 160 --margin 32的含义是在MTCNN检测得到的人脸框的基础上缩小32像素(训练时使用的数据偏大),并缩放到160×160大小,因此最后得到的对齐后的图像都是160×160像素的,这样的话,就成功地从原始图像中检测并对齐了人脸。

参考:
https://www.cnblogs.com/zyly/p/9703614.html
https://blog.****.net/xingwei_09/article/details/79161931