人脸识别(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

红外协议 IR NEC 协议深度解析-简单易懂协议详解

1. 协议特征 使用双向编码(又称曼彻斯特编码); 使用38K载波对编码后的波形进行调制; 位时间 1.12ms 或 2.25ms 2. 调制 定义脉冲560µS为脉冲基本宽度T; 根据脉冲时间长短来解码。推荐载波占空比为1/3至1/4: (1) Logic “1” 位宽为2.25ms,脉冲时间560us(T + 3T); (2) Logic “0” 位宽为1.12ms,脉冲时间560us(T + T)。 (3 ) 重复码: 位宽为11.25ms,脉冲时间9ms(16T + 4T)。 3. 协议

代码打工人的博客 1万+

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

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

m0_73122726的博客 2168

R语言实战:5分钟搞定相加交互效应分析(逻辑回归/Cox回归/GLMM/GEE全支持)

本文详细介绍了如何利用R语言中的`scitable`包快速实现相加交互效应分析,支持逻辑回归、Cox回归、GLMM和GEE等多种模型。通过自动化计算RERI、AP和SI等指标,大幅提升临床研究和流行病学分析的效率与准确性,特别适合处理多因素联合作用的复杂场景。

fanta的博客 669

聪明的人脸识别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万+

【超详细】数据分析笔试题分享,可以收藏后仔细阅读_数据分析岗位笔试题目

这种做法是最精确的做法,保留了所有的信息,也未添加任何额外信息,若预处理时把所有的变量都这样处理,会大大增加数据的维度。15、在某座城市出现了某种流行病,且已知某座城市男女人数相同,男性患该病的概率为5%,女性为0.25%,现已知该城市的小明得了此病,请问小明为男性的概率是() B。D项,使用方差作为特征评分标准,如果某个特征的取值差异不大,通常认为该特征对区分样本的贡献度不大,因此在构造特征过程中去掉方差小于阈值的特征。LTV,用户生命周期价值,是产品从用户获取到流失所得到的全部收益的总和。

2401_89824744的博客 948

手把手教你用Python处理MAHNOB-HCI多模态数据集(含脑电EEG/眼动/视频数据同步实战)

本文详细介绍了如何使用Python处理MAHNOB-HCI多模态数据集,涵盖脑电(EEG)、眼动追踪和视频数据的同步解析与对齐。通过MNE-Python、pandas和OpenCV等工具,实现从BDF、TSV到XML格式的高效处理,解决时间轴对齐难题,助力情感计算与人机交互研究。

weixin_30998797的博客 367

人脸识别FaceNet+TensorFlow

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

张伟的专栏 2107

全志T113s3主线linux开发(0)--基础准备

嵌入式Linux设备的启动大概是三步:1)启动芯片+内存:常见的是Uboot,不过全志的Uboot主线对SPI NAND 不太友好,用TF卡就方便。对于T113S芯片,推荐使用Awboot,简陋但快速。开发阶段用这个就方便好多,对SPINAND支持也方便。2)启动linux内核:主线内核以下通篇都用6.13以上的内核。对比tina5.0还在用5.4 ,主要是性能、安全上有变化。6.0以上内核在devicetree的编写具体格式上有了变化,网上大量tina5.0和5.4内核的编写方式不适用。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值