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 四种数值类型(int,long,float,complex)
Jun 08 Python
python使用mysql的两种使用方式
Mar 07 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
pycharm设置注释颜色的方法
May 23 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
python2和python3在处理字符串上的区别详解
May 29 Python
如何使用Python实现自动化水军评论
Jun 26 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
python 字典访问的三种方法小结
Dec 05 Python
Python项目实战之使用Django框架实现支付宝付款功能
Feb 23 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
ip签名探针
2006/10/09 PHP
用PHP实现维护文件代码
2007/06/14 PHP
PHP爆绝对路径方法收集整理
2012/09/17 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
javascript 新浪背投广告实现代码
2009/07/07 Javascript
javascript处理table表格的代码
2010/12/06 Javascript
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
2016/01/27 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
2019/10/28 jQuery
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
Element el-button 按钮组件的使用详解
2021/02/01 Javascript
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
pandas值替换方法
2018/07/10 Python
Python 打印中文字符的三种方法
2018/08/14 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
Python之pymysql的使用小结
2019/07/01 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
怎么写自荐书范文
2014/02/12 职场文书
解除劳动合同证明书
2014/09/26 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
寒假致家长的一封信
2015/10/10 职场文书