¿Cómo funciona el método de detección de cara de Viola-Jones?
-
24-10-2019 - |
Pregunta
Por favor, explíqueme, en pocas palabras, cómo funciona el método de detección de la cara de Viola-Jones.
Solución
El detector Viola-Jones es un fuerte, clasificador binario construcción de varios detectores débiles
Each weak detector is an extremely simple binary classifier
Durante la etapa de aprendizaje, una cascada de detectores débiles está entrenado para obtener la tasa de golpes / tarifa de misión deseada (o precisión / recuperación) usando Adaboost para detectar objetos, la imagen original se divide en varios parches rectangulares, cada uno de los cuales se envía a la cascada
Si un parche de imagen rectangular pasa a través de todas las etapas de cascada, entonces se clasifica como "positivo", el proceso se repite a diferentes escalas
En realidad, en un nivel bajo, el componente básico de un detector de objetos es algo requerido para decir si una cierta subregión de la imagen original contiene una serie del objeto de interés o no. Eso es lo que hace un clasificador binario.
El clasificador básico y débil se basa en una característica visual muy simple (ese tipo de características a menudo se conoce como "características de Haar")
Las características tipo Haar consisten en un Clase de características locales que se calculan restando la suma de una subregión de la característica de la suma de la región restante de la característica.
Estas características se caracterizan por el hecho de que son fáciles de calcular y con el uso de una imagen integral, muy eficiente de calcular.
Lienhart introdujo un conjunto extendido de característica de Haar retorcida (ver imagen)
Estas son la característica estándar similar a HAAR que se han torcido 45 grados. Lenhart no hizo uso originalmente de la característica tipo HAAR de la placa de verificador retorcido (x2Y2) ya que los elementos diagonales que representan se pueden representar simplemente utilizando características retorcidas, sin embargo, está claro que una versión retorcida de esta característica también se puede implementar y utilizar .
Estas características retorcidas de tipo Haar también se pueden calcular de manera rápida y eficiente utilizando una imagen integral que se ha torcido 45 grados. El único problema de implementación es que las características retorcidas deben ser redondeadas a los valores enteros para que estén alineadas con los límites de píxeles. Este proceso es similar al redondeo utilizado al escalar una característica similar a HAAR para ventanas más grandes o más pequeñas, sin embargo, una diferencia es que para una característica retorcida de 45 grados, el número entero de píxeles utilizados para la altura y el ancho de la función significa que la función de la función significa que la significa que el Las coordenadas diagonales del píxel siempre estarán en el mismo conjunto diagonal de píxeles
Esto significa que el número de características retorcidas de 45 grados de diferentes tamaños disponibles se reduce significativamente en comparación con las características estándar alineadas verticalmente y horizontalmente.
Entonces tenemos algo como:
Sobre la fórmula, se parece el cálculo rápido de las características de HaAR que utilizan imágenes integrales:
Finalmente, Aquí hay una implementación de C ++ que usa Violajones.H por Ivan Kusalic
Para ver el C ++ completo proyecto vaya aquí
Otros consejos
El detector de Viola-Jones es un Clasificador binario fuerte construcción de varios detectores débiles. Cada detector débil es un clasificador binario extremadamente simple
La detección consta de piezas por debajo:
Haar Filter
: Extraiga las características de la imagen a Calssify (la Ley de características para codificar el conocimiento del dominio ad-hoc)
Integral Image
: Permite una evaluación de características muy rápida
Cascade Classifier
: Un clasificador Cascade consta de múltiples etapas de filtros, para clasificar una imagen (ventana deslizante de una imagen) es una cara.
A continuación se muestra una descripción general de cómo detectar una cara en la imagen.
Una ventana de detección cambia alrededor de toda la función de extracto de imagen (por
haar filter
calculado porIntegral Image
luego envíe la función extraída aCascade Classifier
para clasificar si es una cara). La ventana deslizante cambia píxel por píxel. Cada vez que se desplaza la ventana, la región de la imagen dentro de la ventana pasará por el clasificador de cascada.
Haar Filter
: Puede entender que el filtro puede extraer características como eyes
, bridge of the nose
y así.
Integral Image
: Permite una evaluación de características muy rápida
Cascade Classifier
:
Un clasificador en cascada consta de múltiples etapas de filtros, como se muestra en la figura a continuación. Cada vez que se desplaza la ventana deslizante, la nueva región dentro de la ventana deslizante pasará por el clasificador de cascada etapa por etapa. Si la región de entrada no pasa el umbral de una etapa, el clasificador Cascade rechazará inmediatamente la región como cara. Si una región pasa todas las etapas con éxito, se clasificará como un candidato de cara, que puede ser refinado por un procesamiento adicional.
Para más detalles:
En primer lugar, le sugiero que lea el documento de origen Detección de objetos rápidos utilizando una cascada impulsada de características simples tener una descripción general de la comprensión del método.
Si no puede entenderlo claramente, puede ver Detección de cara de Viola-Jones o Implementación del algoritmo de detección de rostros Viola-Jones o Estudio del detector de cara en tiempo real de Viola Jones para más detalles.
Aquí hay un código de Python Python Implementación del algoritmo de detección de la cara por Paul Viola y Michael J. Jones.
código MATLAB aquí .