Cascadas Haar vs. Cascadas LBP en la Detección de Rostros


He estado experimentando con la detección de rostros en OpenCV (Open Source Computer Vision Library), y descubrí que uno podría usar cascadas Haar para detectar rostros, ya que hay varios de ellos provistos con OpenCV. Sin embargo, he notado que también hay varias cascadas de LBP. Después de hacer algunas investigaciones, descubrí que LBP significa Patrones Binarios Locales, y también se puede usar para la detección de rostros, de acuerdo con la Documentación de Detección de Rostros de OpenCV .

Lo que me gustaría ¿sabes cuál funciona mejor? ¿Cuál funciona más rápido y cuál es más preciso? Parece que LBP funciona más rápido, pero tampoco estoy 100% seguro de eso. Gracias.

Author: saurabheights, 2012-01-09

5 answers

LBP es más rápido (algunas veces más rápido) pero menos preciso. (10-20% menos que Haar).

Si desea detectar caras en un sistema embebido, creo que LBP es la opción, porque hace todos los cálculos en enteros. Haar utiliza flotadores, que es un asesino para embedded / mobile.

 55
Author: Sam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-13 10:53:35

Una cascada de LBP se puede entrenar para funcionar de manera similar (o mejor) que la cascada de Haar, pero fuera de la caja, la cascada de Haar es aproximadamente 3 veces más lenta, y dependiendo de sus datos, aproximadamente 1-2% mejor en la detección precisa de la ubicación de una cara. Este aumento en la precisión es bastante significativo dado que la detección de rostros puede operar en el rango de precisión del 95%+.

A continuación se muestran algunos resultados al usar el conjunto de datos MUCT.

Una detección correcta se observa cuando hay al menos un 50% superposición entre la verdad de tierra y las coordenadas detectadas por OpenCV.

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

Vs:

Cascade:lbpcascade_frontalface.xml
Datafile:muct.csv
|---------------------------------------------------|
|   Hits  |  Misses  | False Detects  | Multi-hit   |
| 3569    |  106     |   77           |    3        |
|---------------------------------------------------|
Time:1m12.511s
 19
Author: NoUserException,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-17 13:30:36

Mi opinión personal es que debe buscar en LBP para todas las tareas relacionadas con la detección simplemente porque el entrenamiento LBP puede tomar minutos, mientras que el entrenamiento HAAR puede tomar días para el mismo conjunto de datos y parámetros de entrenamiento.

La pregunta que ha hecho tendrá un rendimiento diferente dependiendo del tipo de cosa que se detecta, los ajustes de entrenamiento y los parámetros utilizados durante la detección, así como los criterios para probar las cascadas.

La precisión de HAAR y LBP las cascadas dependen de los conjuntos de datos (muestras positivas y negativas) utilizados para el entrenamiento y los parámetros utilizados durante el entrenamiento.

De acuerdo con Lienhart et al, 2002, en el caso de la detección facial:

  • su -numStages, -maxDepth y -maxWeakCount los parámetros deben ser lo suficientemente altos para lograr los -minHitRate y -maxFalseAlarmRate deseados.
  • el entrenamiento basado en árboles es más preciso que el basado en tocones, {[17]]}
  • adaboost suave es preferible a discreto y real adaboost,
  • el tamaño mínimo de la muestra de capacitación es importante, pero aún no se ha realizado un estudio sistemático al respecto.

También, las banderas usadas en detectMultiScale() producen un cambio drástico en la velocidad así como en la precisión en una configuración de hardware dada.

Para probar la cascada debe establecerse en un conjunto de datos y un método como k-fold validación cruzada.

 11
Author: samkhan13,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-09 16:23:23

Puede ser útil para usted:

Hay una Biblioteca Simd, que tiene una implementación de clasificadores en cascada HAAR y LBP. Puede usar casscades estándar de HAAR y LBP de OpenCV. Esta implementación tiene optimizaciones SIMD con el uso de SSE4.1, AVX2, AVX-512 y NEON(ARM), por lo que funciona en 2-3 veces más rápido que la implementación original de OpenCV.

 9
Author: ErmIg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-13 10:14:21

Además, en las etapas de entrenamiento, LBP es más rápido que Haar. Con la muestra de 2000 pos y la muestra de 300 neg, el entrenamiento con el tipo Haar, tomó aproximadamente 5-6 días para completarse, pero con LBP, tomó solo algunas horas.

 5
Author: Đôn Nguyễn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-02 00:32:03