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内置函数的用法实例教程
Sep 08 Python
Python中实现两个字典(dict)合并的方法
Sep 23 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
分析Python中设计模式之Decorator装饰器模式的要点
Mar 02 Python
pyqt5 获取显示器的分辨率的方法
Jun 18 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
python验证码图片处理(二值化)
Nov 01 Python
pandas中的数据去重处理的实现方法
Feb 10 Python
学习Python列表的基础知识汇总
Mar 10 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
Python 绘制可视化折线图
Jul 22 Python
详解Python魔法方法之描述符类
May 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 获取页面中指定内容的实现类
2014/01/23 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
PHP _construct()函数讲解
2019/02/03 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
2019/05/29 PHP
基于Laravel-admin 后台的自定义页面用法详解
2019/09/30 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
写自已的js类库需要的核心代码
2012/07/16 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
Python中按键来获取指定的值
2019/03/02 Python
python中的print()输出
2019/04/12 Python
详解python 爬取12306验证码
2019/05/10 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
小学家长会邀请函
2014/01/23 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
2015年度党风廉政建设工作情况汇报
2015/01/02 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js