Detección Facial 2D y 3D con Python y face-alignment
Introducción:
Hola amigos de Internet, les doy la bienvenida a Mi Diario Python, el mejor blog hispano para Aprender Python.
En este articulo, me dedicare a presentarles las características de face-alignment, una librería escrita en Python utilizando PyTorch, la cual nos permite realizar procesos de detección facial en segunda y tercera dimensión.
En este articulo no me centrare mucho en mostrarles como funcione el códgio de la libreria ni los procesos internos. Nos limitaremos a realizar algunos ejemplos.
El siguiente gif, nos muestra un ejemplo del funcionamiento de face-alignment:
Increíble ¿No lo crees?
Recursos:
Puedes descargar la librería ingresando al siguiente enlace: https://github.com/LuisAlejandroSalcedo/face-alignment.
O puedes clonar el repositorio utilizando git.
git clone https://github.com/1adrianb/face-alignment
Requisitos:
Para poder utilizar e instalar la librería necesitaremos algunos módulos extras. En el repositorio en donde podras descargar la libreria estan todos los recursos.
Para poder instalar las librerias necesarias, utilizaremos el archivo "requirements.txt", en este archivo se encuentran los nombres de los módulos necesarios. Para poder instalar estos modulos, ejecutaremos el siguiente comando en nuestra terminal o consola:
pip install -r requirements.txt
Instalación:
Luego de haber instalado PyTorch, los recursos y los requisitos, podemos proceder a la instalación de la libreria (Nota: antes de instalar la libreria es necesario instalar los requisitos primero. De no seguir este orden, la instalación de la librería no procederá.):
python setup.py install
Ejemplos:
Muy bien, ya que dispongamos de la libreria face-alignment podemos empezar a utilizar sus métodos y funciones.
El primer ejemplo que realizaremos, sera una detección facial en segunda dimensión (2D).
import face_alignment from skimage import io fa = face_alignment.FaceAlignment(face_alignment.LandmarksType._2D, enable_cuda=True, flip_input=False) input = io.imread('../test/assets/aflw-test.jpg') preds = fa.get_landmarks(input)
En la carpeta "test/assets/" hay una imagen "aflw-test.jpg". La cual el resultado sera muy parecido al de la imagen anterior.
Como pueden observar, la precisión es extraordinario. La detección se realiza desde diferentes ángulos, sin importar el rostro esta de frente o de perfil.
Ahora un ejemplo de una detección facial en tercera dimensión (3D):
import face_alignment from skimage import io fa = face_alignment.FaceAlignment(face_alignment.LandmarksType._3D, enable_cuda=True, flip_input=False) input = io.imread('../test/assets/aflw-test.jpg') preds = fa.get_landmarks(input)
Y el resultado seria parecido a esto.
face-alignment también nos proporciona el método "process_folder", el cual hace un reconocimiento facial a todas la imágenes de una carpeta determinado por usted mismo:
import face_alignment from skimage import io fa = face_alignment.FaceAlignment(face_alignment.LandmarksType._2D, enable_cuda=False, flip_input=False) preds = fa.process_folder('../test/assets/', all_faces=True)
Este seria el resultado para una carpeta con 12 imágenes.
¿Que te pareció? Muy interesante no es cierto. Espero que te sea de mucha ayuda y realices unas muy buenos proyectos.
Mi nombre es Luis, y te doy las gracias por disfrutar de nuestro blog 😀
-
¿La traza del reconocimiento (rayas blancas) las almacena en alguna variable?.
Lo pregunto para poder trabajar con ella, por ejemplo comparaciones de rostro. Saludos, buen post
Deja una respuesta
Se ve interesante, gracias por compartir