Artículos de Investigación

Sistema de Reconocimiento de Patrones de Rostros en la Nube

Austria Cornejo, Arturo; Domínguez Ramírez, Omar Arturo

Arturo Austria Cornejo

Universidad Politécnica de Pachuca México

Omar Arturo Domínguez Ramírez

Universidad Autónoma del Estado de Hidalgo México

Pädi Boletín Científico de Ciencias Básicas e Ingenierías del ICBI

Universidad Autónoma del Estado de Hidalgo, México

ISSN-e: 2007-6363

Periodicidad: Semestral

vol. 7, núm. 13, 54-61, 2019

sitioweb@uaeh.edu.mx

URL: http://portal.amelica.org/ameli/journal/595/59529765952976011/

License Creative Commons
Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivar 4.0 Internacional.

Modelo de publicación sin fines de lucro para conservar la naturaleza académica y abierta de la comunicación científica

ePub generado a partir de XML JATS4R

Resumen: El presente artículo consiste en implementar un servicio basado en la Nube que proporciona los algoritmos faciales más avanzados de reconocimiento y detección de rostros con atributos bajo la plataforma Microsoft Azure. Para su implementación, en el estado del arte se analizan técnicas biométricas utilizadas hoy en día para el reconocimiento de patrones de rostros y se plantea de manera general considerar la existencia de ruido en las imágenes de análisis al compararlas con las bases de datos tomando en cuenta la alineación, normalización y escalado de cada una de las imágenes probadas con este servicio. Con lo que respecta a la implementación de estos servicios se llevaron a cabo experimentos diferenciados de cada una de las fases del desarrollo del proyecto, de modo que se puedan evaluar sus fortalezas y debilidades del servicio en la Nube. Los análisis de las imágenes procesadas se han centrado en observar el potencial de exactitud, la eficiencia y rapidez del servicio. Además, se realiza un estudio antropométrico como base experimental para probar el servicio y con ello realizar un análisis más exhaustivo del rostro, considerando en el proyecto las siguientes funciones principales: la detección de rostros con atributos y el reconocimiento facial. El desarrollo del proyecto tiene dos líneas principales de trabajo: en la primer línea se implementó un servicio basado en las librerías de la API Face de Microsoft Azure para reconocimiento facial en lenguaje C# cuyo rendimiento fue evaluado con una base de datos local y posteriormente en el Cloud de Microsoft, la segunda línea de trabajo tiene un enfoque experimental, que lleva a cabo pruebas diferenciadas del servicio en cada una de las etapas de desarrollo, donde se pudo realizar una evaluación de forma detallada. Los experimentos se enfocan en el estudio de las etapas más relevantes para el análisis de la exactitud, rendimiento y rapidez en las funciones de: agrupación, detección, comprobación, identificación y comparación de rostros y reconocimientos de emociones.

Palabras clave: Reconocimiento, identificación y comparación de rostros, reconocimiento de emociones, servicios de reconocimiento de rostros en la nube, sistemas biométricos.

Abstract: This article consists in implementing a Cloud-based service that provides the most advanced face recognition and detection algorithms with attributes under the Microsoft Azure platform. For its implementation, in the state of the art, biometric techniques used today for the recognition of facial patterns are analyzed and a general approach is to consider the existence of noise in the images to be analyzed when comparing them with the databases considering the alignment, normalization and scaling of each of the images tested with this service. With regard to the implementation of these services, differentiated experiments have been carried out in each of the phases of the project development, so that their strengths and weaknesses in the Cloud service can be evaluated. The analysis of the processed images has focused on observing the accuracy potential, efficiency and speed of the service in the Cloud. In addition, it was necessary to carry out an anthropometric study as an experimental basis to test the service and thus carry out a more thorough analysis of the face, considering in the project the following main functions: the detection of faces with attributes and facial recognition. The development of the project has two main lines of work: in the first line a service was implemented based on the libraries of the Face API of Microsoft Azure for facial recognition in C # whose performance was evaluated with a local database and later in the Cloud from Microsoft, the design and implementation was later adapted and improved for its real-time operation, the second line of work has an experimental approach, carrying out differentiated tests of the service in each of the development stages, where it was possible to carry out an evaluation in detail. The experiments focused on the study of the most relevant stages for the analysis of accuracy, performance and speed in the functions of: grouping, detection, checking, identification and comparison of faces and recognition of emotions.

