Sobre el proyecto
face_recognition es una biblioteca de Python y una herramienta de línea de comandos para reconocer y manipular rostros. Está construida sobre los modelos de reconocimiento facial de vanguardia de dlib, y el archivo README reporta una precisión del 99.38% en el benchmark Labeled Faces in the Wild (LFW). Proporciona una API sencilla para localizar rostros, extraer rasgos faciales, calcular codificaciones faciales y comparar rostros para identificar personas.
## Características principales
- Encuentra todos los rostros en una imagen con `face_locations()`, incluyendo un modelo CNN opcional basado en aprendizaje profundo para mayor precisión (requiere CUDA para un buen rendimiento).
- Localiza y delinea rasgos faciales (ojos, nariz, boca, barbilla) con `face_landmarks()`, permitiendo aplicaciones como el maquillaje digital.
- Identifica rostros comparando codificaciones faciales de 128 dimensiones generadas por `face_encodings()` y emparejadas mediante `compare_faces()`.
- Incluye dos programas de línea de comandos: `face_recognition` para identificar personas conocidas en una carpeta de imágenes, y `face_detection` para obtener las coordenadas del cuadro delimitador del rostro.
## Instalación
- Requiere Python 3.3+ o Python 2.7, en macOS o Linux. Windows no es oficialmente compatible, pero puede funcionar con las instrucciones proporcionadas por la comunidad.
- `dlib` con enlaces de Python debe instalarse primero (compilar desde el código fuente en macOS/Ubuntu, o usar una máquina virtual preconfigurada).
- Instalar mediante `pip3 install face_recognition` después de instalar `cmake` (por ejemplo, `brew install cmake` en macOS).
- Se incluyen guías adicionales para plataformas como Nvidia Jetson Nano, Raspberry Pi 2+, FreeBSD (`pkg install graphics/py-face-recognition`) y Windows.
- Se proporciona una imagen de Docker para facilitar el despliegue en hosts en la nube como Heroku o AWS.
## Ejemplo de uso (Python)
```python
import face_recognition
# Encontrar rostros en una imagen
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image)
# Obtener rasgos faciales
face_landmarks_list = face_recognition.face_landmarks(image)
# Identificar a una persona
known_image = face_recognition.load_image_file("biden.jpg")
unknown_image = face_recognition.load_image_file("unknown.jpg")
biden_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]
results = face_recognition.compare_faces([biden_encoding], unknown_encoding)
```
## Interfaz de línea de comandos
- `face_recognition ./known_people/ ./unknown_pictures/` imprime una línea por cada rostro detectado, con el nombre del archivo y el nombre reconocido (o `unknown_person`).
- `--tolerance 0.54` hace que la coincidencia sea más estricta; `--show-distance true` imprime la distancia facial calculada.
- `--cpus 4` (o `-1` para todos los núcleos) permite el procesamiento paralelo en sistemas multinúcleo.
- `face_detection ./folder_with_pictures/` imprime las coordenadas de píxeles superior, derecha, inferior e izquierda para cada rostro encontrado.
## Scripts de ejemplo
El repositorio incluye muchos ejemplos, incluyendo:
- Detección de rostros con el modelo HOG predeterminado y el modelo de aprendizaje profundo CNN.
- Reconocimiento en tiempo real mediante cámara web (versiones simples y rápidas, requiere OpenCV).
- Reconocimiento facial en archivos de video y en una Raspberry Pi con cámara.
- Servicio web HTTP usando Flask.
- Clasificadores de K-vecinos más cercanos (KNN) y SVM para entrenar con múltiples imágenes por persona.
- Desenfoque de rostros en video de cámara web en vivo.
## Advertencias
- El modelo de reconocimiento está entrenado con adultos y puede no funcionar bien con niños utilizando el umbral de comparación predeterminado de 0.6.
- La precisión puede variar entre grupos étnicos; la wiki discute problemas de precisión conocidos.
- Para el despliegue, se incluyen un Dockerfile e imágenes de Docker preconstruidas, con soporte de GPU para sistemas Linux que utilizan controladores Nvidia y nvidia-docker.
Este proyecto es ampliamente utilizado como un envoltorio simple y de alto nivel para las capacidades de reconocimiento facial de dlib y es adecuado para la creación de prototipos y aplicaciones de producción donde se necesite detección e identificación facial.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.