1.简介:facenet是基于TensorFlow的人脸识别开源库,有兴趣的同学可以扒扒源代码:https://github.com/davidsandberg/facenet
2.安装和配置facenet
我们先将facenet源代码下载下来:
gitclonehttps://github.com/davidsandberg/facenet.git
在使用facenet前,务必安装下列这些库包:
或者直接移动到facenet目录下,一键安装
pipinstall-rrequirements.txt
3.下载LFW数据集
LFW是由美国马萨诸塞大学阿姆斯特分校计算机视觉实验室整理的。它包含13233张图片,共5749人,其中4096人只有一张图片,1680人的图片多余一张,每张图片尺寸是250x250。
下载地址:http://vis-www.cs.umass.edu/lfw/->Menu->Download->Allimagesasgzippedtarfile
下载完成后,我们将文件解压到facenet/data/lfw_data/lfw目录下(没有的话自己建个目录),在lfw_data目录下新建一个目录lfw_160,用来存放裁剪后图片。
4.对图像进行预处理
因为程序中神经网络使用的是谷歌的“inceptionresnetv1”网络模型,这个模型的输入时160*160的图像,而我们下载的LFW数据集是250*250限像素的图像,所以需要进行图片的预处理。
运行facenet/src/align/align_dataset_mtcnn.py来修改图片尺寸大小,加入下列参数
facenet/data/lfw_data/lfw#输入图像文件夹 facenet/data/lfw_data/lfw_160#输出图像文件夹 --image_size160--margin32--random_order--gpu_memory_fraction0.25#指定裁剪后图像大小(如果不指定,默认的裁剪结果是182*182像素的) |
即
pythonalign_dataset_mtcnn.pyfacenet/data/lfw_data/lfwfacenet/data/lfw_data/lfw_160--image_size160--margin32--random_order--gpu_memory_fraction0.25 |
如果用的是pycharm,可以在RUN->EditConfigurations下添加参数信息,然后运行align_dataset_mtcnn.py文件:
**这里自己运行的时候一直报错提示:Nomodulenamed'align'
将align_dataset_mtcnn.py移动至src文件夹下再运行就不会报错了。
校准后图像大小即变为160x160。
5.评估Google预训练模型在数据集中的准确性
facenet提供了两个预训练模型,分别是基于CASIA-WebFace和VGGFace2人脸库训练的。(由于存储在Google网盘中,需要FQ下载使用)
GitHub地址:https://github.com/davidsandberg/facenet
这里我采用的是CASIA-WebFace预训练模型,有兴趣了解的小伙伴,可以到CASIA-WebFace官网看看:
http://www.cbsr.ia.ac.cn/english/CASIA-WebFace-Database.html
将下载好的预训练文件解压到facenet/src/models目录下:
添加参数
facenet/data/lfw_data/lfw_160facenet/src/models/20180408-102900
运行validate_on_lfw.py文件。
这里我刚开始运行的时候报错:
发现是预训练模型版本太旧,我们在facenet上下载最新的CASIA-WebFace训练库再重新运行即可。
运行结果如下:
可以看到识别精度可以达到97.7%,其识别准确度还是非常不错的。
但是程序运行完以后虽然最终运行结果正确,但是最后却还是报了个错误: _2_input_producer: Skipping cancelled enqueue attempt with queue not closed
原因是主线程已经关闭,但是读取数据入队线程还在执行入队。
由于自己对TensorFlow线程还不是特别了解,暂时还没有解决这个问题。
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。