Har*_*rry 1 artificial-intelligence face-detection neural-network
任何人都可以在人脸检测中使用所有不同的技术吗?神经网络、支持向量机、特征脸等技术。
还有什么人?
我要谈论的技术更像是一种面向机器学习的方法;在我看来,它非常吸引人,虽然不是最近:它在 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 计算的全局阈值。
到达级联末端的子窗口被认为是一张脸。
初始图像中的几个子窗口,最终重叠,最终重新缩放图像后,必须进行测试。