人脸检测-人脸对齐-人脸识别原理及方法

目录

1.人脸检测

2 人脸对齐

2.1 人脸对齐参考代码1

2.2 人脸对齐参考代码2

3 人脸识别

3.1 特征提取方法1----分类网络

3.2 特征提取方法2----facenet

3.3 人脸比对


要想做人脸识别,首先需要检测出人脸子图和关键点,然后根据关键点对人脸进行对齐,然后对对齐后的人脸提取人脸特征并进行特征值比对,下面简单介绍下三个过程中的原理。

1.人脸检测

人脸检测就没什么说的了,就是检测出图像中的人脸和关键点,比如我们用yolov5-face做检测得到如下图片,

扫描二维码关注公众号,回复: 13729951 查看本文章

也可以使用 blazeface得到如下结果

当然也可以使用其他方法,比如mtcnn、SCRFD、RetinaFace。但是这些方法的目的都是得到人脸子图和关键点。

2 人脸对齐

要做人脸对齐就需要用到人脸特征点,人脸特征点, 又称为人脸关键点 (face landmark), 是人脸上具有明确语义的坐标点, 如鼻尖, 嘴角, 眼角等. 人脸对齐具体做法是: 利用最小二乘法求解当前人脸图像的关键点与预定义的标准人脸关键点 (通常是由统计得到的) 之间的空间变换矩阵 (一般是相似变换矩阵), 再在人脸图像上进行该空间变换矩阵对应的变换. 人脸对齐后的图像是标准尺寸的, 而且减小了人脸姿态, 尺度和偏移 (想想看, 相似变换矩阵中包含了旋转, 尺度和平移参数) 对人脸识别的影响。

其实人脸对齐可以简单的理解为就是为了把比如歪着的人脸、尺度不正常的人脸、在图像中位置偏移的人脸,都矫正成比较标准的人脸。

2.1 人脸对齐参考代码1

可以使用opencv实现人脸对齐,可以参考

基于Landmark的人脸对齐以及裁剪方法 - horsetail - 博客园        

2.2 人脸对齐参考代码2

人脸对齐的代码在SeetaFace2/FaceRecognizer/seeta/FaceRecognizerPrivate.cpp文件中是有的,可以借鉴,从下图中的mean_shape可以看到前面两个点的y坐标一样说明是两个眼睛,后面两个点的y坐标一样是嘴巴的两个点,中间第三个点是鼻子,这就是标准的人脸关键点。

具体github网址为:https://github.com/seetafaceengine/SeetaFace2

3 人脸识别

3.1 特征提取方法1----分类网络

前面经过了人脸检测及人脸对齐,我们得到了对齐后的人脸子图,这时候我们一般使用一个分类网络提取人脸特征,一般使用分类层的前面一层的feature map作为人脸特征,例如我们可以使用Resnet50网络训练一个128类别的人脸分类网络,然后实际使用时候我们把倒数第二层的128个输出值作为特征向量。

3.2 特征提取方法2----facenet

前面的特征提取方法是训练一个分类模型,然后取倒数第二层作为人脸特征值,这样的方法不够直接和效率低下。不够直接是指希望学习的指定层的特征可以很好的泛化到未知人脸上;效率低是指一般学习的特征维度很高(大于1000维),有的方法对提取的特征进行PCA降维处理,但这只是一个线性变换,可以通过一个网络层很简单的实现出来。
FaceNet是直接利用triplet loss训练模型输出128维的特征向量,triplets是由来自于一人的两张人脸图像和来自于另一个人的第三张图像组成,训练的目的是来自于同一人的人脸对之间的欧式距离要远小于来自于不同人的人脸对之间的欧氏距离。
相关资料介绍参考:

https://github.com/davidsandberg/facenet

https://github.com/timesler/facenet-pytorch

【人脸识别】FaceNet详解_姚路遥遥的博客-CSDN博客_facenet

facenet-pytorch库的简单使用 - 木易123 - 博客园

3.3 人脸比对

前面我们提取了人脸特征,加下来我们要做人脸比对,人脸比对就是把提取到的特征向量和底库中的特征向量进行比对,可以通过余弦距离或欧氏距离的方法求解相似度,得到比对得分,并和阈值进行比较,其中如果是小底库的嵌入式设备,底库可以使用sqlite数据库自己封装一个增删改查以及比对接口。

相关资料参考:

C++求欧氏距离_陈 洪 伟的博客-CSDN博客_c++ 欧式距离

特征值比对代码/计算相似度代码_陈 洪 伟的博客-CSDN博客_代码相似度对比

常用的相似度计算方法----欧式距离、曼哈顿距离、马氏距离、余弦、汉明距离、切比雪夫距离、闵可夫斯基距离、马氏距离_陈 洪 伟的博客-CSDN博客

Python操作sqlite3数据库--增删改查,利用sqlite3实现轻量级图像搜索底库_陈 洪 伟的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/u013171226/article/details/123627357
今日推荐