- Prerrequisitos
- Cómo funciona el reconocimiento facial con OpenCV
- Detección de rostros usando clasificadores en cascada en OpenCV
El reconocimiento facial se está volviendo cada vez más popular y la mayoría de nosotros ya lo estamos usando sin siquiera darnos cuenta. Ya sea una simple sugerencia de etiqueta de Facebook o un filtro de Snapchat o una vigilancia de seguridad aeroportuaria avanzada, el reconocimiento facial ya ha hecho su magia. China ha comenzado a usar el reconocimiento facial en las escuelas para monitorear la asistencia y el comportamiento de los estudiantes. Las tiendas minoristas han comenzado a utilizar el reconocimiento facial para categorizar a sus clientes y aislar a las personas con antecedentes de fraude. Con muchos más cambios en marcha, no hay duda de que esta tecnología se verá en todas partes en un futuro próximo.
En este tutorial aprenderemos cómo podemos construir nuestro propio sistema de reconocimiento facial usando la biblioteca OpenCV en Raspberry Pi. La ventaja de instalar este sistema en una Raspberry Pi portátil es que puedes instalarlo en cualquier lugar para que funcione como sistema de vigilancia. Como todos los sistemas de reconocimiento facial, el tutorial incluirá dos scripts de Python, uno es un programa de entrenador que analizará un conjunto de fotos de una persona en particular y creará un conjunto de datos (archivo YML). El segundo programa es el programa Recognizerque detecta una cara y luego usa este archivo YML para reconocer la cara y mencionar el nombre de la persona. Ambos programas que discutiremos aquí son para Raspberry Pi (Linux), pero también funcionarán en computadoras con Windows con cambios muy leves. Ya tenemos una serie de Tutoriales para principiantes para comenzar con OpenCV, puedes consultar todos los tutoriales de OpenCV aquí.
Prerrequisitos
Como se dijo anteriormente, usaremos la biblioteca OpenCV para detectar y reconocer rostros. Así que asegúrese de instalar OpenCV Library en Pi antes de continuar con este tutorial. También encienda su Pi con un adaptador 2A y conéctelo a un monitor de pantalla mediante un cable HDMI ya que no podremos obtener la salida de video a través de SSH.
Además, no voy a explicar cómo funciona exactamente OpenCV, si está interesado en aprender el procesamiento de imágenes, consulte estos tutoriales básicos y avanzados de procesamiento de imágenes de OpenCV. También puede aprender sobre contornos, detección de manchas, etc. en este tutorial de segmentación de imágenes.
Cómo funciona el reconocimiento facial con OpenCV
Antes de comenzar, es importante comprender que la detección de rostros y el reconocimiento de rostros son dos cosas diferentes. En la detección de rostros, solo se detecta el rostro de una persona, el software no tendrá idea de quién es esa persona. En el reconocimiento facial, el software no solo detectará el rostro, sino que también reconocerá a la persona. Ahora, debe quedar claro que debemos realizar la Detección facial antes de realizar el Reconocimiento facial. No me sería posible explicar cómo exactamente OpenCV detecta una cara o cualquier otro objeto para el caso. Entonces, si tiene curiosidad por saber que puede seguir este tutorial de detección de objetos.
Un video de una cámara web no es más que una larga secuencia de imágenes fijas que se actualizan una tras otra. Y cada una de estas imágenes es solo una colección de píxeles de diferentes valores reunidos en su posición respectiva. Entonces, ¿cómo puede un programa detectar una cara a partir de estos píxeles y reconocer aún más a la persona en ella? Hay muchos algoritmos detrás de esto y tratar de explicarlos está más allá del alcance de este artículo, pero como estamos usando la biblioteca OpenCV es muy simple realizar el reconocimiento facial sin profundizar en los conceptos.
Detección de rostros usando clasificadores en cascada en OpenCV
Solo si somos capaces de detectar un rostro podremos reconocerlo o recordarlo. Para detectar un objeto como la cara, OpenCV usa algo llamado Clasificadores. Estos clasificadores son un conjunto de datos pre-entrenado (archivo XML) que se pueden utilizar para detectar un objeto en particular en nuestro caso una cara. Puede obtener más información sobre los clasificadores de detección de rostros aquí. Además de detectar la cara, los clasificadores pueden detectar otros objetos como la nariz, los ojos, la matrícula del vehículo, la sonrisa, etc. La lista de clasificadores de casos se puede descargar desde el archivo ZIP a continuación
Clasificadores para la detección de objetos en Python
Alternativamente, OpenCV también le permite crear su propio clasificador que puede usarse para detectar cualquier otro objeto en una imagen entrenando su clasificador en cascada. En este tutorial usaremos un clasificador llamado “haarcascade_frontalface_default.xml” que detectará la cara desde la posición frontal. Veremos