使用 LBPH 进行面部检测 - 提取特征

Facial Detection with LBPH - Extracting Features

我已经创建了系统的框架,它拍摄一张照片,将其转换为 LBPH 图像,然后从网格 (8x8) 的每个图块中获取直方图。我正在关注有关它的 this 论文,但我很困惑在第 4 步之后接下来要做什么来识别特征。我是否只是将网格的每个方块与一组已知的特征方块进行比较并找到最接近的匹配项?这是我的第一个面部检测程序,所以我对它很陌生。

基本上图像处理是这样的。像素强度值变化太大,本身无法提供有用的信息,无法让算法理解图像。更有用的是像素强度值之间的局部关系所以用于识别的图像处理,检测基本上是一个两步过程。

  1. 特征提取 - 将像素强度等低级、高方差、无信息的特征转换为高级、低方差、更多信息的特征集(例如边缘、视觉模式等)这被称为特征提取。多年来,已经提出了许多特征提取机制,例如使用 Sobel 滤波器进行边缘检测、定向梯度直方图 (HOG)、类似 Haar 的特征、尺度不变特征 (SIFTS) 和您尝试使用的 LBPH。 (请注意,在大多数不受计算限制的现代应用程序中,卷积神经网络 (CNN) 用于特征提取步骤,因为它们在经验上效果更好。

  2. Use Transformed Features - 一旦提取出更有用的信息(一组信息量更大的特征),您需要使用这些特征来执行推理您希望完成的操作。在此步骤中,您将拟合一个模型(函数逼近器),以便将您的高级特征作为输入,该模型输出您想要的信息(在这种情况下,我认为是关于图像是否包含人脸的分类)。因此,您需要 select 并拟合一个可以利用高级特征进行分类的模型。一些经典的方法包括决策树、支持向量机和神经网络。从本质上讲,模型拟合是一个标准的机器学习问题,并且需要使用一组标记的训练数据来 "teach" 模型高级特征集对于包含人脸的图像与包含图像的图像的外观那没有。

听起来您的代码在当前状态下缺少第二部分。作为一个好的起点,请研究使用 sci-kit learn 的决策树包。