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

本文介绍了使用facenet进行人脸识别的步骤,包括人脸检测、预训练模型下载、依赖安装、人脸对比、数据准备和图像预处理,以及如何实现基于facenet的实时人脸识别项目。facenet模型将人脸映射到欧几里得空间,通过计算特征距离进行人脸识别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

人脸相关的任务包括:

1、人脸检测(人脸五官位置检测,用于人脸对齐;人脸关键点检测;)

2、人脸跟踪:在视频中跟踪人脸位置

3、人脸验证:1:1,判断两张图片是不是同一个人

4、人脸识别:1:n,输入一张人脸,判断其属于数据库中的哪个人

5、人脸聚类:输入一批人脸,将属于同一人的自动归为一类

facenet简介:

       Google工程师Florian Schroff,Dmitry Kalenichenko,James Philbin提出了人脸识别FaceNet模型,该模型没有用传统的softmax的方式去进行分类学习,而是抽取其中某一层作为特征,学习一个从图像到欧式空间的编码方法,然后基于这个编码再做人脸识别、人脸验证和人脸聚类等。所以FacceNet模型学习并输出的是脸部的特征表示,不同人的面部特征表示是不同的,通过计算两个面部特征的距离,来达到不同面部分类的目的。当人脸特征距离小于1.06可看作是同一个人。
       使用FaceNet可以使用已经训练好的模型,也可以自己训练模型。Facenet模型是一个通用的系统,采用CNN神经网络将人脸彩色图像或者灰度图像编码(embedings)为128维或者512维的数据,此数据表征了此人脸的特征,并映射到的欧几里得空间,我们可以根据两幅人像的欧几里得距离去判断两个人像的相似程度。使用FaceNet可以使用已经训练好的模型,也可以自己训练模型。Facenet模型是一个通用的系统,采用CNN神经网络将人脸图像映射到128维的欧几里得空间,我们可以根据两幅人像的欧几里得距离去判断两个人像的相似程度。

         人脸对齐使用的是基于深度学习方法的mtcnn人脸检测,2016年Kaipeng Zhang, Zhanpeng Zhang, Zhifeng Li, Yu Qiao提出了人脸检测MTCNN(Multi-task Cascaded Convolutional Net works )模型,MTCNN模型流程如下:

利用开源的人脸识别工程facenet,迁移训练自己的模型:

First step:下载facenet源码

git clone https://github.com/davidsandberg/facenet.git

Second step:下载预训练模型

作者提供了两个预训练模型,分别是基于CASIA-WebFace和VGGFace2的人脸数据库,如果下载需要翻墙到谷歌网盘才可以下载,我下载了其中一个20180402-114759模型,后续再分享网盘~

Third step:安装依赖

pip install -r requirement.txt

依赖包包括如下:

tensorflow == 1.7
scipy
scikit-learn
opencv-python
h5py
matplotlib
pillow
requests
psutil

Forth step:运行人脸对比的程序

facenet计算的是图片中的两个人脸经过facenet的网络映射之后的欧氏距离

1、cd facenet/src目录下,即compare.py的目录下,对比1.jpg和2.jpg

2、运行compare.py文件

python compare.py 20180402-114759 1.jpg 2.jpg

3、运行结果如下:

对比图像1   对比图像2  

FacceNet模型学习并输出的是脸部的特征表示,不同人的面部特征表示是不同的,通过计算两个面部特征的距离,来达到不同面部分类的目的。当人脸特征距离小于1.06可看作是同一个人。

Fifth step:准备数据&图像预处理

1、要训练自己的模型,需要自己采集到数据。自己准备的数据要满足如下的格式:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值