Haar Cascades与人脸检测中的LBP级联

Boj*_*oeb 54 opencv cascade face-detection haar-wavelet viola-jones

我一直在OpenCV(开源计算机视觉库)中进行面部检测实验,发现可以使用Haar级联来检测面部,因为其中有几个提供了OpenCV.但是,我注意到还有几个LBP级联.根据OpenCV人脸检测文档,经过一些研究,我发现LBP代表局部二进制模式,也可以用于人脸检测.

我想知道的是哪个更好?哪一个表现得更快,哪一个更准确?似乎LBP表现得更快,但我也不是100%肯定.谢谢.

Sam*_*Sam 63

LBP更快(快几倍)但不太准确.(比哈尔少10-20%).

如果你想检测嵌入式系统上的面,我认为LBP是选择,因为它以整数进行所有计算.哈尔使用浮动,这是嵌入式/移动的杀手.

  • opencv关于人脸检测的LBP算法参考了哪篇论文?《基于多块LBP表示的人脸检测》? (2认同)

NoU*_*ion 25

可以训练LBP级联与Haar级联执行相似(或更好),但是开箱即用,Haar级联速度大约慢3倍,并且根据您的数据,准确检测到位置的大约1-2%更好一张脸.鉴于面部检测可以在95%+精度范围内操作,这种精度的提高非常显着.

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

当在地面实况和OpenCV检测到的坐标之间存在至少50%的重叠时,注意到正确的检测.

Cascade:haarcascade_frontalface_alt2.xml
Datafile:muct.csv
|---------------------------------------------------|
|   Hits  |  Misses  | False Detects  | Multi-hit   |
|  3635   |   55     |   63           |    5        |
|---------------------------------------------------|
Time:4m2.060s
Run Code Online (Sandbox Code Playgroud)

VS:

Cascade:lbpcascade_frontalface.xml
Datafile:muct.csv
|---------------------------------------------------|
|   Hits  |  Misses  | False Detects  | Multi-hit   |
| 3569    |  106     |   77           |    3        |
|---------------------------------------------------|
Time:1m12.511s
Run Code Online (Sandbox Code Playgroud)


sam*_*n13 13

我个人认为,您应该仔细研究LBP的所有检测相关任务,因为LBP培训可能需要几分钟,而HAAR培训可能需要数天才能获得相同的培训数据集和参数.

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

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

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

  • -numStages,-maxDepth-maxWeakCount参数应足够高,以达到预期的-minHitRate-maxFalseAlarmRate.
  • 基于树的训练比基于树桩的训练更准确,
  • 温柔的adaboost优于离散和真正的adaboost,
  • 培训样本的最小规模很重要,但尚未对其进行系统研究.

此外,detectMultiScale()中使用的标志会在给定硬件配置上产生速度和精度的急剧变化.

为了测试级联,你应该确定数据集和k-fold 交叉验证等方法.


Erm*_*mIg 10

可能对你有用:

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


Đôn*_*yễn 7

此外,在训练阶段,LBP比哈尔快.使用哈尔类型的2000个样本和300个样本进行训练,需要大约5-6天才能完成,但是使用LBP,只花了几个小时.