>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Python

Cómo construir una pipeline completa de análisis facial en un solo paquete Python con la biblioteca UniFace

Si alguna vez has tenido que construir un proyecto de reconocimiento facial, probablemente recuerdes la pesadilla de las dependencias.

Para la detección, tomas un repositorio de PyTorch; para la malla facial 3D, incorporas el engorroso MediaPipe; para la segmentación, desentierras un archivo con un modelo de hace cinco años; y para estimar la dirección de la mirada, escribes tus propios trucos sobre pesos sin procesar de Google Drive. El resultado es un entorno virtual que crece a decenas de gigabytes, versiones de bibliotecas en conflicto, y builds de imágenes Docker que se convierten en una apuesta.

Hace poco me encontré con una nueva biblioteca llamada UniFace, cuyo autor decidió poner orden en este zoológico. El proyecto consolida prácticamente todas las tareas principales de visión por computadora relacionadas con el rostro humano bajo una única interfaz minimalista.

Qué hay dentro de la caja

UniFace funciona como un kit de construcción. Toda la lógica de inferencia se ejecuta en ONNX Runtime, por lo que no tendrás que luchar con la compilación de extensiones C++ personalizadas ni con el ensamblaje de dependencias delicadas.

La instalación viene en dos variantes:

pip install "uniface[cpu]"   # Для обычных процессоров и Apple Silicon
pip install "uniface[gpu]"   # Для машин с NVIDIA CUDA

En el primer lanzamiento, la biblioteca descarga automáticamente los pesos preentrenados requeridos y verifica sus checksums mediante SHA-256. Sin archivos corruptos ni colocación manual de checkpoints en carpetas.

El punto de entrada a la biblioteca es la clase FaceAnalyzer. Por defecto, realiza operaciones básicas como detección, alineación y generación de embeddings. Si necesitas atributos adicionales, simplemente pasas los módulos requeridos a la lista de predictores.

import cv2
from uniface import FaceAnalyzer, FairFace

# Подключаем предиктор демографии
analyzer = FaceAnalyzer(predictors=[FairFace()])

# Анализируем изображение
image = cv2.imread("photo.jpg")
for face in analyzer.analyze(image):
    print(face.bbox, face.sex, face.age_group, face.embedding.shape)

Siempre que no conectes explícitamente un módulo, los campos correspondientes (emotion, quality, age_group) permanecen como None. Esto conserva recursos computacionales y evita que la memoria se llene con modelos innecesarios.

Desglose de las características clave

UniFace cubre quince tareas aplicadas. Veamos cómo se ven en la práctica.

1. Detección, puntos clave y evaluación de calidad

La biblioteca incluye seis arquitecturas de detección: RetinaFace, SCRFD, CenterFace, BlazeFace, así como adaptaciones de YOLOv5-Face y YOLOv8-Face. Puedes cambiar fácilmente entre modelos ligeros para chips móviles y redes pesadas para ángulos complejos.

Para el posicionamiento de landmarks, están disponibles tanto anotaciones clásicas de 68 y 106 puntos (vía PIPNet y 2d106det) como cuadrículas densas de 3D Face Mesh con 468 y 478 puntos.

En pipelines de reconocimiento del mundo real, a menudo necesitas filtrar frames borrosos o demasiado oscuros. Para abordar esto, UniFace agregó la métrica de calidad eDifFIQA en cuatro tamaños (T, S, M, L).

2. Segmentación de retratos y matting

Cuando necesitas separar a una persona del fondo o aislar regiones faciales específicas (labios, ojos, cabello, piel), entran en juego los modelos de parsing:

  • BiSeNet segmenta el rostro en 19 clases.
  • XSeg crea máscaras incluso con oclusión parcial del rostro por objetos extraños.
  • MODNet realiza matting de retratos sin usar trimaps.

El resultado del matting se mantiene limpio incluso en contornos complejos como el cabello suelto:

3. Pose de cabeza y dirección de la mirada

La estimación del ángulo de rotación de la cabeza (Head Pose) utiliza una representación vectorial de rotación de seis dimensiones y devuelve los ángulos de pitch, yaw y roll.

Para el seguimiento de la atención del usuario, MobileGaze basado en ResNet y MobileNetV2 está integrado. Predice el vector de mirada en el espacio, lo cual es conveniente para interfaces de monitoreo de atención del conductor o análisis de interacción con pantallas.

4. Atributos, emociones y detección de vitalidad

Los módulos de atributos determinan el género, grupo de edad y raza a través de FairFace, reconocen emociones en las escalas AffectNet-7 y AffectNet-8, y detectan la presencia de gafas, gafas de sol o máscaras médicas.

Para sistemas biométricos, la protección contra spoofing es crítica. UniFace contiene MiniFASNet, que determina la vitalidad y bloquea intentos de presentar una foto impresa o repetición de video desde la pantalla de un smartphone.

5. Comparación, búsqueda y anonimización

Para la coincidencia de rostros, la biblioteca ofrece extractores de características modernos: ArcFace, AdaFace, EdgeFace, MobileFace y SphereFace. Para buscar rostros en una base de datos grande, un índice vectorial basado en FAISS está integrado.

Si la tarea está invertida—ocultar datos personales en videos o fotos para publicación pública—existe un módulo de anonimización con cinco algoritmos de difuminado.

En qué prestar atención antes de producción

Aunque el código fuente del repositorio de UniFace en sí está distribuido bajo una licencia MIT limpia, los pesos preentrenados de algunos modelos (como FairFace o AffectNet) tienen restricciones no comerciales de sus autores originales. Si estás planeando un lanzamiento comercial, asegúrate de revisar la sección de documentación de licencias del proyecto y verificar los checkpoints seleccionados.

A quién le será útil este proyecto

UniFace es ideal para quienes están hartos de pegar bibliotecas de CV dispares en una única pipeline. Es una navaja suiza lista para usar para la creación rápida de prototipos de sistemas biométricos, análisis de video, aplicaciones interactivas y servicios de moderación de contenido.

La forma más fácil de comenzar es con la documentación oficial y los notebooks interactivos en Kaggle, donde puedes probar cada modelo con tus propias imágenes en un par de minutos.

Proyectos relacionados