Detección de caras
# Detección de caras

La detección de caras (del inglés face detection) es un caso específico de la detección de objetos. La detección de caras por ordenador es un proceso por el cual el ordenador ubica los rostros presentes en una imagen o un vídeo. Este proceso no es tan sencillo como lo haría el SVH. Actualmente existen diferentes métodos para poder realizar la detección de caras por ordenador.

## Evolución

Fue hacia los años 70 cuando aparecieron los primeros algoritmos, basados en técnicas heurísticas y antropométricas, pero no eran muy eficientes ya que fallaban bastante y eran muy sensibles a cambios. La investigación se dejó de lado porque todavía no tenía utilidad. Fue en los años 90 cuando, gracias al desarrollo de la tecnología y al descubrimiento de aplicaciones útiles, se reanudó la investigación.

De los modelos anteriores, el que se utiliza actualmente son los métodos basados en el aspecto ya que son los que dan mejor resultados. Esto es debido a que en función de la variabilidad de la colección de imágenes o muestras con las que se realiza el entrenamiento obtendrán detectores con tasas altas de detección y bajas tasas de falso positivos. Además de una gran robustez, presentan una eficiencia en el sistema de detección y reducción del coste computacional.

Aunque la detección de caras tiene muchas aplicaciones, es en el campo de la fotografía digital donde más se acerca al público. Fujifilm fue la primera empresa anunciando la nueva tecnología en 2004, pero fue Nikon, en 2005, la primera que sacó al mercado una cámara utilizando este sistema. Actualmente, la mayoría de cámaras lo incorporan.

## Factores que no ayudan a la detección de caras

Según las condiciones en la que se encuentre la imagen durante el proceso de detección puede suponer algunos problemas. En muchos casos la luminosidad no es la adecuada, aparecen elementos extraños, las caras están de perfil, tapadas por algún elemento o por alguna otra cara o en un ángulo complicado.

## Método de la detección de caras

Actualmente se pueden distinguir cuatro grandes categorías de métodos de detección de caras, basados en el conocimiento, en caracteres invariantes, basados en plantillas y en apariencia

### Métodos basados en el conocimiento

Estos métodos representan las técnicas de detección de caras que se basan en una serie de reglas previas definidas por la persona que quiere hacer la detección. Se definen una serie de características sobre las caras a detectar (forma de la cabeza, dos ojos, una nariz...). Esto puede suponer un problema y es que si estas reglas son muy generales, el resultado de una búsqueda en imágenes donde no hay caras, seguramente el resultado dirá que si hay caras y además una cantidad elevada. En el caso en que las reglas establecidas sean muy específicas posiblemente también aparezcan problemas ya que el resultado de la detección será muy bajo.

### Métodos basados en caracteres invariantes

Estos métodos utilizan como punto de referencia el color de la piel y la textura, el problema que supone aplicar estos métodos es que si en la imagen aparece ruido o diferentes condiciones de iluminación el algoritmo aplicado no funcionará correctamente. Si se utiliza el color de la piel, los algoritmos que utilizan toda la gama de colores tienen mejor resultado que los que utilizan una escala de grises.

### Métodos basados en plantillas

Estos métodos modelan geométricamente la forma del objeto. Las plantillas son las componentes básicas como por ejemplo círculos, elipses... Una vez están definidas las plantillas se evalúa la correspondencia entre la cara y la plantilla. Las principales técnicas son las plantillas deformables y los contornos activos.

### Métodos basados en apariencia

Esta técnica en un principio no necesita el conocimiento de las características de la cara de la imagen que se quiere detectar. En los algoritmos utilizados en estos métodos aparecen los conceptos de entrenamiento y de aprendizaje.

## Algoritmo Viola & Jones

Este algoritmo tiene un coste computacional muy bajo, y consta de dos partes principales: clasificador en cascada, que garantiza una discriminación rápida y un entrenador de clasificadores basado en Adaboost. Viola Jones tiene una probabilidad de verdaderos positivos del 99,9% y una probabilidad de falso positivos del 3,33%, y a diferencia de otros algoritmos utilizados en métodos de caracteres invariantes procesa sólo la información presente en una imagen en escala de grises. No utiliza directamente la imagen sino que utiliza una representación de la imagen llamada imagen integral. Para determinar si en una imagen se encuentra una cara o no, el algoritmo divide la imagen integral en subregiones de tamaños diferentes y utiliza una serie de clasificadores (clasificadores en cascada), cada una con un conjunto de características visuales. En cada clasificador se determina si la subregión es una cara o no. La utilización de este algoritmo supone un ahorro de tiempo considerable ya que no serán procesadas subregiones de la imagen que no se sepa con certeza que contienen una cara y sólo se invertirá tiempo en aquellas subregiones que posiblemente si contengan una cara. Este detector se ha hecho muy popular debido a su velocidad a la hora de detectar las caras en imágenes y para su implementación en la librería OpenCV.

## Aplicaciones

* Entretenimiento: Videojuegos, realidad virtual, programas de captación, humano-robótica, álbumes de fotos, maquillaje virtual, aplicaciones de Teléfono inteligente…
* Tarjetas Inteligentes: Licencias de conducir, DNI, pasaportes, control parental de TV, dispositivo personal de acceso, seguridad de base de datos…
* Aplicación de la ley y vigilancia: portal de control, seguimiento sospechoso e investigación.
