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在命令行下使用google翻译(带语音)
Jan 16 Python
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
Python加pyGame实现的简单拼图游戏实例
May 15 Python
Python3实现从文件中读取指定行的方法
May 22 Python
Python 3.x 新特性及10大变化
Jun 12 Python
Python中max函数用法实例分析
Jul 17 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 Python
python xlsxwriter库生成图表的应用示例
Mar 16 Python
CentOS 7 安装python3.7.1的方法及注意事项
Nov 01 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 Python
Python文件操作函数用法实例详解
Dec 24 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
Feb 18 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编程实现获取excel文档内容的代码实例
2011/06/28 PHP
php生成rss类用法实例
2015/04/14 PHP
Smarty3配置及入门语法
2017/02/22 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
JavaScript Accessor实现说明
2010/12/06 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
详解cordova打包成webapp的方法
2017/10/18 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
Python新手入门最容易犯的错误总结
2017/04/24 Python
python中requests和https使用简单示例
2018/01/18 Python
一道python走迷宫算法题
2018/01/22 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
python爬虫实现中英翻译词典
2019/06/25 Python
Django实现基于类的分页功能
2019/10/31 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
大学生社会实践评语
2014/04/25 职场文书
学生保证书范文
2014/04/28 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
2015年仓库工作总结
2015/04/09 职场文书
如何拟写通知正文?
2019/04/02 职场文书
如何利用pygame实现打飞机小游戏
2021/05/30 Python
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB