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之有容乃大的list(2)
Sep 15 Python
Python读取一个目录下所有目录和文件的方法
Jul 15 Python
利用Celery实现Django博客PV统计功能详解
May 08 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
Django框架多表查询实例分析
Jul 04 Python
Python3中lambda表达式与函数式编程讲解
Jan 14 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
Python实现变声器功能(萝莉音御姐音)
Dec 05 Python
python网络编程之五子棋游戏
May 14 Python
Pycharm安装并配置jupyter notebook的实现
May 18 Python
降低python版本的操作方法
Sep 11 Python
Python截图并保存的具体实例
Jan 14 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结合飞信 免费天气预报短信
2009/05/07 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
PHP速成大法
2015/01/30 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python实现哈希表
2014/02/07 Python
Python中subprocess模块用法实例详解
2015/05/20 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
Python使用requests发送POST请求实例代码
2018/01/25 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
python与js主要区别点总结
2020/09/13 Python
岗位职责的构建方法
2014/02/01 职场文书
中文专业求职信
2014/06/20 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers