人脸检测的 AI 技术

谁能列举一下用于人脸检测的不同技术?比如神经网络、支持向量机、特征脸等等。

还有其他的吗?


回答:

我要讨论的技术更偏向于机器学习;在我看来非常吸引人,虽然不是最新的:它在 Viola 和 Jones 的文章 “Robust Real-Time Face Detection” 中被描述。我使用 OpenCV 实现来完成一个大学项目。

它基于 Haar-like 特征,该特征包括图像矩形区域内像素强度的加法和减法。 这可以使用一种称为积分图像的过程非常快速地完成,并且也存在 GPGPU 实现(有时称为“前缀扫描”)。 在以线性时间计算积分图像后,可以在恒定时间内评估任何 Haar-like 特征。 特征基本上是一个函数,它接受图像 S 的 24×24 子窗口,并计算一个值 feature(S);一个三元组(特征、阈值、极性)被称为弱分类器,因为

polarity * feature(S) < polarity * threshold

在某些图像上成立,而在另一些图像上不成立;弱分类器预计只会比随机猜测略好(例如,它应该至少具有 51-52% 的准确率)。

极性为 -1 或 +1。

特征空间很大(约 160’000 个特征),但有限。

尽管原则上阈值可以是任何数字,但从训练集的简单考虑中可以看出,如果存在 N 个示例,则只需要检查每个极性和每个特征的 N + 1 个阈值,以便找到具有最佳准确性的阈值。 因此,可以通过穷举搜索三元组空间来找到最佳的弱分类器。

基本上,可以通过迭代地选择最佳的弱分类器,使用一种称为“自适应提升”或 AdaBoost 的算法来组装一个强分类器;在每次迭代中,在前一次迭代中被错误分类的示例会被赋予更大的权重。 强分类器的特点是它自己的全局阈值,由 AdaBoost 计算。

几个强分类器被组合成一个注意力级联的阶段;注意力级联背后的想法是,那些明显不是人脸的 24×24 子窗口会在第一阶段被丢弃;一个强分类器通常只包含几个弱分类器(比如 30 或 40 个),因此计算速度非常快。 每个阶段应该具有非常高的召回率,而假正率并不重要。 如果有 10 个阶段,每个阶段都有 0.99 的召回率和 0.3 的假正率,那么最终的级联将具有 0.9 的召回率和极低的假正率。 因此,通常会调整强分类器以提高召回率和假正率。 调整基本上包括降低 AdaBoost 计算出的全局阈值。

一个到达级联末尾的子窗口被认为是人脸。

必须测试初始图像中的几个子窗口,最终会重叠,最终会在缩放图像后进行测试。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注