Flow
概念理解:什么是人脸识别?
4特点
- 便捷性。人脸是生物特征,不需要携带类似身份证的东西
- 非强制性。识别的过程甚至不需要对象的配合,只要拍摄到人脸就可以进行识别,例如安防领域就是如此。
- 非接触性。不需要跟设备进行接触,相比指纹更加安全一些。
- 并行处理。一张照片里有多个人脸时可以一起处理,不像指纹和虹膜,需要一个一个来。
人脸识别的 4 个步骤
人脸识别的过程中有4个关键的步骤:
- 人脸检测
- 人脸对齐
- 人脸编码
- 人脸匹配
人脸检测
常用api: Yolo > Dlib > cv2
人脸检测的目的是寻找图片中人脸的位置。当发现有人脸出现在图片中时,不管这个脸是谁,都会标记出人脸的坐标信息,或者将人脸切割出来。
可以使用方向梯度直方图(HOG)来检测人脸位置。先将图片灰度化,接着计算图像中像素的梯度。通过将图像转变成HOG形式,就可以获得人脸位置。
人脸对齐
人脸对齐是将不同角度的人脸图像对齐成同一种标准的形状。
先定位人脸上的特征点,然后通过几何变换(仿射、旋转、缩放),使各个特征点对齐(将眼睛、嘴等部位移到相同位置)。
人脸编码
人脸图像的像素值会被转换成紧凑且可判别的特征向量,这也被称为模板(template)。理想情况下,同一个主体的所有人脸都应该映射到相似的特征向量。
人脸匹配
在人脸匹配构建模块中,两个模板会进行比较,从而得到一个相似度分数,该分数给出了两者属于同一个主体的可能性。
人脸识别的 5 个难点
- 头部姿势
- 年龄
- 遮挡
- 光照条件
- 人脸表情
一文看懂人脸识别-4个特点-4个实现步骤-5个难点-算法发展轨迹
人脸识别
1.人脸识别的相关概念
人脸识别(Facial Recognition),即通过视频采集设备获取用户的面部图像,再利用核心的算法对其脸部的五官位置、脸型和角度进行计算分析,进而和自身数据库里已有的范本进行比对,从而判断出用户的真实身份.人脸识别算法,在检测到人脸并定位面部关键特征点之后,主要的人脸区域就可以被裁剪出来,经过预处理之后,馈入后端的识别算法。识别算法要完成人脸特征的提取,并与库存的已知人脸进行比对,完成最终的分类
2、人脸验证
人脸验证做的是1:1的比对,其身份验证模式本质上是计算机对当前人脸与人像数据库进行快速人脸比对,并得出是否匹配的过程,可以简单理解为证明你就是你。就是我们先告诉人脸识别系统,我是张三,然后用来验证站在机器面前的“我”到底是不是张三。
这种模式最常见的应用场景便是人脸解锁,终端设备(如手机)只需将用户事先注册的照片与临场采集的照片做对比,判断是否为同一人,即可完成身份验证.1:1作为一种静态比对,一般在金融、信息安全领域中应用较多。例如在高速路、机场安检时,受检人员手持身份证等证件,通过检查通道,同时对受检人员的外貌及身份证信息进行识别,此过程就是典型的1:1模式的人脸识别。
1,face++(0.9950 );2,DeepFace(0.9735 );3,FR+FCN(0.9645 );4,DeepID(0.9745 );5,FaceNet(0.9963 );6, baidu的方法(0.9977 );7,pose+shape+expression augmentation(0.9807);8,CNN-3DMM estimation(0.9235 )
第一类:face++,DeepFace,DeepID,FaceNet和baidu。他们方法的核心是搜集大数据,通过更多更全的数据集让模型学会去识别人脸的多样性。这类方法适合百度/腾讯/谷歌等大企业,未来可以搜集更多更全的训练数据集。数据集包扩同一个体不同年龄段的照片,不同人种的照片,不同类型(美丑等)。通过更全面的数据,提高模型对现场应用中人脸差异的适应能力。
第二类:FR+FCN,pose+shape+expression augmentation和CNN-3DMM estimation。这类方法采用的是合成的思路,通过3D模型等合成不同类型的人脸,增加数据集。这类方法操作成本更低,更适合推广。其中,特别是CNN-3DMM estimation,作者做了非常出色的工作,同时提供了源码,可以进一步参考和深度研究。
常规人脸识别流程是:人脸检测-对齐-表达-分类。
DeepFace(0.9735 )【★★★】
一,基于3d模型的人脸对齐方法;二,大数据训练的人工神经网络。
简介:基于开源框架实现的人脸识别、脸脸检测、人脸关键点检测等任务 各个任务分别在FaceDetection, FaceAlignment, FaceRecognition 三个文件中。人脸检测 baseline: 基于基于滑动窗口的人脸检测,将训练好了的网络改为全卷积网络,然后利用全卷积网络对于任意大小的图像输入,进行获取输出HeapMap。
源码网址:https://github.com/RiweiChen/DeepFace
1 | detect -> aligh -> represent -> classify |
DeepID和FaceNet并没有对齐,
DeepID的解决方案是将一个人脸切成很多部分,每个部分都训练一个模型,然后模型聚合。
FaceNet则是没有考虑这一点,直接以数据量大和特殊的目标函数取胜。
DeepID(0.9745 )【★★★】
FaceNet(0.9963)【★★★★】
Baidu的方法:Targeting Ultimate Accuracy : Face Recognition via Deep Embedding
pose+shape+expression augmentation(0.9807)
CNN-3DMM estimation(0.9235)
Insightface 【★★★★★】
https://github.com/deepinsight/insightface
- All face images are aligned by MTCNN and cropped to 112x112:
引用资源:
face_recognition 史上最简单的人脸识别项目登上GitHub趋势榜
基于机器学习人脸识别face recognition具体的算法和原理
人脸识别、人脸检测、人脸对齐相关算法和论文汇总 https://github.com/polarisZhao/awesome-face
OpenFace
Free and open source face recognition with deep neural networks.
DeepFace
FaceDetection,
FaceAlignment,
FaceRecognition
Face Detection: baseline: 基于基于滑动窗口的人脸检测,将训练好了的网络改为全卷积网络,然后利用全卷积网络对于任意大小的图像输入,进行获取输出HeapMap。
人脸关键点检测: try1_1: 基于DeepID网络结构的人脸关键点检测
Identifition : deepid: 基于DeepID网络结构的人脸验证
Facenet
Face alignment using MTCNN
Face Recognition using Inception-ResNet-v1 model
face_recognition
face_locations: 返回人脸的box
face_landmarks: 返回人脸的关键点,五官,轮廓 _raw_face_landmarks
face Recognition:
face_encodings: _raw_face_landmarks
compare_faces
特点:
- 流程清晰
- 部署简单
- 无法自定义,较难基于此架构的重新训练
猫脸识别
face detection 提取
face alignment 对齐
face recongnition 识别
- face vertification
- face identification
detection
alignment
基础
FaceDetection,
FaceAlignment,
FaceRecognition
目标检测:
Face Detection相关资料:
1.单个CNN人脸检测方法
2.级联CNN人脸检测方法
3.OpenCV人脸检测方法
4.Dlib人脸检测方法
5.libfacedetect人脸检测方法
6.Seetaface人脸检测方法
《A Convolution Neural Network Cascade for Face Detection》
http://www.cs.stevens.edu/~ghua/publication/CVPR15b.pdf
Face Alignment
MTCNN
MTCNN 包含三个级联的多任务卷积神经网络,分别是 Proposal Network (P-Net)、Refine Network (R-Net)、Output Network (O-Net),每个多任务卷积神经网络均有三个学习任务,分别是人脸分类、边框回归和关键点定位。