Resumen del caso
El proyecto se desarrolló para gafas inteligentes RK3588 Android. Los rostros frontales, perfiles izquierdos y perfiles derechos se detectan localmente sin un servicio de reconocimiento en la nube. El SDK recibe fotogramas Camera2 o imágenes locales y devuelve caja facial, cinco puntos, orientación, yaw, confianza, ID de seguimiento breve y tiempo de proceso. La entrega incluyó Core AAR, Face AAR, Camera2 Demo y documentación de integración.
El alcance es detección facial y estimación de pose, no identificación de personas. No incluye nombre o número de empleado, base de datos facial, verificación 1:1, búsqueda 1:N, prueba de vida ni análisis de edad, género o emoción.
Contexto del proyecto
El dispositivo objetivo era una gafa inteligente RK3588 Android arm64-v8a. El cliente necesitaba localizar personas en la vista previa para selección táctil, ampliación local e interacciones posteriores. El procesamiento debía ejecutarse sin conexión en el dispositivo e integrarse en una aplicación Android existente.
Las entradas incluyen Camera2 YUV_420_888, NV21, RGBA_8888 e imágenes fijas. También se trataron la diferencia entre la tasa de cámara e inferencia, la vida del búfer, rotación, espejo, YUV stride y el mapeo de coordenadas del modelo a la vista previa.
Alcance de entrega
| Elemento | Contenido |
|---|---|
| Android SDK | Core AAR y Face AAR |
| Demo | Camera2 Demo APK de detección facial en tiempo real |
| API | Detección síncrona y asíncrona |
| Entrada | YUV_420_888, NV21, RGBA_8888 e imágenes locales |
| Salida | Caja, confianza, cinco puntos, frontal/izquierda/derecha, yaw, trackId y tiempo por llamada |
| Documentos | Guía de integración, ejemplos, diagnóstico, notas y lista SHA-256 |
| Ejecución | Procesamiento local sin conexión en RK3588 Android |
Solución técnica
Flujo: Camera2 o imagen fija → formato y orientación → detección OpenCV YuNet → geometría de cinco puntos → clasificación frontal/izquierda/derecha → seguimiento breve → callback y superposición en interfaz.
La base usa OpenCV 4.10.0 y YuNet en CPU. El flujo en tiempo real usa 320×320; las imágenes fijas, 640×640. Las tres direcciones comparten detector y API, y se estiman mediante la geometría de los puntos.
La Demo envía una petición cada 100 ms, unas diez por segundo. Cada instancia mantiene una sola petición asíncrona pendiente. DirectBuffers de la aplicación guardan Y/U/V. Camera2 usa acquireLatestImage() para omitir fotogramas antiguos y limitar la latencia acumulada.
Causa y corrección
Algunas imágenes se detectaban en escritorio, pero devolvían cero en Android Demo. La comparación del modelo, la entrada y la salida móvil aisló el problema en la lectura de la matriz OpenCV Java.
FaceDetectorYN.detect() devuelve una matriz monocanal N×15. El código Android original no leía los 15 valores de cada fila, por lo que resultados válidos se descartaban en la comprobación de longitud. La corrección lee la fila completa según columnas y canales. También se añadieron rotación, conversión de color, alternativa para imágenes anchas y comprobaciones de coherencia AAR.
La regresión se amplió a rostros frontales, perfiles, muestras sin rostro, imágenes fijas y Camera2 para separar problemas de modelo, preprocesado, decodificación y coordenadas UI.
Verificación de ingeniería
Los datos proceden del registro de entrega del 29-07-2026 y se aplican a Eye Algo Face SDK 0.4.5 fix5 en RK3588 Android arm64-v8a. Prueban el build, la API y el flujo corto indicados; no establecen precisión en lote, estabilidad prolongada ni rendimiento de producción.
| Prueba | Resultado |
|---|---|
| Tests unitarios SDK, Core y Face | 157/157 superados |
| Tests unitarios de Demo | 13/13 superados |
| Tests de herramientas Python | 143/143 superados |
| Android Lint | 0 Error, 19 Warning |
| Build APK y AAR | Superado |
| Instalación, inicio y permisos RK3588 | Superado |
| Camera2 durante 10 segundos | submit/callback 79/79; dropped 0 |
| Escaneo corto de errores | Sin errores de crash, cámara, permisos o biblioteca nativa |
Las muestras incluyen frontal, perfiles simétricos y negativos sin rostro. Este conjunto pequeño verifica detección, dirección e interfaz; no sustenta Precision, Recall, F1 ni precisión por pose.
Resultados y aplicaciones
- Detección frontal, izquierda y derecha reunida en una API Android SDK.
- Camera2 e imágenes locales comparten la misma estructura de salida.
- El procesamiento local reduce la carga de vídeo original y funciona sin red.
- Cajas y puntos sirven para selección, seguimiento breve, ampliación y algoritmos posteriores.
- El paquete incluye Demo, AAR, integración, diagnóstico y lista de hashes.
Aplicable a selección de personas en gafas inteligentes, escenas con varias personas, indicación de dirección, imágenes sin conexión y preparación de recortes. Identidad, prueba de vida y análisis conductual posteriores quedan fuera del alcance.
Límites de aceptación
El artefacto actual es para pruebas del cliente e integración, no está firmado para producción. Antes del lanzamiento se requieren el material de firma del cliente y un conjunto real congelado para confirmar anotaciones, Precision, Recall, F1, matriz de confusión por pose y umbrales permitidos.
Perfiles extremos, oclusión, reflejo fuerte, poca luz, caras pequeñas y recaptura de pantalla aún pueden causar omisiones o errores de dirección. El tiempo de una imagen no representa media, P95, tasa estable ni rendimiento prolongado. La prueba de ocho horas no completada no se declara superada.
Preguntas frecuentes
¿El SDK necesita red?
La detección se ejecuta en RK3588 Android y no depende de la nube. La conexión de la aplicación depende de las funciones del cliente.
¿Incluye identificación facial?
No. Incluye posición, cinco puntos y dirección frontal/izquierda/derecha, sin nombre, base facial, 1:1 ni 1:N.
¿Cómo se integra en Android?
Core AAR y Face AAR ofrecen API síncrona y asíncrona. Se incluyen Camera2 Demo, formatos, reglas de búfer, ejemplos y diagnóstico.
¿Qué comprobaciones RK3588 se completaron?
Instalación, inicio, permisos, muestras fijas y Camera2 durante diez segundos. Precisión formal, firma y estabilidad de ocho horas son elementos separados.
¿Puede usarse directamente en otro RK3588?
La API y el método se reutilizan, pero cámara, Android, orientación, stride, memoria, temperatura y carga exigen repetir build, función, rendimiento y estabilidad.

Online
Phone
WeChat
Top