用facenet进行人脸检测、人脸识别,数据用的是LFW数据集

  首先下载facenet网络facenet github,之后打开src文件,重要的文件基本在这里,

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第1张图片

其中align文件夹下面是人脸检测、对齐与裁剪。打开align

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第2张图片

其中那个align_dataset_mtcnn.py 就是运行人脸检测、对其与裁剪的那个程序。

打开detect_face.py文件,可以发现这个函数:

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第3张图片

可以发现det1.npy,det2.npy,det3.npy是人脸检测网络中的权重。

安装和配置Facenet环境


这是我的facenet解压的位置 E:\hsyin\facenet-master\src

set PYTHONPATH=E:\hsyin\facenet-master\src


接下来可以运行人脸检测程序,我用的数据集是LFW  lfw数据集

因为程序中神经网络使用的是谷歌的“inception resnet v1”网络模型,这个模型的输入时160*160的图像,而我们下载的LFW数据集是250*250限像素的图像,所以需要进行图片的预处理。

将lfw的数据放到 E:\hsyin\facenet-master\data\lfw\raw,同时新建一个lfw_160文件夹

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第4张图片

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第5张图片

遇到一个问题就是tensorflow版本的问题

max_axis = tf.reduce_max(target, axis, keepdims=True)

这是facenet上的代码:

但是我的版本的代码应该是

max_axis = tf.reduce_max(target, axis,keep_dims=True)

将上面改正就不会报错了


打开cmd将位置切换到E:\hsyin\facenet-master目录下,输入命令:

python src\align\align_dataset_mtcnn.py data/lfw/raw data/lfw/lfw_160 --image_size 160 --margin 32

data/lfw/raw是lfw的原始图片位置,data/lfw/lfw_160是生成图片的位置。

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第6张图片

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第7张图片

评估预训练模型的准确率

接下来去官网上下载训练好的模型:

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第8张图片

.将模型放到指定的文件夹:
用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第9张图片
输入以下命令:

Python src\validate_on_lfw.py data\lfw\lfw_160 src\models\20180408-102900

结果:

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第10张图片

人脸对比



1. Facenet可以直接对比2个人脸经过它的网络映射之后的欧式距离;


运行程序为facenet-master\src\compare.py;

选用的是两个不同的人脸,第一张为:

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第11张图片

第二张为:

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第12张图片

运行:

python src\compare.py src\models\20180408-102900 data\lfw\lfw_160\Aaron_Eckhart\Aaron_Eckhart_0001.pngdata\lfw\lfw_160\Aaron_Guiel\Aaron_Guiel_0001.png

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第13张图片

结果如上所述:这两张的距离为1.4144

接下来试验两张人脸的结果:

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第14张图片

选用的是第一张和第二张

用facenet进行人脸检测、人脸识别,数据用的是LFW数据集_第15张图片

这两张图的距离为0.5886,所以相同的人脸的距离越小。你可以设置一个阈值,当两张图片大于一定值时判断他们不是同一个人

你可能感兴趣的:(用facenet进行人脸检测、人脸识别,数据用的是LFW数据集)