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中MYSQLdb出现乱码的解决方法
Oct 11 Python
python通过BF算法实现关键词匹配的方法
Mar 13 Python
python获取交互式ssh shell的方法
Feb 14 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
详解Python中的format格式化函数的使用方法
Nov 20 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
详解Python 重学requests发起请求的基本方式
Feb 07 Python
Python pip install如何修改默认下载路径
Apr 29 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
Flask处理Web表单的实现方法
Jan 31 Python
flask框架中的cookie和session使用
Jan 31 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+javascript的日历控件
2009/11/19 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
Yii2单元测试用法示例
2016/11/12 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
详解jenkins自动化部署vue
2019/05/14 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
python实现简单的计时器功能函数
2015/03/14 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
Python unittest框架操作实例解析
2020/04/13 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
安踏官方商城:anta.cn
2019/12/16 全球购物
升旗仪式主持词
2014/03/19 职场文书
2014年学习部工作总结
2014/11/12 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫
分享python函数常见关键字
2022/04/26 Python