Keywords: Recognition, identification and comparison of faces, recognition of emotions, recognition services of faces in the cloud, biometric systems.

1. Introducción

1.1. El sistema de reconocimiento de patrones de rostros

El sistema de reconocimiento de patrones de rostros es una aplicación procesada por una computadora que permite identificar, reconocer o comparar a una persona en una imagen digital, este sistema se usa ampliamente en muchos escenarios, como seguridad, interfaz de usuario natural, análisis y administración de contenido de imagen, aplicaciones móviles y robótica, entre otros. Además de ser uno de los sistemas de biometría que permiten detectar e identificar personas de manera rápida a través de sus rasgos faciales. Este sistema tiene una gran ventaja frente a sistemas tradicionales que permiten la identificación personal con información adicional como los son documentos de identidad, tarjetas de acceso, etc. las cuales pueden ser extraviadas o robadas provocando vulnerabilidades de seguridad. Dada la gran variedad de campos de aplicación de los sistemas de detección de rostro hacen de las mismas un objeto de estudio muy interesante dentro de la comunidad científica hoy en día con la mejora significativa de los diversos sistemas biométricos, en los últimos años estos sistemas se empiezan a imponer como una solución robusta y fiable, incluso muchos de ellos operan hoy en día de manera natural. Estos sistemas proporcionan en gran medida mayor eficiencia y precisión, en la actualidad, los sistemas biométricos basados en huella dactilar o el iris obtienen unas tasas de reconocimiento formidables siendo la elección preferida en muchos campos de aplicación.

1.2. Fundamentos del reconocimiento facial

La cara humana, como rasgo característico, nos proporciona gran cantidad de información sobre una persona permitiéndonos identificar a simple vista diferentes individuos. La cara contiene, a su vez, un conjunto de rasgos que la dotan de un alto poder de identificación, a continuación, se describen los 5 rasgos que se utilizan en este proyecto para la implementación del reconocimiento facial en la nube [20].

1. Las orejas, cartílagos que forman la parte externa del órgano del oído y que están situadas en los laterales de la cara.

2. Las cejas como parte de la cara, prominente, curvilínea y cubierta de vello, situada encima de la cavidad ocular, ubicada aproximadamente unos 2 cm por encima del ojo.

3. Los ojos, como órganos visuales, situados en la mitad superior de la cara, están compuestos por pestañas, párpados y el globo ocular que se compone por córnea, iris, pupila y vasos sanguíneos. Los ojos ofrecen gran variabilidad entre sujetos puesto que su geometría es diferente para cada uno y el iris, un rasgo biométrico por sí solo.

4. La nariz, órgano prominente del rostro humano, entre la frente y la boca, con dos orificios, que forma parte del aparato respiratorio y está situada aproximadamente en el centro de la cara. Su forma varía en gran medida entre los usuarios y la misma no suele ser afectada en los cambios de expresión.

5. La boca situada en la parte inferior de la cara y que es la abertura anterior del tubo digestivo, es otro rasgo característico que facilita información del individuo.

Figura 1.
Rasgos que componen la cara.

2. Etapas del sistema de reconocimiento de patrones de rostros en la Nube

En este proyecto el sistema de reconocimiento de patrones de rostros en la nube contempla cinco etapas ver la figura 2.

La primera etapa es la adquisición de datos mediante cámaras digitales o archivos de imagen (.jpg, .png, .gif, .bmp) que contenga un rostro a analizar.

Figura 2.
Etapas del sistema de reconocimiento de patrones de rostros en la nube

[24].

En la segunda etapa se realiza la detección y localización del rostro sobre el archivo origen. La tercera etapa de preprocesado se lleva a cabo para aplicar la normalización, alineación y escalado de la imagen. Una vez que los datos están preparados, se realiza la cuarta etapa de extracción de características para obtener la información relevante de la imagen. Por último, la etapa de reconocimiento donde se aplican los algoritmos de reconocimiento consumiendo un servicio web en la nube de Microsoft Azure y se extrae una decisión respecto a la base de datos y la imagen de entrada.

2.1. Adquisición.

Las imágenes de entrada se realizan mediante cualquier cámara fotográfica digital o adjuntando algún tipo de archivo imagen.

2.2. Detección.

Esta etapa es crítica ya que el resto de etapas se verán afectadas si no se ha realizado una detección y localización correctas. La detección está formada por dos partes:

Detección de la región de la cara. La detección de las regiones de interés en una imagen se realiza mediante los denominados Haar-like features mostrados en la figura 3, adaptados por Viola y Jones a partir del uso de Haar wavelets cuya ventaja de este sistema es la rapidez de cálculo, haciendo posible la detección de objetos en tiempo real [15] [17]. En este sistema son consideradas regiones rectangulares en una ventana de detección, suma las intensidades de los píxeles en cada región y calcula la diferencia entre estas sumas. La diferencia es usada para clasificar subsecciones de la imagen.

Detección de la posición de los ojos. Para realizar una correcta alineación de la imagen, es necesario determinar las coordenadas de los ojos [19]. Los métodos más utilizados en esta etapa son: los clasificadores Haar, el acotamiento de la región de los ojos por geometría facial y el método basado en momento invariantes binarizando la imagen y etiquetando las regiones inconexas [1].

Figura 3.
Haar-like features.

2.3. Preprocesado y normalización.

Esta etapa se lleva a cabo a partir de la información obtenida en la detección. Realizando una serie de transformaciones geométricas sobre la imagen dejándola preparada para la correcta extracción de características [10] [9]. Además, se utilizan cuatro fases para normalizar y alinear la imagen: rotación, escalado, recorte y normalización de histograma. Ver figura 4.

Figura 4.
Preprocesamiento de la imagen.

2.4. Extracción de características.

Esta etapa se emplea para obtener la información relevante del rostro al realizar una comparación. Los métodos de extracción de características de rostro no dependientes de pose se dividen en tres grandes grupos ver tabla1.

Tabla 1:

Métodos de extracción de características de rostro no dependientes de pose.

Nombre del método
1. | Métodos basados en apariencia
2. | Métodos basados en puntos característicos del rostro
3. | Métodos híbridos

1. Métodos holísticos o basados en apariencia. Estos métodos utilizan toda la región del rostro como entrada del sistema de reconocimiento de patrones de rostros. La imagen del rostro es transformada a un espacio al que se aplican técnicas estadísticas [5]. Al utilizar toda la cara como único rasgo, estos métodos suelen presentar limitaciones dadas por cambios de expresión, pose o iluminación. A continuación, se describen brevemente algunas de las técnicas más usadas para los métodos basados en apariencia.

- Principal Component Analysis (PCA). Una técnica que transforma la imagen a un subespacio (ejemplo en por el cual es posible obtener vectores de características de menor dimensionalidad sin una pérdida de información discriminativa importante [7].

- Linear Discriminant Analysis (LDA). Implementa una técnica que incorpora PCA con LDA denominada sherfaces, con el cual se consigue mayor robustez frente a cambios de iluminación [16].

- Frecuency Domain Analysis. Por último, las técnicas de análisis en el dominio de la frecuencia ofrecen una representación de la imagen en función de las componentes de baja frecuencia que presentan alta energía [25].

2. Métodos locales o basados en puntos característicos de la cara. Éstos métodos se basan en extraer los rasgos que componen el rostro como la nariz, los ojos, o la boca para clasificar sus características geométricas y/o de apariencia por separado en el sistema. Estos son algunos de los métodos locales basados en puntos característicos del rostro [8].

- Análisis de distancias a puntos característicos. Uno de los primeros sistemas de reconocimiento se basa en la técnica a partir de puntos geométricos de la cara. A partir de la detección de diferentes puntos se crean vectores que contienen datos de distancias entre los mismos. Cuantos más puntos característicos son detectados, mayor número de distancias podrán ser calculadas obteniendo así mejores resultados en el reconocimiento [8].

- Local Binary Patterns (LBP). Su algoritmo es sencillo pero dota a la información de gran robustez frente a cambios de iluminación. Se basa en ir tomando regiones respecto a un píxel central, el cual establece un valor de umbral. La región es convertida a binario dependiendo de si el valor es mayor o menor que el umbral y cada valor así hallado es concatenado para formar un sólo número binario que más tarde se pasa a decimal siendo este número el nuevo valor del píxel. La imagen dividida en regiones a la que se le aplica LBP y se obtiene su histograma. Estos histogramas son posteriormente concatenados para obtener una representación de la cara [22] [23].

- Elastic Bunch Graph Matching (EBGM.) Es una técnica que aprovecha la estructura topológica similar del rostro. Básicamente, los rostros son representadas como grafos con los nodos situados en los puntos característicos [18]. Los vértices se etiquetan con la distancia de cada nodo conteniendo un set de 40 coeficientes complejos de wavelets de Gabor en diferentes escalas y orientaciones. EBGM usa estos grafos para representar una cara humana y codifica la apariencia local usando wavelet jets [11].

- Hidden Markov Models (HMM). Presentan robustez frente a cambios de iluminación, expresión y orientación, otorgando así una ventaja frente a los métodos holísticos. Las técnicas basadas en HMM utilizan regiones horizontales de píxeles que albergan a la frente, ojos, nariz, boca y barbilla sin obtener la posición exacta de cada rasgo. Cada una de estas regiones es asignada a un estado del HMM para el reconocimiento [4].

3. Métodos híbridos. Estos métodos realizan una fusión de los dos métodos antes descritos para obtener una mejora en los resultados. Un ejemplo de este método es el resultado de realizar PCA tanto a la cara global como a cada rasgo por separado, obteniéndose eigenfaces y eigenfeatures que describen la cara.

2.5. Comparación y Reconocimiento.

Para obtener una puntuación por la cual tomar una decisión, existen varios métodos de comparación (métodos holísticos de reconocimiento, métodos basados en características y métodos híbridos de reconocimiento). En este apartado se describen algunos de los más utilizados en el estado del arte.

Utilizando el método hibrido analizando medidas de similitud y clasificadores [21].

1. Medidas de similitud o distancia.

- Distancia Euclídea. Es la distancia "ordinaria" entre dos puntos de un espacio euclídeo, la cual se deduce a partir del teorema de Pitágoras. Por ejemplo, en un espacio bidimensional, la distancia euclidiana entre dos puntos P1 y P2, de coordenadas cartesianas (x1, y1) y (x2, y2) respectivamente, es:

[1. ]

- Chi-Square. La distancia Chi-Square toma este nombre ya que la fórmula que la calcula es prácticamente idéntica a la prueba de bondad de ajuste utilizada para comparar distribuciones de probabilidad discretas. En el caso de reconocimiento biométrico, utiliza para medir la distancia entre dos vectores de características creados a partir de histogramas. El cálculo de la distancia para el caso de dos histogramas y es:

[2. ]

3. Clasificadores.

- K-Nearest Neighbours. El método k-NN es una técnica no paramétrica de clasificación de objetos basado en las muestras de entrenamiento más cercanas del espacio de características. El algoritmo se basa en encontrar los k vecinos más cercanos al objeto para, en función de la cantidad de los mismos, clasificarlos en el conjunto que tenga un mayor número de muestras cercanas. Es un método de clasificación supervisada (aprendizaje, estimación basada en un conjunto de entrenamiento y prototipos) que sirve para estimar la función de densidad de las predictoras por cada clase [13] [14].

- Support Vector Machines. Son modelos de aprendizaje usados para clasificación y regresión. El objetivo de este método es el de representar en un espacio una serie de clases y tratar de encontrar un hiperplano que las divida de forma que cree zonas en las cuales, cuando entra un dato, sea clasificado por dichas zonas. El espacio donde se representan las clases tendrá un número de dimensiones igual al número de clases, por lo que un ejemplo sencillo de representar es el caso de clasificación de dos clases [3].

3. Sistemas de reconocimiento de patrones de rostros en la nube

Hoy en día grandes compañías como Microsoft, Amazon y Google; entre otras, brindan la posibilidad de utilizar sus APIs de reconocimiento de patrones de rostro en tiempo real y están

en uso para muy diversas aplicaciones, ya sean comerciales, públicas, de uso general o privadas.

En esta sección se detallan algunos de los sistemas en uso más destacados en esta área, así como los SDKs más usados para el desarrollo de los sistemas de reconocimiento de patrones de rostros.

3.1. Reconocimiento de patrones de rostros de Microsoft.

Es un servicio basado en la nube que proporciona algoritmos de reconocimiento de rostros avanzados [12]. La API Face tiene dos funciones principales:

1. Detección de rostros con atributos.

2. Reconocimiento de rostros.

La Face API a través de estas dos clases permite aplicar los siguientes métodos:

Detección de rostros. Detecta uno o varios rostros en una imagen con alta precisión.

Comprobación facial. Este módulo comprueba la probabilidad de que dos rostros pertenezcan a la misma persona.

Reconocimiento de emociones. Integra reconocimiento de emociones y devuelve el grado de confianza sobre el análisis.

Identificación de rostros. Permite buscar, identificar y asociar rostros en su repositorio privado.

Búsqueda de rostros parecidos. Con una colección de rostros y la consulta de un rostro nuevo, esta API devuelve una colección de rostros parecidos.

Agrupación de rostros. De una serie de archivos de imagen de rostros diversos, la API permite organizar los rostros no identificados, en grupos por su parecido.

3.2. Google Cloud Vision Face

Cloud Vision ofrece tanto modelos previamente entrenados a través de una API como la capacidad de crear modelos personalizados con AutoML Vision [6].

La API de Cloud Vision, permite conocer el contenido de una imagen mediante el encapsulamiento de potentes modelos de aprendizaje automático en una API de REST. La API clasifica imágenes rápidamente en categorías, detecta objetos individuales y rostros dentro de imágenes y lee palabras impresas que aparecen en imágenes. Detecta varios rostros en una imagen, junto con los atributos faciales clave asociados, como el estado emocional o el uso de accesorios. La identificación de personas a través de rostros aun no es liberada.

3.3. Amazon Rekognition - Face

Es un servicio de análisis de imágenes y videos. En el cual se debe suministrar la imagen o video a la API y el servicio identificará objetos, personas, texto, escenas y actividades. Ofrece análisis y reconocimiento facial de alta precisión. Puede detectar, analizar y comparar rostros para una amplia variedad de casos de uso de verificación de usuarios. Está basado en la misma tecnología de aprendizaje profundo sólida y de alta escalabilidad de visión artificial [2].

Este proyecto (Sistema de reconocimiento de patrones de rostros en la nube) está basado en el Reconocimiento de patrones de rostros de Microsoft.

4. Sistema de reconocimiento de patrones de rostros en la nube

En este apartado se describe en detalle los módulos del sistema de reconocimiento de patrones de rostros en la nube utilizando la API de Microsoft con los servicios cognitivos empleados en el proyecto [12]. Ver figura 5.

Figura 5.
Sistema de reconocimiento de patrones de rostros bajo la API de Microsoft Azure.

Para poder utilizar los servicios de reconocimiento de patrones de rostro de Microsoft se debe consumir un servicio web y una clave de suscripción como se puede mostrar en la figura 6. Microsoft proporciona una serie de servidores en donde hospeda este servicio. Este proyecto utiliza el servicio en el servidor https://westus.api.cognitive.microsoft.com/face/v1.0/.

Figura 6.
Servicio web del reconocimiento de patrones de rostros en el servidor de Microsoft Azure.

A continuación, se describen los módulos de la API Face de Microsoft.

Identificación de rostros. Este módulo permite buscar, identificar y asociar caras en un repositorio privado de hasta un millón de personas. Indica a quién pertenece un rostro de entrada dada una base de datos de personas etiquetadas. En este repositorio se deben agregar una serie de imágenes que constituyan la identidad de una persona. En la figura 7 se puede mostrar la clasificación de personas y el resultado del procesamiento de identificación de rostros.

Figura 7.
Identificación de rostro a partir de un repositorio de rostros.

Comparación de rostros. Esta función permite comparar una imagen de rostro contra una base de datos de un repositorio privado. En esta comparación los resultados se mostrarán como imágenes miniaturas del rostro de consulta y miniaturas de rostros similares con porcentaje de exactitud. Se mostrarán los resultados del modo 'MatchPerson' y del modo 'MatchFace'. El modo 'MatchPerson' devuelve los rostros candidatos principales entre las personas reconocidas como la misma persona con el rostro de consulta, por lo que si no se reconocen los rostros de los candidatos como la misma persona con el rostro de consulta, no se devolverá a nadie, mientras que el modo 'MatchFace' devuelve los rostros de los candidatos principales con mayor confianza de similitud sin verificar si la cara devuelta pertenece a la misma persona con la cara de consulta. Ver figura 8.

Figura 8.
Comparación de rostros.

Agrupación de rostros. Esta función permite clasificar rostros de acuerdo a su similitud de apariencia en grupos de personas. Puede elegir una carpeta de varias imágenes de rostros y estos serán agrupados por su porcentaje de similitud en grupos de personas, Como se puede ver en la figura 9 los rostros detectados se agruparon por su similitud.

Figura 9.
Agrupación de rostros similares.

La verificación rostro a rostro. Esta función de la API Comprueba la probabilidad de que dos rostros de diferentes imágenes pertenezcan a la misma persona. La API devuelve un resultado de confianza indicando cual es la probabilidad de que dos caras pertenezcan a la misma persona. Ver figura 10.

Figura 10.
Verificación de rostro a rostro.

Comprobación de rostro. Determina si un rostro consultado pertenece al repositorio guardado de una persona. Puede seleccionar una imagen de un solo rostro, el rostro detectado se mostrará en la imagen. Al hacer la verificación se obtendrá la probabilidad de que este rostro mostrado en la imagen pertenezca al repositorio de la base de datos del sistema. Ver figura 11.

Figura 11.
Comprobación de rostro por repositorio de imágenes y nivel de confianza.

Detección de caras. Esta función de la API detecta uno o varios rostros en una imagen, por cada reconocimiento se dibuja un rectángulo donde se encuentran los rostros en la imagen, junto con atributos faciales que contienen predicciones de características faciales basadas en aprendizaje automático.

Como se puede ver en la figura 12 las características de atributos faciales disponibles son: edad, emoción, sexo, postura, sonrisa y vello facial, junto con 27 puntos de referencia para cada rostro de la imagen. También se integra reconocimiento de emociones y devuelve el grado de confianza de un conjunto de emociones para cada rostro de una imagen.

Figura 12.
Detección de rostro (obteniendo una serie de atributos faciales).

5. Conclusión

En el presente proyecto se ha estudiado, implementado y documentado el servicio de reconocimiento de patrones de la API de Microsoft en la Nube. Este sistema ha sido evaluado en diferentes aspectos como el rendimiento en detección de rostros y en el reconocimiento e identificación de rostros.

Se consideraron para su funcionamiento, técnicas del estado del arte para cada etapa del sistema. La utilización de diferentes técnicas permite su estudio y comparación frente a diferentes escenarios impuestos por las bases de datos del repositorio de imágenes de rostros.

Tras la implementación de eta tecnología, se han llevado a cabo experimentos que tienen como objetivo evaluar las etapas con mayor influencia sobre el funcionamiento global.

Gracias a la posibilidad de generar resultados a partir de las bases de datos de repositorio de imágenes de rostros por parte del sistema con procesamiento de los servicios en la Nube de Microsoft Azure, ha sido posible medir la precisión tanto de la etapa de detección como de la etapa de reconocimiento obteniendo los siguientes resultados: sobre las pruebas realizadas.

· Límites de tamaño de imagen Máximo en la API de visión artificial de Microsoft: de 1 KB a 6 MB a por imagen.

· Velocidad de la API de Visión Artificial de Microsoft: 10 solicitudes por segundo.

· Pruebas de rendimiento:

Prueba A) Considerando un enlace de internet asíncrono ADSL de 60 Mbps descarga por 10 Mbps de subida (Enlace A).

Prueba B) Considerando un enlace de internet asíncrono ADSL de 15 Mbps descarga por 3 Mbps de subida (Enlace b).

· Prueba A = 1.11 segundos / 10 imágenes de 1 MB máximo cada una.

· Prueba A = 3.87 segundos / 10 imágenes de 1 MB máximo cada una.

Para estas pruebas se utilizaron los mismos 10 archivos en dos enlaces diferentes Enlace A y Enlace B.

Se debe tener en cuenta que a una mayor calidad de imagen facial significa una mejor precisión de detección y reconocimiento. Se debe tener en cuenta que los rostros de alta calidad además serán mejor reconocidos si se considera una foto: frontal, clara y el tamaño del rostro sugerido para un buen desempeño sea de 200x200 píxeles (100 píxeles entre los ojos) o más grande. Los formatos compatibles probados fueron: JPEG, PNG, GIF (el primer fotograma) y el formato BMP. El tamaño de archivo de imagen permitido es de 1 KB a 6 MB.

Las caras son detectables cuando su tamaño mínimo es de 36x36 a 4096x4096 píxeles. Si necesita detectar caras muy pequeñas pero claras, se debe intentar ampliar la imagen de entrada. Y se pueden devolver hasta 64 de rostros procesados por una imagen.

Referencias

A. Nabatchian, E. Abdel-Raheem, and M. Ahmadi. Human face recognition using different moment invariants: A comparative study. In Image and Signal Processing, 2008. CISP '08. Congress on, volume 3, pages 661-666, 2008.

Apéndice A. Servicio cognitivo de reconocimiento de patrones de rostros de Microsoft.

Corinna Cortes and Vladimir Vapnik. Support-vector networks. Mach. Learn., 20(3):273 297, September 1995.

Ferdinando Samaria and Steve Young. Hmm-based architecture for face identification. Image and Vision Computing, 12(8):537 - 543, 1994.

Gary Bradski and Adrian Kaehler. Learning OpenCV. O'Reilly Media Inc., 2008.

Google. (2018). Google Cloud Vision. 11/Oct/2018, de Google Sitio web: https://cloud.google.com/vision/.

I.T. Jolliffe. Principal Component Analysis. Springer Verlag, 1986.

Ingemar J. Cox, J. Ghosn, and P.N. Yianilos. Feature-based face recognition using mixturedistance. In Computer Vision and Pattern Recognition, 1996. Proceedings CVPR '96, 1996 IEEE Computer Society Conference on, pages 209-216, 1996.

ISO/IEC 19794-5:2011. Information technology - biometric data interchange formats - part 5: Face image data. In International Organization for Standardization, 2011.

