Python facenet进行人脸识别测试过程解析

作者:希希里之海 时间:2021-03-27 14:24:04 

1.简介:facenet 是基于 TensorFlow 的人脸识别开源库,有兴趣的同学可以扒扒源代码:

https://github.com/davidsandberg/facenet

2.安装和配置 facenet

我们先将 facenet 源代码下载下来:

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

在使用 facenet 前,务必安装下列这些库包:

Python facenet进行人脸识别测试过程解析

或者直接移动到 facenet 目录下,一键安装


pip install -r requirements.txt

3.下载 LFW 数据集

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,用来存放裁剪后图片。

4.对图像进行预处理

因为程序中神经网络使用的是谷歌的“inception resnet v1”网络模型,这个模型的输入时160*160的图像,而我们下载的LFW数据集是250*250限像素的图像,所以需要进行图片的预处理。

运行 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 文件:

Python facenet进行人脸识别测试过程解析

**这里自己运行的时候一直报错提示:No module named 'align'

将 align_dataset_mtcnn.py 移动至 src 文件夹下再运行就不会报错了。

校准后图像大小即变为160 x 160 。

Python facenet进行人脸识别测试过程解析

5.评估 Google 预训练模型在数据集中的准确性

facenet提供了两个预训练模型,分别是基于CASIA-WebFace和 VGGFace2人脸库训练的。(由于存储在 Google 网盘中,需要 FQ 下载使用)

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

Python facenet进行人脸识别测试过程解析

这里我采用的是 CASIA-WebFace 预训练模型,有兴趣了解的小伙伴,可以到CASIA-WebFace 官网看看:

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

将下载好的预训练文件解压到 facenet/src/models目录下:

添加参数


facenet/data/lfw_data/lfw_160 facenet/src/models/20180408-102900

运行 validate_on_lfw.py 文件。

这里我刚开始运行的时候报错:

Python facenet进行人脸识别测试过程解析

发现是预训练模型版本太旧,我们在 facenet 上下载最新的CASIA-WebFace 训练库再重新运行即可。

运行结果如下:

Python facenet进行人脸识别测试过程解析

可以看到识别精度可以达到 97.7%,其识别准确度还是非常不错的。

但是程序运行完以后虽然最终运行结果正确,但是最后却还是报了个错误:

_2_input_producer: Skipping cancelled enqueue attempt with queue not closed

Python facenet进行人脸识别测试过程解析

原因是主线程已经关闭,但是读取数据入队线程还在执行入队。

由于自己对 TensorFlow 线程还不是特别了解,暂时还没有解决这个问题。

来源:https://www.cnblogs.com/weixuqin/p/9046225.html

标签:python,facenet,人脸,识别,测试
0
投稿

猜你喜欢

  • 利用Opencv中Houghline方法实现直线检测

    2023-09-07 12:40:39
  • python交互式图形编程实例(三)

    2021-10-10 17:34:39
  • 如何将Python列表转换为字符串

    2023-11-02 12:54:27
  • Python基于pygame模块播放MP3的方法示例

    2023-09-22 12:33:19
  • Python利用arcpy模块实现栅格的创建与拼接

    2021-10-07 22:39:37
  • mysql 获取昨天日期、今天日期、明天日期以及前一个小时和后一个小时的时间

    2024-01-24 08:21:54
  • Python3如何在服务器打印资产信息

    2023-11-15 08:03:45
  • Oracle9i在Win2k环境下的完全卸载

    2010-07-28 13:03:00
  • Python 数据库操作 SQLAlchemy的示例代码

    2024-01-28 04:42:28
  • 详解Python编程中time模块的使用

    2023-08-29 16:57:08
  • Python爬虫抓取手机APP的传输数据

    2021-10-04 03:26:51
  • python抓取并保存html页面时乱码问题的解决方法

    2022-06-06 21:41:40
  • 详解Python利用configparser对配置文件进行读写操作

    2022-08-02 22:24:38
  • GO中 分组声明与array, slice, map函数

    2024-04-30 10:02:54
  • MYSQL复杂查询练习题以及答案大全(难度适中)

    2024-01-12 14:54:45
  • PHP程序员玩转Linux系列 备份还原MySQL

    2023-11-15 07:39:28
  • volatile保证可见性及重排序方法

    2022-07-22 03:14:59
  • Python常用数据结构和公共方法技巧总结

    2021-10-18 06:02:01
  • MySQL数据库开发的36条原则(小结)

    2024-01-23 23:34:48
  • Go语言中嵌入C语言的方法

    2024-04-25 15:05:50
  • asp之家 网络编程 m.aspxhome.com