Pregunta

Por favor, explíqueme, en pocas palabras, cómo funciona el método de detección de la cara de Viola-Jones.

¿Fue útil?

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

enter image description here

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")
enter image description here

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.

enter image description here
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)

enter image description here
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

enter image description here
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:enter image description here

Sobre la fórmula, se parece el cálculo rápido de las características de HaAR que utilizan imágenes integrales:

enter image description here

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.

enter image description here

Una ventana de detección cambia alrededor de toda la función de extracto de imagen (por haar filter calculado por Integral Image luego envíe la función extraída a Cascade 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í.

enter image description here

Integral Image: Permite una evaluación de características muy rápida

enter image description here

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.

enter image description here

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í .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top