基于cnn的人脸检测,人脸识别系统数据
首先下载facenet GitHub,facenet网络,然后打开src文件。重要文件基本都在这里。
其中align文件夹下有人脸检测、定位、裁剪。开放对齐
align_dataset_mtcnn.py是一个执行人脸检测然后修剪的程序。
你可以通过打开detect_face.py文件找到这个函数。
可以看出,det1.npy、det2.npy和det3.npy是人脸检测网络中的权重。
安装和配置Facenet环境
这是我的面网解压位置e :hs尹面网-mastersrc
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:hsyinfacenet-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,所以同一个人的脸之间的距离越小。可以设置一个阈值,当两个图像大于某个值时,就可以判断不是同一个人。