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之??碌某?? target=
Sep 12 Python
利用Python绘制MySQL数据图实现数据可视化
Mar 30 Python
Python制作刷网页流量工具
Apr 23 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
Linux下Python安装完成后使用pip命令的详细教程
Nov 22 Python
对python产生随机的二维数组实例详解
Dec 13 Python
python制作抖音代码舞
Apr 07 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
Python实现把类当做字典来访问
Dec 16 Python
python如何提取英语pdf内容并翻译
Mar 03 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
Jul 01 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
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
13个PHP函数超实用
2015/10/21 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
Python是编译运行的验证方法
2015/01/30 Python
对Python中的@classmethod用法详解
2018/04/21 Python
Python双向循环链表实现方法分析
2018/07/30 Python
Python对切片命名的实现方法
2018/10/16 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
Python使用configparser读取ini配置文件
2020/05/25 Python
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
学习雷锋倡议书
2014/04/15 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
公司酒会致辞
2015/07/30 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
Python机器学习之基础概述
2021/05/19 Python
js实现自动锁屏功能
2021/06/02 Javascript
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
mysql如何能有效防止删库跑路
2021/10/05 MySQL
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis
MySQL查询日期时间
2022/05/15 MySQL