John C. Russ. Image Processing Handbook, Fourth Edition. CRC Press, Inc., Boca Raton, FL, USA, 4th edition, 2002.

Laurenz Wiskott, Jean-Marc Fellous, Norbert Krüger, and Christoph Von Der Malsburg. Face recognition by elastic bunch graph matching. IEEE TRANSACTIONS ON PATTERN NALYSIS AND MACHINE INTELLIGENCE, 19:775-779, 1997.

Microsoft Azure . (2018). Computer Vision. 11/Oct/2018, de Microsoft Sitio web: https://azure.microsoft.com/en-us/services/cognitive-services/computer-vision/.

Nobuyuki Otsu. A Threshold Selection Method from Gray-level Histograms. IEEE Transactions on Systems, Man and Cybernetics, 9(1):6266, 1979.

P. Parveen and Bhavani Thuraisingham. Face recognition using multiple classifiers. In Tools with Artificial Intelligence, 2006. ICTAI '06. 18th IEEE International Conference on, pages 179186, 2006.

P. Viola and M. Jones. Rapid object detection using a boosted cascade of simple features. In Computer Vision and Pattern Recognition, 2001. CVPR 2001. Proceedings of the 2001 IEEE Computer Society Conference on, volume 1, pages I-511 I-518 vol.1, 2001.

