1

任何人都可以在人脸检测中使用所有不同的技术吗?神经网络、支持向量机、特征脸等技术。

还有哪些?

4

3 回答 3

5

我要谈论的技术更多是面向机器学习的方法;在我看来,虽然不是最近,但它非常吸引人:它在 Viola 和 Jones 的“Robust Real-Time Face Detection”一文中有所描述。我在一个大学项目中使用了 OpenCV 实现。

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

极性 * 特征 (S) < 极性 * 阈值

在某些图像上为真,在其他图像上为假;预计弱分类器的性能仅比随机猜测好一点(例如,它应该具有至少 51-52% 的准确度)。

极性为 -1 或 +1。

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

尽管阈值原则上可以是任意数字,但从对训练集的简单考虑可以看出,如果有 N 个示例,则必须检查每个极性和每个特征的 N + 1 个阈值,以便找到符合条件的阈值最佳精度。因此可以通过穷举搜索三元组空间来找到最好的弱分类器。

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

几个强分类器组合为注意力级联中的阶段;注意级联背后的想法是在第一阶段丢弃显然不是人脸的 24x24 子窗口;强分类器通常只包含几个弱分类器(如 30 或 40),因此计算速度非常快。每个阶段都应该有很高的召回率,而误报率不是很重要。如果有 10 个阶段,每个阶段都有 0.99 的召回率和 0.3 的误报率,那么最终的级联将有 0.9 的召回率和极低的误报率。出于这个原因,通常会调整强分类器以增加召回率和误报率。调优主要涉及降低 AdaBoost 计算的全局阈值。

到达级联末端的子窗口被认为是一张脸。

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

于 2010-08-11T09:35:33.797 回答
2

一种新兴但相当有效的解决包括人脸检测在内的广泛视觉问题的方法是使用分层时间记忆(HTM) ,这是Numenta开发的一种概念/技术。

非常松散地说,这是一种类似神经网络的方法。这种类型的网络具有树形,其中每个级别的节点数量显着减少。HTM 模拟了新皮质的一些结构和算法特性。在[可能]与新皮层不同的情况下,在每个节点级别实现的分类算法使用贝叶斯算法。HTM模型基于大脑功能的记忆预测理论,严重依赖输入的时间性质;这可以解释它处理视力问题的能力,因为这些通常是暂时的(或可以这样做),并且还需要对噪音和“模糊性”的容忍度。

虽然 Numemta 生产视觉套件和演示应用程序已有一段时间,但维生素 D最近生产了 - 我认为 - HTM 技术的第一个商业应用,至少在视觉应用领域。

于 2010-04-15T20:46:18.457 回答
-1

如果您不仅需要它作为理论上的东西,而且您真的想要进行人脸检测,那么我建议您找到已经实现的解决方案。

有大量针对不同语言的经过测试的库,它们被广泛用于此目的。查看此 SO 线程以获取更多信息:人脸识别库

于 2010-04-15T20:45:33.703 回答