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 相关文章推荐
35个Python编程小技巧
Apr 01 Python
简单介绍Python的Tornado框架中的协程异步实现原理
Apr 23 Python
CentOS7.3编译安装Python3.6.2的方法
Jan 22 Python
PyQt5 pyqt多线程操作入门
May 05 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
selenium+python实现自动化登录的方法
Sep 04 Python
Python-opencv 双线性插值实例
Jan 17 Python
django rest framework serializer返回时间自动格式化方法
Mar 31 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 Python
python编写一个会算账的脚本的示例代码
Jun 02 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 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中计算字符串相似度的函数代码
2012/12/29 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
2016/05/17 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
python中append函数用法讲解
2020/12/11 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
教堂婚礼主持词
2014/03/14 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
技术经济专业求职信
2014/09/03 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
公司放假通知范文
2015/04/14 职场文书
2015年导购员工作总结
2015/04/25 职场文书
招商银行收入证明
2015/06/17 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js