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

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


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


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

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


可以发现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文件夹



遇到一个问题就是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是生成图片的位置。



评估预训练模型的准确率

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


.将模型放到指定的文件夹:
输入以下命令:

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

结果:

人脸对比



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


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

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


第二张为:


运行:

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


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

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


选用的是第一张和第二张


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

  • 2
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值