【人脸识别(四)】:人脸识别理论、原理、分类、概括,请针对性学习所需算法,不要全学。

人脸识别(一):Ubuntu Python安装dlib C++ library

人脸识别(二):如何使用 dlib 实现简单的人脸识别功能

人脸识别(三):使用face_recognition库实现人脸识别,python实现

人脸识别(五):基于Adaboost的人脸检测算法,及实例教程

前面几篇博客直接介绍了如何使用dlib和face_recognition模块在python基础上实现人脸检测以及定位和拓展功能。

最近几天看了很多博客和综述论文,发现CSDN里的人脸识别博客都是千篇一律的,概括性的文章不具体,理论性的文章不详细,因此建议读者可以先了解大致有哪些人脸识别算法,再根据需求去专门研究自己需要的算法。

在专门研究特定算法的时候去找详细到公式求解的文章或者论文,不然依旧是一知半解。

这篇博客将简要介绍人脸识别的原理、分类,具体的详细知识可以自行针对感兴趣内容详细研究,尽量不要全学、浪费时间

 

1.人脸识别技术原理

人脸识别无非三步或者四部,即三步:人脸检测、特征提取、人脸识别,四步:人脸检测、检测特征点、计算特征特征向量、识别计算。可以把四步中的检测特征点和计算特征向量理解为三步中的特征提取,不同之处是采取的算法不同。从人脸识别开始到目前,各种各样的人脸识别算法层出不穷,近些年,CNN快速发展,基于CNN的人脸识别算法不停刷新人脸识别检测精度。

 

从上述可以知道,人脸识别是通过检测器和分类器实现的,因此,搭配好检测器和分类器就可以实现人脸识别。(如PCA+SVM、HOG+CNN等)

检测器实现检测图像中的人脸以及位置,分类器实现将标定后的人脸转换成特征值,最后计算欧氏距离辨别人脸(个别方法除外)。

人脸识别同时还附带其他功能:人脸对齐、人脸匹配(类似识别)

 

2.人脸识别流程

类似于上面的步骤,人脸识别的流程为:人脸检测===》特征提取===》人脸识别

其中,

人脸检测是使用检测器对图像滑动窗口中的分类和定位,确定滑窗内是不是人脸,以及检测框的具体位置。

特征提取是即提取特征向量,蕴含着几何特征或者表征特征。几何特征:如眼、鼻等几何关系,特点是直观,量小。表征特征:算法提取的局部或者全局特征。

人脸识别:包括确认、辨识。

3.人脸识别(检测)常用算法

人脸识别算法多种多样,大致分为:

  • 基于肤色模型的方法;
  • 基于模板匹配的方法;
  • 基于弹性模型的方法(典型:DLA);
  • 基于特征脸法(典型:基于KL变换、Eigenface或PCA);
  • 基于神经网络法(典型:RBFN,最新:CNN);
  • 支持向量机法(典型:HOG+SVM,广泛应用于各种检测);
  • 基于积分图像特征发(典型:addboost,广泛应用的方法);
  • 基于概率模型法;
  • 基于核技术方法(典型:PCA和LDA、KFDA)。

可以理解为:算法多,没有统一的分类,根据不同的准则可以划分为不同的类(还会有交叉),因此在学习人脸识别的时候,可以从经典算法开始,到最新的卷积神经网络。可以针对自己的需求去专门学习一些算法,不需要全部都学习

 

  • 经典的人脸识别算法:特征脸法(Eigenface)、局部二值模式(Local Binary Patterns,LBP)、Fisherface
  • 常用人脸识别算法:AdaBoost(即Haar+adaboost)、HOG+SVM(此算法也广泛应用到各种目标检测,如行人检测)、PCA+SVM
  • 最新人脸识别方法:DeepID、MTCNN、PFLD(基本都和深度学习有关)。

下一篇将着重介绍采用Haar+AdaBoost方法实现人脸检测的详细理论知识,以及使用opencv实现。

猜你喜欢

转载自blog.csdn.net/qq_39709813/article/details/105850922