人脸识别(Facenet)

FaceNet实现人脸识别----自己训练数据集并测试 FaceNet(A Unified Embedding for Face Recognition and Clustering)是一种基于深度学习的人脸识别技术,能够将人脸图像转化为高维特征向量,并通过计算特征向量之间的距离关系来进行准确的人脸比对和识别。本教程着重在于如何使用FaceNet来训练自己的数据集(以本人识别为例),并进行简单的测试。有关原理在之后课程介绍。使用FaceNet训练自己的数据集要经过以下步骤: 配置环境方面采用keras=2.3.0、mtcnn=0.1.1、sklearn.anac 阅读详情

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

其他每种生物识别方法都需要一些人的配合动作,而人脸识别不需要被动配合,可以自动用在隐蔽的场合,如公安部门监控行动;

当记录一个企图登录的人的生物记录时,只有人脸能更直观,更方便的核查该人的身份;

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

人脸检测(将图片中包含的人脸进行初步定位,以及关键点如眼睛、鼻子、嘴巴等更精细的定位,文章封面即为典型人脸检测结果);

人脸跟踪(视频中跟踪人脸位置变化);

人脸验证(输入两张人脸,判定是否属于同一人);

人脸识别(输入一张人脸,判断其属于人脸数据库全部记录中具体哪一人);

人脸聚类(输入一批人脸,将属于同一人的自动归为一类);


准备工作

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

运行结果如图:

0基础速通facenet人脸识别/牛脸识别项目详细教程 PyCharm创建新项目,从0开始创建facenet模型实现人/牛脸识别 阅读详情

相关推荐

基于FaceNet的人脸识别

人脸识别是一项计算机视觉任务,它根据人脸照片识别和验证人。FaceNet 是谷歌研究人员于 2015 年开发的人脸识别系统,该系统在一系列人脸识别基准数据集上取得了当时最先进的结果。由于模型的多个第三方开源实现和预训练模型的可用性,FaceNet 系统可以被广泛使用。FaceNet 系统可用于从人脸中提取高质量特征,称为人脸嵌入,然后可用于训练人脸识别系统。通过本实验,您将了解如何使用 FaceNet和SVM分类器开发人脸检测系统,以从照片中识别人物。

需要远程指导仿真实验、代码有问题的,请后台私信或者关注公众号 1819

人脸识别FaceNet详解

本文提出一个统一的系统;对于人脸认证(是否同一个人),识别(哪个人)和聚类(在人脸中找出相同的人)。我们的方法基于使用深度卷积网络对每张图像学习一个欧式嵌入。训练网络使得嵌入空间中的L2平方距离直接与人脸相似性相关:属于同一个人的人脸距离小,属于不同人的人脸距离大。人脸验证就是两个嵌入之间距离的阈值问题;人脸识别变为一个K-NN分类问题;人脸聚类可用现成的k-means或者层次聚类。以前基于深度网络人脸识别方法,使用一个分类层[15,17],在已知人脸身份的数据集上训练,然后使用中间的。

4239

快速上手项目1:基于FaceNet的人脸识别项目

快速上手项目1:基于FaceNet的人脸识别项目

weixin_46676835的博客 5583

Facenet实现人脸特征比对-深度学习学习笔记-2

Facenet是谷歌在2015年发表在CVPR上的一种人脸识别算法。输入一张人脸图片通过(Deep Architecture就是传统的CNN)卷积神经网络提取该图片的特征向量(Embedding)对特征向量进行L2标准化得到一个长度固定为128的特征向量计算特征向量与存储的人脸特征向量的距离判断距离是否小于阈值来识别人脸简单来说,Facenet将人脸识别问题转化为了计算特征向量之间距离的问题。

记录我的学习历程 3480

基于facenet_pytorch实现人脸识别

安装完成后C:\Users\Administrator.cache\torch\checkpoints 路径将会生成。

weixin_43102784的博客 1738

【人脸】人脸识别---facenet Tensorflow

人脸相关的任务包括: 1、人脸检测(人脸五官位置检测,用于人脸对齐;人脸关键点检测;) 2、人脸跟踪:在视频中跟踪人脸位置 3、人脸验证:1:1,判断两张图片是不是同一个人 4、人脸识别:1:n,输入一张人脸,判断其属于数据库中的哪个人 5、人脸聚类:输入一批人脸,将属于同一人的自动归为一类 facenet简介: Google工程师Florian Schroff,Dmi...

weixin_41977337的博客 1667

聪明的人脸识别1——Keras 搭建自己的Facenet人脸识别平台

神经网络学习小记录54——keras搭建自己的facenet人脸识别平台学习前言什么是facenet源码下载facenet的实现思路一、预测部分1、主干网络介绍2、BiFPN加强特征提取3、从特征获取预测结果4、预测结果的解码5、在原图上进行绘制二、训练部分1、真实框的处理2、利用处理完的真实框与对应图片的预测结果计算loss训练自己的Efficientdet模型 学习前言 最近又学了我最喜欢的retinaface,可是光有人脸有啥用啊,咱得知道who啊,于是开始了解了一下facenet! 什么是face

Bubbliiiing的学习小课堂 1万+

基于Tensorflow的Facenet 人脸识别实现

参考GitHub地址,相关FaceNet paper ,此paper是Google的facenet原理介绍,本人现在也在进行人脸识别Facenet相关学习,随后会将相关论文解析笔记整理供大家参考。关于FaceNet相关的Tensorflow基本配置请参考我的另外一篇博客here,安装相关的依赖安装Tensorflow here;clone FaceNet 源码 ;安装所需要的python模块  s...

chzylucky的博客 6241

【人脸识别】基于facenet_pytorch实现人脸识别

基于facenet_pytorch判断两张人脸的欧氏距离,从而实现人脸识别。

weixin_45939929的博客 1万+

跑通FaceNet人脸识别

原创:杨其泓 一、前言 FaceNet是一个十分经典的人脸识别模型,并且具有较好的性能,但要实现使用自己的数据进行人脸识别,还需要对模型进行重新训练。本文将介绍跑通一个简单FaceNet的全部流程,以及踩坑记录。 二、方案技术路线 人脸检测:使用 Dlib 中预先训练的模型检测面部; 人脸校准:使用 Dlib 的实时姿势估计与 OpenCV 的仿射变换来尝试使眼睛和下唇在每个图像上出现在相同位置; 卷积网络:使用深度神经网络把人脸图片映射为 128 维单位超球面上的一个点; 分类:

我的博客 3725

【人脸识别】FaceNet详解

论文题目:《FaceNet: A Unified Embedding for Face Recognition and Clustering》 论文地址:FaceNet 1、概述        FaceNet(A Unified Embedding for Face Recognition and Clustering)直接把输入图像变成欧式空间中的特征向量,两个特征向量间的欧式距离就可以用来衡量两者之间的相似度。可以用在人脸验证、识别和

Roaddd的博客 2万+

聪明的人脸识别3——Pytorch 搭建自己的Facenet人脸识别平台

神经网络学习小记录55——Pytorch 搭建自己的facenet人脸识别平台学习前言什么是facenet源码下载facenet的实现思路一、预测部分1、主干网络介绍2、根据特征获得128维特征向量3、l2标准化二、训练部分1、数据集介绍2、LOSS组成训练自己的facenet人脸识别 学习前言 好的还有Pytorch版。 什么是facenet 谷歌人脸检测算法,发表于 CVPR 2015,利用相同人脸在不同角度等姿态的照片下有高内聚性,不同人脸有低耦合性,提出使用 cnn + triplet minin

Bubbliiiing的学习小课堂 5万+

基于facenet的人脸识别

人脸识别流程

reset2021的博客 3703

TensorFlow MTCNN facenet 实现人脸识别

MTCNN用于检测出图片中的人脸,facenet用于识别人脸是谁。 一、整体思路 1 创建被识别目标的样本数据集。 这里我们选用刘翔和周杰伦来作为被识别的对象,因此,选取刘翔和周杰伦来作为基础的样本,提取出两者的数据集 1.1 利用MTCNN检测样本中的人脸,并且标识是l(刘翔) 还是 z(周杰伦) 1.2 利用facenet分别计算二者自己的embedding 并且保存。即样本的数据集...

阳光非宅男的博客 7061

