3

基于开源模型搭建实时人脸识别系统(六):人脸识别(人脸特征提取) - CoderInCV

 8 months ago
source link: https://www.cnblogs.com/haoliuhust/p/17929526.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client




前面我们讲过了人脸检测、人脸质量、人脸关键点、人脸跟踪,接下来就是人脸识别系统里面的重中之重人脸识别了,或者叫人脸特征提取,这个算法是来判定人脸是谁。我们刷脸进车站、刷脸付款、解锁手机都离不开这个算法。

人脸识别的几个发展阶段

第一个发展阶段主要从 20 世纪 60 年代到 90 年代。Brunelli 、Bledsoe 、金出武 雄等人在这一时期做了人脸识别的相关研究,人工神经网络在这时被提出,因为当时硬 件基础难以支撑其过高的计算复杂度而没有得到重点关注。这一时期的识别精确度不高, 可以做到简单的人脸识别,但还是无法运用到实际中。
第二个发展阶段是从 1991 年到 1997 年。这一时期出现了耶鲁大学的 Fisherface 算法和麻省理工学院的 Eigenface 算法。这两种算法在当时颇具影响力。这一时期还出 现了人脸等密度图线性分析、基于弹性图匹配的方法 EBGM、隐马尔可夫模型 HMM等。Eigenface使用了PCA(主成分分析)将人脸图像进行降维,然后用欧式距离来判定人脸相似度,PCA也是计算机视觉课程会接触到的算法;Fisherface则使用了LDA(线性判别分析)。
第三个发展阶段是从 1997 年到 2010 年前后,研究人员开始摒弃原先的理想环境, 把研究重点转移到了非理想环境。这个时期研究者所使用分类器的联合方式和传统的特 征提取的技术方法。在此阶段,研究人员主要采用贝叶斯分类器、联合贝叶斯、支持向 量机 SVM等分类器进行研究。用SVM这类分类器来做人脸识别,实现了人脸特征和分类的解耦,所以有很多特征提取器都被用来做人脸识别了,比如sift、Gabor、HoG、LBP等。总体上,虽然相比于第二个阶段的算法,这个阶段的算法从精度和鲁棒性上都有较大提升,不过还是无法进行大规模的使用。
第四个阶段就是深度学习时期了,这个阶段是人脸识别真正进入日常生活的阶段,我们日常的刷脸解锁、刷脸进小区、打卡都离不开基于深度学习的人脸识别技术的发展。2014 年,Facebook 提出 Deepface 和香港中文大学提出 DeepID在 LFW上分别达到了 97.34%和 97.44%的识别精度。2015 年,Google 提出的 FaceNet ,在 LFW 上取得了 99.62%的识别率。同年,牛津大学提出了 VGGface 并公开数据集 CASIA WebFace ,VGGNet 在 CASIA WebFace 人脸集上训练,得到了 98.95%的识别率。2017 年,Liu 等人提出 SphereFace ,人脸识别准确率提升到了 99.42%。而后的arcface\cosface等新的人脸loss的提出,以及insightface项目的开源,极大的推动了人脸识别的发展。

基于深度学习的人脸识别技术的流程

image

与我们前面博文提到的技术一致,在支付、打卡、门禁等场景,还要加上face anti-spoof(活体检测)来防止出现假体攻击。

闭集和开集(Open set)识别

闭集是指待识别的人都在训练集中,这时的人脸识别等同于一个分类问题。
开集是指待识别的人不在训练集中,这时的人脸识别就不等同于一个分类问题了,而是一个度量学习的问题,即要学习的是如何判定2个人脸是否属于一个人,尽管实际上训练的时候是按分类训练。

人脸识别的损失

目前主要使用的人脸识别损失是arcface\cosface这类margin softmax 损失,即在普通的softmax分类损失上加上了乘性或加性的margin, 以期望达到类内内聚,类间分开的效果。

image.png

而在此之前,triplelet loss也曾用于人脸识别,由于训练过程中样本采样比较复杂,使用不太广泛。

image.png

Insightface

deepinsight/insightface: State-of-the-art 2D and 3D Face Analysis Project (github.com)
insightface是人脸识别领域最有名的开源项目,该项目包括了从人脸检测、人脸关键点到人脸识别的全流程算法,是入门和深入人脸识别的不二之选。

人脸识别数据集

人脸识别的发展也离不开数据集规模的扩大,最大的数据集已经到了百万级ID:

image.png

insightface提供了很多模型:
insightface/recognition/arcface_torch at master · deepinsight/insightface (github.com)
insightface/model_zoo/README.md at master · deepinsight/insightface (github.com)
考虑到速度和精度,我们选择使用WebFace训练的resnet50模型。

A Survey of Face Recognition)

这里我们简要介绍了人脸识别技术的发展过程和主要的一些方法,这里只是一些宽泛的介绍,更深入的算法理解还需要自行阅读论文,可以阅读上述的综述。

人脸识别系统项目源码

https://mbd.pub/o/bread/ZJyTmZty


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK