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


Posted in Python onAugust 16, 2019

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 线程还不是特别了解,暂时还没有解决这个问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python计算程序运行时间的方法
Dec 13 Python
Pandas探索之高性能函数eval和query解析
Oct 28 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
使用python实现语音文件的特征提取方法
Jan 09 Python
对IPython交互模式下的退出方法详解
Feb 16 Python
解决python打不开文件(文件不存在)的问题
Feb 18 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
关于Python turtle库使用时坐标的确定方法
Mar 19 Python
python中wheel的用法整理
Jun 15 Python
Python 代码调试技巧示例代码
Aug 11 Python
python将数据插入数据库的代码分享
Aug 16 Python
python和Appium的移动端多设备自动化测试框架
Apr 26 Python
Python Web框架之Django框架Model基础详解
Aug 16 #Python
pycharm配置git(图文教程)
Aug 16 #Python
Django如何实现上传图片功能
Aug 16 #Python
Python如何调用JS文件中的函数
Aug 16 #Python
用Python批量把文件复制到另一个文件夹的实现方法
Aug 16 #Python
Python Web框架之Django框架cookie和session用法分析
Aug 16 #Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 #Python
You might like
深入分析PHP优化及注意事项
2016/07/04 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
JS实现div居中示例
2014/04/17 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
Python正则表达式介绍
2012/08/06 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
详解Python绘图Turtle库
2019/10/12 Python
django中间键重定向实例方法
2019/11/10 Python
python读取ini配置文件过程示范
2019/12/23 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
keras实现多种分类网络的方式
2020/06/11 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
应届毕业生应聘自荐信
2013/12/07 职场文书
企业统计员岗位职责
2013/12/13 职场文书
公司行政经理岗位职责
2013/12/24 职场文书
《恐龙》教学反思
2014/04/27 职场文书
年度评优评先方案
2014/06/03 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
先进工作者事迹材料
2014/12/23 职场文书