Python Facenet人脸识别实战:从环境配置到LFW数据集评估

Oliver
Oliver
发布时间:2026-10-13| 4人浏览过
原创

本文详细解析基于TensorFlow的Facenet人脸识别库的完整测试流程。内容涵盖源码下载、依赖安装、LFW数据集的获取与160x160图像预处理,以及使用CASIA-WebFace预训练模型在LFW数据集上的精度验证。文中还记录了运行过程中遇到的模块导入错误、模型版本兼容性问题及线程报错,并提供了相应的解决方案,帮助开发者快速上手Facenet并进行本地部署测试。

Facenet简介与源码获取

Facenet是一个基于TensorFlow构建的人脸识别开源工具库。对于希望深入理解其内部机制的开发者,建议查阅其源代码以获取更多信息:

https://github.com/davidsandberg/facenet

环境安装与配置

接下来,我们需要完成Facenet的环境安装与配置工作。

首先,通过Git命令将Facenet的源代码克隆到本地:

git clone https://github.com/davidsandberg/facenet.git

在正式使用Facenet之前,必须确保已安装其依赖的所有库文件。

或者,你可以直接进入facenet目录,执行一键安装命令来自动处理依赖关系。

LFW数据集下载与预处理


pip install -r requirements.txt

第三步是获取LFW(Labeled Faces in the Wild)数据集。

LFW数据集由美国马萨诸塞大学阿默斯特分校计算机视觉实验室整理发布。该数据集共包含13233张人脸图片,涉及5749个身份。其中,4096人仅有一张图片,1680人有多张图片,每张图片的尺寸均为250x250像素。

下载地址为:http://vis-www.cs.umass.edu/lfw/,导航至Menu->Download->All images as gzipped tar file即可下载。

下载完成后,将压缩包解压至facenet/data/lfw_data/lfw目录。若该目录不存在,请手动创建。此外,在lfw_data目录下新建一个名为lfw_160的目录,用于存放后续裁剪处理后的图片。

第四步是对图像数据进行预处理。

由于Facenet中使用的神经网络模型为谷歌的“inception resnet v1”,该模型要求输入图像尺寸为160x160像素。而我们下载的LFW数据集图片尺寸为250x250像素,因此必须进行尺寸调整与预处理。

运行facenet/src/align/align_dataset_mtcnn.py脚本以调整图片尺寸,并添加相应的运行参数。


facenet/data/lfw_data/lfw                #输入图像文件夹
facenet/data/lfw_data/lfw_160               #输出图像文件夹
--image_size 160 --margin 32 --random_order--gpu_memory_fraction 0.25      #指定裁剪后图像大小(如果不指定,默认的裁剪结果是182*182像素的)

具体参数配置如下:


python align_dataset_mtcnn.py facenet/data/lfw_data/lfw facenet/data/lfw_data/lfw_160 --image_size 160 --margin 32 --random_order--gpu_memory_fraction 0.25 

如果使用PyCharm作为开发环境,可以在RUN -> Edit Configurations中添加上述参数信息,然后运行align_dataset_mtcnn.py文件。

**注意:在自行运行过程中,可能会遇到“No module named 'align'”的错误提示。**

解决方法是将align_dataset_mtcnn.py文件移动至src文件夹下,然后再执行运行操作,即可避免该报错。

经过校准处理后,图像尺寸将变为160 x 160像素。

预训练模型评估与问题排查

第五步是使用Google提供的预训练模型在LFW数据集上评估准确性。

Facenet提供了两个预训练模型,分别基于CASIA-WebFace和VGGFace2人脸库训练而成。(注:由于模型存储在Google网盘中,下载时需要具备相应的网络条件。)

GitHub项目地址:https://github.com/davidsandberg/facenet

本文示例采用基于CASIA-WebFace的预训练模型。有兴趣深入了解该数据集的读者,可访问CASIA-WebFace官网:

http://www.cbsr.ia.ac.cn/english/CASIA-WebFace-Database.html

将下载好的预训练模型文件解压至facenet/src/models目录下。

运行validate_on_lfw.py文件前,需添加相应的路径参数。


facenet/data/lfw_data/lfw_160 facenet/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的线程机制尚不完全熟悉,目前暂未找到彻底解决该报错的方法。

以上就是本文的全部内容,希望对各位的学习有所帮助,也欢迎大家继续支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。