P.N. Belhumeur, J.P. Hespanha, and D. Kriegman. Eigenfaces vs. fisherfaces: recognition using class specific linear projection. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 19(7):711-720, 1997.

Paul Viola and Michael Jones. Robust real-time face detection. International Journal of Computer Vision, 57:137154, 2004.

Philipp Wagner. Local binary patterns in opencv. http://www.bytefish.de/blog/local_ binary_patterns/, November 2011. [36] Philipp Wagner. Machine learning with opencv2. www.bytefish.de, February 2012.

Phillip Ian Wilson and Dr. John Fernandez. Facial feature detection using haar classifiers. Journal of Computing Sciences in Colleges, pages 127-133, 2006.

R. Lienhart and J. Maydt. An extended set of haar-like features for rapid object detection. In Image Processing. 2002. Proceedings. 2002 International Conference on, volume 1, pages I900I903 vol.1, 2002

Sergios Theodoridis and Konstantinos Koutroumbas. Pattern Recognition, Fourth Edition. Academic Press, 4th edition, 2008.

Timo Ahonen, Abdenour Hadid, and Matti Pietikainen. Face description with local binary patterns: Application to face recognition. IEEE Trans. Pattern Anal. Mach. Intell., 28(12):2037-2041, December 2006.

Timo Ahonen, Abdenour Hadid, and Matti Pietikainen. Face recognition with local binary patterns. In Tomás Pajdla and Jirí Matas, editors, Computer Vision - ECCV 2004, volume 3021 of Lecture Notes in Computer Science, chapter 36, pages 469-481. Springer Berlin Heidelberg, Berlin, Heidelberg, 2004.

U. Raghavendra, P.K. Mahesh, and Anjan Gudigar. A novel face recognition method using pca, lda and support vector machine. In Natarajan Meghanathan, Nabendu Chaki, and Dhinaharan Nagamalai, editors, Advances in Computer Science and Information Technology. Computer Science and Engineering, volume 85 of Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering, pages 241 249. Springer Berlin Heidelberg, 2012.

Ziad M. Hafed and Martin D. Levine. Face recognition using the discrete cosine transform. Int. J. Comput. Vision, 43(3):167-188, July 2001.

Apéndice A. Servicio cognitivo de reconocimiento de patrones de rostros de Microsoft.

Abreviaciones y Acrónimos

API: Application Programming Interface

DCT: Discrete Cosine Transform

DFT: Discrete Fourier Transform

DWT: Discrete Wavelet Transform

EBGM: Elastic Bunch Graph Matching

GMM: Gaussian Mixture Models

HMM: Hidden Markov Models

LBP: Local Binary Patterns

LDA: Linear Discriminant Analysis

PCA: Principal Component Analysis

SDK: Software Development Kit

SVM: Support Vector Machine

Se anexa código fuente para la prueba del servicio cognitivo de Microsoft para el reconocimiento de patrones de rostros.

using System;

using System.Net.Http.Headers;

using System.Text;

using System.Net.Http;

using System.Web;

namespace CSHttpClientSample

{

static class Program

{

static void Main()

{ MakeRequest();

Console.WriteLine("Hit ENTER to exit...");

Console.ReadLine();

}

static async void MakeRequest()

{

var client = new HttpClient();

var queryString =

HttpUtility.ParseQueryString(string.Empty);

// Request headers

client.DefaultRequestHeaders.Add("Ocp-Apim-

Subscription-Key", "{subscription key}");

// Request parameters queryString["returnFaceId"] = "true"; queryString["returnFaceLandmarks"] = "false"; queryString["returnFaceAttributes"] = "{string}";

var uri =

"https://westus.api.cognitive.microsoft.com/face/v1.0/detect?" + queryString; HttpResponseMessage response;

// Request body

byte[] byteData = Encoding.UTF8.GetBytes("{body}");

using (var content = new ByteArrayContent(byteData))

{

content.Headers.ContentType = new

MediaTypeHeaderValue("< your content type, i.e.

application/json >");

response = await client.PostAsync(uri, content);

}

}

}

}