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

En face-alignment podras encontrar estas y más formas de instalar la libreria.

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 😀
  1. Fernando Miño dice:

    Se ve interesante, gracias por compartir

  2. Unknown dice:

    ¿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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey