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中的Cookie模块使用
Jul 06 Python
python用模块zlib压缩与解压字符串和文件的方法
Dec 16 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
python实现感知器算法详解
Dec 19 Python
python关于矩阵重复赋值覆盖问题的解决方法
Jul 19 Python
tensorflow 只恢复部分模型参数的实例
Jan 06 Python
Django如何使用redis作为缓存
May 21 Python
Python如何爬取qq音乐歌词到本地
Jun 01 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 Python
python利用opencv保存、播放视频
Nov 02 Python
python3实现Dijkstra算法最短路径的实现
May 12 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和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
python分割文件的常用方法
2014/11/01 Python
python入门教程之识别验证码
2017/03/04 Python
python difflib模块示例讲解
2017/09/13 Python
对Python中range()函数和list的比较
2018/04/19 Python
django反向解析和正向解析的方式
2018/06/05 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
在django中自定义字段Field详解
2019/12/03 Python
使用python-pptx包批量修改ppt格式的实现
2020/02/14 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
简单叙述一下MYSQL的优化
2016/05/09 面试题
房屋买卖协议书范本
2014/04/10 职场文书
师范生小学见习总结
2015/06/23 职场文书
节水宣传标语口号
2015/12/26 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python