59

我一直在 OpenCV(开源计算机视觉库)中尝试人脸检测,发现可以使用 Haar 级联来检测人脸,因为 OpenCV 提供了几种人脸。但是,我注意到还有几个 LBP 级联。经过一番研究,我发现 LBP 代表 Local Binary Patterns,根据OpenCV 人脸检测文档,它也可以用于人脸检测。

我想知道的是,哪个效果更好?哪一个执行得更快,哪一个更准确?似乎 LBP 执行得更快,但我也不是 100% 确定这一点。谢谢。

4

5 回答 5

70

LBP 更快(快几倍)但不太准确。(比 Haar 少 10-20%)。

如果要在嵌入式系统上检测人脸,LBP 是默认选择,因为它以整数进行计算。

Haar 使用浮点数进行处理,对嵌入式和移动处理器的支持较差;结果,性能损失是显着的——大到足以使其在手机上的使用变得不切实际。

于 2012-01-09T16:43:44.920 回答
28

可以训练 LBP 级联以执行与 Haar 级联相似(或更好)的性能,但开箱即用,Haar 级联慢约 3 倍,并且根据您的数据,在准确检测一张脸。鉴于人脸检测可以在 95% 以上的准确度范围内运行,这种准确度的提高非常显着。

以下是使用MUCT数据集时的一些结果。

当 ground-truth 和 OpenCV 检测到的坐标之间至少有 50% 的重叠时,就会注意到正确的检测。

Cascade:haarcascade_frontalface_alt2.xml
Datafile:muct.csv
|---------------------------------------------------|
|   Hits  |  Misses  | False Detects  | Multi-hit   |
|  3635   |   55     |   63           |    5        |
|---------------------------------------------------|
Time:4m2.060s

与:

Cascade:lbpcascade_frontalface.xml
Datafile:muct.csv
|---------------------------------------------------|
|   Hits  |  Misses  | False Detects  | Multi-hit   |
| 3569    |  106     |   77           |    3        |
|---------------------------------------------------|
Time:1m12.511s
于 2014-05-23T19:28:26.300 回答
14

我个人的观点是,你应该为所有检测相关任务研究 LBP,因为 LBP 训练可能需要几分钟,而 HAAR 训练可能需要几天时间来处理相同的训练数据集和参数。

您提出的问题将具有不同的性能,具体取决于被检测事物的类型、训练设置和检测期间使用的参数以及测试级联的标准。

HAAR 和 LBP 级联的准确性取决于用于训练它们的数据集(正样本和负样本)以及训练期间使用的参数。

根据Lienhart 等人,2002 年,在人脸检测的情况下:

  • 您的-numStages,-maxDepth-maxWeakCount参数应该足够高以实现所需的-minHitRate-maxFalseAlarmRate
  • 基于树的训练比基于树桩的训练更准确,
  • 温和的 adaboost 优于离散和真实的 adaboost,
  • 训练样本的最小大小很重要,但尚未对其进行系统研究。

此外,detectMultiScale() 中使用的标志会在给定硬件配置上产生速度和准确性的巨大变化。

为了测试级联,您应该选择一个数据集和一种方法,例如 k-fold cross validation

于 2013-11-23T11:05:24.903 回答
11

可能对您有用:

有一个Simd 库,它实现了 HAAR 和 LBP 级联分类器。它可以使用来自 OpenCV 的标准 HAAR 和 LBP 级联。该实现使用 SSE4.1、AVX2、AVX-512 和 NEON(ARM) 进行了 SIMD 优化,因此它的工作速度比原始 OpenCV 实现快 2-3 倍。

于 2016-05-05T12:01:11.833 回答
7

此外,在训练阶段,LBP 比 Haar 更快。使用 2000 个 pos 样本和 300 个 neg 样本,使用 Haar 类型进行训练,大约需要 5-6 天才能完成,但使用 LBP,只需要几个小时。

于 2013-06-02T00:32:03.073 回答