在深度学习和暹罗网络之前,面部识别算法依赖于特征提取和机器学习。
这篇博客将介绍如何使用本地二进制模式(Local Binary Patterns LBP),OpenCV和CV2.Face.LbphFacerEgnizer_Create进行人脸识别功能。
1. 效果图
2. 原理及步骤
2.1 原理
首先是应用CALTECH FACES数据集,这是评估面部识别算法的基准数据集。
然后审查了Ahonen等人介绍的LBPS面部识别算法。这种方法非常简单且有效。整个算法基本上由三个步骤组成:
- 将每个输入图像的面部划分为7×7等大小的单元格;
- 从每个单元中提取局部二进制模式。根据如何辨别每个细胞用于人脸识别来度量它们,最后连接7×7 = 49直方图以形成最终特征向量;
- 使用具有k = 1的的K-NN分类器和x^2距离度量来执行面部识别。
在Caltech面对数据集上训练脸部识别器,可获得98%的准确性。
2.2 步骤
-
给定数据集中的面部,算法的第一步是将面部划分为7×7等大小的单元。
-
然后,对于这些单元中的每一个,计算局部二进制模式直方图。
根据定义,直方图抛出关于模式如何彼此定向的空间信息。然而,通过计算每个小区域的直方图,我们实际上能够编码诸如眼睛,鼻子,嘴巴等的空间信息水平。该空间编码还允许我们以不同方式从每个细胞的直方图中给出不同的加权值,表明更明显的面部特征的差异。
可以看到原始的面部图