App Android de reconocimiento facial en el dispositivo
Registrar a una persona a partir de su rostro e identificarla después, sin conexión a internet y sin depender de un servidor.
- Período
- 2025 · ~3 meses
- Equipo
- Pequeño
- Mi rol
- Mobile developer
- Foco
- 100% Android
Proyectos bajo acuerdo de confidencialidad. Los nombres de clientes, el código y las capturas no se muestran; los títulos son descriptivos.
Contexto
Aplicación nativa para Android que captura el rostro con la cámara, lo procesa y genera su huella facial (un vector numérico) para registrar a la persona y luego identificarla. Todo se ejecuta en el propio dispositivo.
La usan operadores encargados de registrar e identificar personas en tareas de control de acceso. Partimos de una prueba de concepto previa; antes de la app final hicimos varias pruebas de concepto y librerías internas de apoyo.
Problema
Identificar personas de forma rápida y sin conexión.
El reto técnico: ejecutar modelos de visión artificial en un móvil con buen rendimiento. Detectar el rostro en tiempo real, capturarlo solo cuando está de frente, alinearlo, generar el vector y buscarlo por similitud entre los ya registrados.
Qué hice
- Captura en tiempo real con la cámara del dispositivo (Camera2) y procesamiento de cada fotograma.
- Detección del rostro y sus puntos de referencia, con captura automática cuando la persona mira de frente.
- Alineación, recorte y normalización del rostro antes de pasarlo al modelo.
- Generación del vector facial con una red neuronal ejecutada en el dispositivo.
- Búsqueda por similitud entre vectores mediante código nativo, y almacenamiento local de los registros.
Desafíos resueltos
- Procesar los fotogramas de la cámara en segundo plano sin bloquear la interfaz.
- Adaptar la lógica de procesamiento de imagen para que funcionara en Android.
Arquitectura
App nativa offline: el procesamiento de imagen, la inferencia del modelo y la búsqueda de vectores se hacen dentro del dispositivo.
Stack
- Java
- Android SDK
- Camera2
- Android NDK (C/JNI)
- Gradle
- ONNX Runtime
- MediaPipe
- OpenCV
- SQLite
Aprendizajes
Desarrollo Android nativo, modelos de IA en el dispositivo, procesamiento de imágenes, embeddings y búsqueda por similitud vectorial, e integración de código C en Android.