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中标准库OS的常用方法总结大全
Jul 19 Python
python中map()函数的使用方法示例
Sep 29 Python
python实现读取excel写入mysql的小工具详解
Nov 20 Python
Flask实现图片的上传、下载及展示示例代码
Aug 03 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
python for循环输入一个矩阵的实例
Nov 14 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 Python
Python打包exe时各种异常处理方案总结
May 18 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
Jun 11 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
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
DWR Ext 加载数据
2009/03/22 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
[20:30]职业巡回赛回顾
2018/08/09 DOTA
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
使用python实现knn算法
2017/12/20 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
python3 线性回归验证方法
2019/07/09 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
对python中各个response的使用说明
2020/03/28 Python
西班牙手机之家:Phone House
2018/10/18 全球购物
影子教师研修方案
2014/06/14 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
居住证明范文
2015/06/17 职场文书
付款证明格式范文
2015/06/19 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL