人脸识别是目前应用非常广泛的一种生物识别技术,与其他生物识别技术(指纹识别,掌形识别,眼虹膜识别和声音识别)相比,人脸识别具有以下优势:

  • 其他每种生物识别方法都需要一些人的配合动作,而人脸识别不需要被动配合,可以自动用在隐蔽的场合,如公安部门监控行动;
  • 当记录一个企图登录的人的生物记录时,只有人脸能更直观,更方便的核查该人的身份;

由于与传统的生物识别技术相比,人脸识别具有更为简便、准确、经济及可扩展性良好等众多优势,可广泛应用于安全验证、监控、控制等各个方面。 人脸相关的任务有以下几种:

  • 人脸检测(将图片中包含的人脸进行初步定位,以及关键点如眼睛、鼻子、嘴巴等更精细的定位,文章封面即为典型人脸检测结果);
  • 人脸跟踪(视频中跟踪人脸位置变化);
  • 人脸验证(输入两张人脸,判定是否属于同一人);
  • 人脸识别(输入一张人脸,判断其属于人脸数据库全部记录中具体哪一人);
  • 人脸聚类(输入一批人脸,将属于同一人的自动归为一类);

准备工作

1. 确保已安装TensorFlow;

2. 确保已安装Anaconda集成环境或者在python下安装以下依赖;

3. 更新Sklearn至最新版本,在Anaconda prompt内输入以下命令:

pip install –U scikit-learn

安装界面如下:

下载Facenet源码工程

1. 源码下载地址:https://github.com/davidsandberg/facenet.git

2. 将下载的源码解压,如图所示:

安装和配置Facenet环境

1. 在自己电脑对应的Anaconda3\Lib\site-packages目录下,新建facenet文件夹,本人的目录如下:

2. 然后,将facenet-master\src目录下的全部文件复制到上面新建的facenet文件夹内;

facenet-master\src目录下的全部文件信息如下:

复制到facenet目录内,如下:

3. 最后,在Anaconda Prompt内输入import facenet,不会报错即可,如下:

下载LFW数据集

1. LFW数据集是由美国马萨诸塞大学阿姆斯特分校计算机视觉实验室整理的人脸检测数据集,是评估人脸识别算法效果的公开测试数据集,全称为带标签的自然人脸数据库(Labeled Faces in the Wild);

2. LFW数据库内每张图片命名方式为“lfw/name/name_xxxx.jpg”,这里“xxxx”是前面补零的四位图片编号。例如,前美国总统乔治•W•布什的第10张图片为“lfw/George_W_Bush/George_W_Bush_0010.jpg”。

3. LFW数据库 总共有 13233 张 JPEG 格式图片,属于 5749 个不同人。每张图片尺寸都是 250x250;

4. 数据库下载地址:http://vis-www.cs.umass.edu/lfw/lfw.tgz

5. 下载完成后,把数据集解压到facenet\data\lfw\raw下面,如下:

对LFW数据集进行预处理

1. 在下载的数据集内新建一个空文件夹,命名为“lfw_160”;

原图像大小为250*250,如下图:

2. 我们需要将待检测所使用的数据集校准为和预训练模型所使用的数据集大小一致(160*160),转换后的数据集存储在lfw_160文件夹内;

3. 设置环境变量,在计算机-->属性-->高级系统设置-->环境变量 中,新建PYTHONPATH,键入

C:\ProgramFiles\Anaconda3\Lib\site-packages\facenet,如图所示;

4. 在cmd命令行下面,输入set,查看设置情况,如下:

5. 打开Anaconda Prompt切换到facenet目录,输入如下命令进行校准:

python src\align\align_dataset_mtcnn.py --help

6. 再输入如下命令:

python src\align\align_dataset_mtcnn.py data/lfw/rawdata/lfw/lfw_160 --image_size 160 --margin 32 --random_order --gpu_memory_fraction0.25

经过20-30分钟,图片转换结束,如下:

7. 校准后,发现图像大小变成160*160;

下载训练好的网络模型

1. facenet提供了两个预训练模型,分别是基于CASIA-WebFace和MS-Celeb-1M人脸库训练的,如下:

2. 第一个模型20170511-185253下载地址:

https://drive.google.com/file/d/0B5MzpY9kBtDVOTVnU3NIaUdySFE/edit

第二个模型20170512-110547下载地址:

https://drive.google.com/file/d/0B5MzpY9kBtDVZ2RpVDYwWmxoSUk/edit

3. 本人使用的是基于数据集CASIA-WebFace采用Inception ResNet v1神经网络结构训练好的模型。模型存储在Google网盘,需要翻墙。推荐大家用Lantern;

4. 把下载的文件解压到src\models\目录下面,如下所示:

5. 程序也下载了,测试数据集LFW也有了,模型也有了,接下来就是评估模型的准确率;

评估预训练模型的准确率

1. 在cmd命令行或者Anaconda Propmt下定位到facenet文件夹下;

2. 输入以下命令:

Python src\validate_on_lfw.py data\lfw\lfw_160 src\models\20170511-185252\20170511-185252

预测中,结果如图:

人脸对比

1. Facenet可以直接对比2个人脸经过它的网络映射之后的欧式距离;

运行程序为facenet-master\src\compare.py;

2. 在compare.py所在目录下放入要对比的人脸图像43.jpg和44.jpg(完全不同的2人脸图);

3. 在Anaconda Prompt窗口使用cd进到compare.py所在路径;

4. 输入如下命令:

python compare.py models\20170511-185253\20170511-185253 43.jpg 44.jpg

左图为43.jpg,右图为44.jpg:

 

运行结果如下:

5. 从LFW数据集内随机选取同一人的2人脸图;

复制到与compare.py同级的目录下:

6. 在Anaconda Prompt内输入如下命令:

python compare.py models\20170511-185253\20170511-185253 Cate_Blanchett_0001.png  Cate_Blanchett_0002.png

运行结果如图:

人脸识别(Facenet)相关推荐

  1. 人脸检测MTCNN和人脸识别Facenet(附源码)

    原文链接:人脸检测MTCNN和人脸识别Facenet(附源码) 在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第九节.人脸检测之Haa ...

  2. 手把手教人脸识别Facenet实现

    在实现人脸检测mtcnn和人脸识别facenet时,遇到很多坑,记录解决方法,给其他人一点启发. 一.人脸检测mtcnn和人脸识别facenet的具体介绍 参考博客https://www.cnblog ...

  3. (转)第三十七节、人脸检测MTCNN和人脸识别Facenet(附源码)

    http://www.cnblogs.com/zyly/p/9703614.html 在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第 ...

  4. 【论文笔记】—人脸识别—FaceNet—2015-CVPR

    论文介绍  FaceNet用到了两个网络,分别是ZFNet和 GoogleNet(Inception V1).FaceNet是直接利用triplet loss训练模型(输入图像,输出欧式空间中的)12 ...

  5. 利用MTCNN和FaceNet实现人脸检测和人脸识别 | CSDN博文精选

    作者 | pan_jinquan 来源 | CSDN博文精选 (*点击阅读原文,查看作者更多文章) 人脸检测和人脸识别技术算是目前人工智能方面应用最成熟的技术了.本博客将利用MTCNN和FaceNet ...

  6. Centerface + Facenet实现视频人脸识别(附代码)

    Centerface + Facenet实现视频人脸识别 Facenet的pytorch版本:GitHub地址:https://github.com/timesler/facenet-pytorch ...

  7. (转)利用MTCNN和facenet实现人脸检测和人脸识别

    https://blog.csdn.net/guyuealian/article/details/84896733 人脸检测和人脸识别技术算是目前人工智能方面应用最成熟的技术了.本博客将利用mtcnn ...

  8. 利用MTCNN和facenet实现人脸检测和人脸识别

    利用MTCNN和facenet实现人脸检测和人脸识别 人脸检测和人脸识别技术算是目前人工智能方面应用最成熟的技术了.本博客将利用mtcnn和faceNet搭建一个实现人脸检测和人脸识别的系统.基本思路 ...

  9. MTCNN人脸检测与对齐和FaceNet人脸识别

    一 MTCNN算法结构 MTCNN算法是一种基于深度学习的人脸检测和人脸对齐方法,它可以同时完成人脸检测和人脸对齐的任务,相比于传统的算法,它的性能更好,检测速度更快. MTCNN算法包含三个子网络: ...

  10. 如何在 Keras 中使用 FaceNet 开发人脸识别系统

    https://www.infoq.cn/article/4wT4mNvKlVvEQZR-JXmp Keras 是一个用 Python 编写的高级神经网络 API,能够以 TensorFlow.CNT ...

最新文章

  1. 【Docker】Ubuntu18.04国内源安装Docker-准备工作(一)
  2. tum robotics
  3. python使用openCV加载图像、并将BGR格式转换成HSV格式、定义HSV格式中需要分离颜色的掩码(掩模)区间(mask)、并使用mask信息进行颜色分离、BGR格式的图像转化为RGB、并可视化
  4. C++_pointer-like classes,function-like classes
  5. KeyedVectors python 从词向量文件中快速生成{词:词向量}
  6. .NET常用功能和代码[总结与收藏]
  7. 微信PC版近期更新的几个功能,你都会用吗?
  8. MVC5中Model层开发数据注解
  9. Visual C++ 6.0下载安装及编写第一个C程序
  10. php图书借阅管理系统前台,php图书馆图书借阅管理系统
  11. 怎样给word插入页码,点击进来有惊喜
  12. MySql基础篇学习笔记
  13. 利用栈实现中缀表达式转前缀表达式
  14. Linux 安装 rar 解压
  15. Python 写入csv中文乱码问题
  16. DirectUI学习笔记(1)
  17. java 限制输入两位数_Java 控制数字输入、控制输入长度的方法 | 学步园
  18. windows2008修改3389端口
  19. 大气污染扩散模型Calpuff
  20. 华硕、技嘉驱动程序曝权限提升、代码执行漏洞

热门文章

  1. MySQL异构同步_详解MySQL数据库异构数据同步
  2. 关于 Windows 10 如何扩展分区与合并分区
  3. Linux信号处理简析
  4. IOS锁屏状态播放音乐时显示专辑信息和图片
  5. 请编写函数实现自然底数 e=2.718281828
  6. 英特尔45nm生产良率已达90%
  7. 米的换算单位和公式_小学数学单位换算公式大全.doc
  8. ExpandableListView 实现评价回复功能
  9. Java如何设置word中某段文字的字体/段落样式
  10. JeeSite4 一些前端资料 - 来自作者ThinkGem