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使用代理抓取网站图片(多线程)
Mar 14 Python
Python中函数的多种格式和使用实例及小技巧
Apr 13 Python
Python使用win32 COM实现Excel的写入与保存功能示例
May 03 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
python enumerate内置函数用法总结
Jan 07 Python
TensorBoard 计算图的查看方式
Feb 15 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
tensorflow常用函数API介绍
Apr 19 Python
通过Python实现Payload分离免杀过程详解
Jul 13 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 Python
浅析Django接口版本控制
Jun 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下载远程文件类(支持断点续传)
2008/11/14 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
Bootstrap table使用方法详细介绍
2016/12/09 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
Python中字典的基本知识初步介绍
2015/05/21 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
Python读取YUV文件,并显示的方法
2018/12/04 Python
Python 元组操作总结
2019/09/18 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
李敖北大演讲稿
2014/05/24 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
深入理解go缓存库freecache的使用
2022/02/15 Golang