基于cnn的人脸检测,人脸识别系统数据
首先下载facenet GitHub,facenet网络,然后打开src文件。重要文件基本都在这里。
其中align文件夹下有人脸检测、定位、裁剪。开放对齐
align_dataset_mtcnn.py是一个执行人脸检测然后修剪的程序。
你可以通过打开detect_face.py文件找到这个函数。
可以看出,det1.npy、det2.npy和det3.npy是人脸检测网络中的权重。
安装和配置Facenet环境
这是我的面网解压位置e :\hs尹\面网-master\src
setpythonpath=e:\ hs yin \ face net-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 _ mt CNN . py data/lfw/raw data/lfw/lfw _ 160-image _ size 160-margin 32 DD
评估预训练模型的精度
然后去官网下载训练好的模型:
将模型放在指定的文件夹中:输入以下命令:python src \ validate _ on _ lfw . pydata \ lfw \ lfw _ 160 src \ models 2018 04 08-102900结果:
与人脸形成对比
1.Facenet可以直接比较通过其网络映射的人脸的欧氏距离。
可执行文件为facenet-master \ src \ compare . py;
选择两个不同人的脸。第一个如下。
第二个呢?
执行:
python src \ compare . py src \ models \ 2018 04 08-102900数据\ lfw _ lfw _ 160 \ aaron _ eckhart _ Aron _ eckhart meck hart
结果如上。这两块之间的距离是1.4144。接下来,我们测试了两张脸:
第一张和第二张照片被选中。
两张图的距离是0.5886,所以同一个人的脸之间的距离越小。可以设置一个阈值,当两个图像大于某个值时,就可以判断不是同一个人。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。