深入探索Facenet人脸识别技术

面部检测是人脸识别技术中的一个关键组成部分,它的主要任务是从图像中定位出人脸区域。面部检测技术随着深度学习技术的发展而取得了显著进步,从最初的基于Haar特征的级联分类器,到后来基于深度卷积神经网络(CNN)的方法,面部检测的准确性和速度都有了质的飞跃。近年来,由Deng团队提出的RetinaFace在面部检测领域引起了广泛关注。RetinaFace集成了多任务学习的策略,旨在同时进行面部检测和关键点定位,从而提高了面部区域特征的提取精度。

weixin_29301059的博客 1398

ROS——无人机ROS仿真包 rotors_simulator 编译教程

文章目录 安装wstool sudo apt install python3-wstool 创建ROS工程 $ mkdir -p ~/UAV/src $ cd ~/UAV/src $ catkin_init_workspace # initialize your catkin workspace $ wstool init 下载源码 git clone git@github.com:ethz-asl/rotors_simulator.git 源码链接: https://github.com/eth

漫长IT路 5863

基于FaceNet的实时人脸识别训练

基于FaceNet的实时人脸识别训练

m0_73122726的博客 2168

BIOS硬件监控实战:如何手动读取IT8738芯片的温度与风扇数据(附代码)

本文深入探讨了如何绕过操作系统和HWMonitor等监控软件,直接通过寄存器级操作读取IT8738超级I/O芯片的硬件监控数据。文章提供了从动态定位EC空间、构建底层读写函数到解码传感器寄存器映射的完整实战指南,并附有C语言代码示例,帮助开发者理解BIOS硬件监控的底层原理,适用于定制硬件开发与故障诊断。

weixin_29192211的博客 109

聪明的人脸识别2——Keras 利用Retinaface+Facenet搭建人脸识别平台

睿智的目标检测50——Keras 利用Retinaface+Facenet搭建人脸识别平台学习前言什么是Retinface和Facenet1、Retinface2、Facenet整体实现代码实现流程一、数据库的初始化二、检测图片的处理1、人脸的截取与对齐2、利用Facenet对矫正后的人脸进行编码3、将实时图片中的人脸特征与数据库中的进行比对4、图片绘制使用Retinaface+Facenet进行人脸识别: 学习前言 我又死了我又死了我又死了! 什么是Retinface和Facenet 1、Retinfa

Bubbliiiing的学习小课堂 1万+

XPe开发初体验(一)XPe概述

XP Embedded是微软Windows Embedded产品线中非常重要的一环,不过比起大名鼎鼎的Windows Embedded CE,XPe显得过于低调了。在接下来的一段时间里,我希望能够用六篇的篇幅来描述一下XPe的整个开发过程。这个系列文章主要是针对有Windows编程经验,但是没有嵌入式开发经验的开发者,提供一些概念和开发过程的初步介绍。XP Embedded是一个基于Windo

aawolf = new Mobile.MVP 1万+

FFTW库安装与使用(3.3.5版本)

FFTW库安装与使用一、FFTW库介绍与下载二、FFTW库安装三、FFTW库测试 一、FFTW库介绍与下载   FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. Johnson 开发。可计算一维或多维实和复数据以及任意规模的DFT,且运行速度比Eigen和opencv自带的FFT库函数快10倍以上。   下载链接:http://www.fftw.org/install/wind

Jhon_ranble的博客 2万+

人脸识别FaceNet+TensorFlow

一、本文目标 利用facenet源码实现从摄像头读取视频,实时检测并识别视频中的人脸。换句话说:把facenet源码中contributed目录下的real_time_face_recognition.py运行起来。 二、需要具备的条件 1、准备好的Tensorflow环境 2、摄像头(可用视频文件替代) 3、准备好的facenet源码并安装依赖包 4、训练好的人脸检测模型 ...

张伟的专栏 2107

Open3D点云数据处理(六):点云、mesh可视化(Visualizer类)

本文介绍了Open3D中Visualizer类可视化几何对象的方法,给出了常用参数解释和代码示例。

孙悟空 3025
上一篇: TensorFlow程序结构
下一篇: 人脸识别笔记
linux_win
博客等级 码龄8年 4粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值