Resumo do caso
O projeto foi desenvolvido para óculos inteligentes RK3588 Android. Rostos frontais, perfis esquerdos e perfis direitos são detectados localmente, sem serviço de reconhecimento na nuvem. O SDK recebe frames Camera2 ou imagens locais e retorna caixa facial, cinco pontos, orientação, yaw, confiança, ID de rastreamento curto e tempo de processamento. A entrega incluiu Core AAR, Face AAR, Camera2 Demo e documentação de integração.
O escopo é detecção facial e estimativa da direção da pose, não identificação de pessoas. Não inclui nome ou matrícula, banco de faces, verificação 1:1, pesquisa 1:N, prova de vida ou análise de idade, gênero e emoção.
Contexto do projeto
O dispositivo-alvo era um óculos inteligente RK3588 Android arm64-v8a. O cliente precisava localizar pessoas na pré-visualização para seleção por toque, ampliação local e interações posteriores. O processamento deveria ser offline no dispositivo e integrável a um aplicativo Android existente.
As entradas incluem Camera2 YUV_420_888, NV21, RGBA_8888 e imagens estáticas. A implementação também trata diferença entre taxa da câmera e submissão da inferência, vida útil do buffer, rotação, espelhamento, YUV stride e mapeamento das coordenadas do modelo para a tela.
Escopo da entrega
| Item | Conteúdo |
|---|---|
| Android SDK | Core AAR e Face AAR |
| Demo | Camera2 Demo APK de detecção facial em tempo real |
| API | Detecção síncrona e assíncrona |
| Entrada | YUV_420_888, NV21, RGBA_8888 e imagens locais |
| Saída | Caixa, confiança, cinco pontos, frontal/esquerda/direita, yaw, trackId e tempo por chamada |
| Documentos | Guia de integração, código de exemplo, diagnóstico, notas de versão e lista SHA-256 |
| Execução | Processamento offline no dispositivo RK3588 Android |
Solução técnica
Fluxo: Camera2 ou imagem estática → formato e orientação → detecção OpenCV YuNet → análise geométrica de cinco pontos → classificação frontal/esquerda/direita → rastreamento curto → callback e sobreposição na interface.
A linha de base usa OpenCV 4.10.0 e o detector YuNet em CPU. O fluxo em tempo real usa entrada 320×320; imagens estáticas usam 640×640. As três direções compartilham um detector e uma API, e a orientação é estimada pela geometria dos pontos.
A Demo envia uma solicitação a cada 100 ms, cerca de dez por segundo. Cada instância do SDK mantém somente uma solicitação assíncrona pendente. DirectBuffers da aplicação guardam Y/U/V. Camera2 usa acquireLatestImage() para ignorar frames antigos e limitar o acúmulo de latência.
Causa e correção
Algumas imagens eram detectadas no desktop, mas retornavam zero na Demo Android. A comparação do modelo, entrada e saída móvel isolou o problema na leitura da matriz OpenCV Java.
FaceDetectorYN.detect() retorna uma matriz de um canal N×15. O código Android original não lia os 15 valores completos de cada linha, e resultados válidos eram descartados na verificação de tamanho. A correção lê a linha completa conforme colunas e canais. Também foram adicionadas rotação, conversão de cor, fallback para imagens largas e verificação de consistência dos AARs.
A regressão passou a incluir rostos frontais, perfis, amostras sem rosto, imagens estáticas e Camera2, separando problemas de modelo, pré-processamento, decodificação e coordenadas da interface.
Verificação de engenharia
Os dados abaixo são do registro de entrega de 29/07/2026 e valem para Eye Algo Face SDK 0.4.5 fix5 em RK3588 Android arm64-v8a. Demonstram o build, a API e o fluxo curto especificados; não estabelecem precisão em lote, estabilidade longa ou desempenho de produção.
| Verificação | Resultado |
|---|---|
| Testes unitários SDK, Core e Face | 157/157 aprovados |
| Testes unitários da Demo | 13/13 aprovados |
| Testes das ferramentas Python | 143/143 aprovados |
| Android Lint | 0 Error, 19 Warning |
| Build APK e AAR | Aprovado |
| Instalação, inicialização e permissões | Aprovado |
| Camera2 por 10 segundos | submit/callback 79/79; dropped 0 |
| Varredura curta de erros | Sem erro de crash, câmera, permissão ou biblioteca nativa |
As amostras incluem rosto frontal, perfis simétricos e negativos sem rosto. Esse conjunto pequeno verifica detecção, direção e interface; não é base para Precision, Recall, F1 ou precisão por pose.
Resultados e aplicações
- Detecção frontal, esquerda e direita reunida em uma API Android SDK.
- Frames Camera2 e imagens locais usam a mesma estrutura de resultado.
- O processamento local reduz a necessidade de enviar vídeo bruto e funciona sem rede.
- Caixas e pontos podem alimentar seleção, rastreamento curto, ampliação e algoritmos posteriores.
- O pacote contém Demo, AARs, integração, diagnóstico e lista de hashes.
Aplicações incluem seleção de pessoas em óculos inteligentes, cenas com várias pessoas, indicação de direção, imagens offline e preparação de recortes. Identidade, prova de vida e análise comportamental posterior não fazem parte desta entrega.
Limites de aceitação
O artefato atual é para teste do cliente e integração de engenharia; não é uma versão assinada para produção. Antes do lançamento são necessários o material de assinatura do cliente e um conjunto real congelado para confirmar regras de anotação, Precision, Recall, F1, matriz de confusão por pose e limites aceitos.
Perfis extremos, oclusão, reflexo forte, pouca luz, rostos pequenos e recaptura de tela ainda podem causar falhas ou direção incorreta. O tempo de uma imagem não representa média, P95, taxa estável ou desempenho de longa duração. O teste de oito horas não concluído não é relatado como aprovado.
Perguntas frequentes
O SDK precisa de rede?
A detecção roda no RK3588 Android e não depende da nuvem. A conexão do aplicativo depende das funções do cliente.
Inclui identificação facial?
Não. Inclui posição, cinco pontos e direção frontal/esquerda/direita, sem nome, banco facial, 1:1 ou 1:N.
Como integrar ao aplicativo Android?
Core AAR e Face AAR oferecem APIs síncrona e assíncrona. O pacote inclui Camera2 Demo, formatos, regras de buffer, exemplos e diagnóstico.
Quais verificações RK3588 foram concluídas?
Instalação, início, permissões, amostras estáticas e Camera2 por dez segundos. Precisão formal, assinatura e estabilidade de oito horas são itens separados.
Pode ser usado diretamente em outro RK3588?
A API e a integração são reutilizáveis, mas câmera, Android, orientação, stride, memória, temperatura e carga exigem nova verificação de build, função, desempenho e estabilidade.

Online
Phone
WeChat
Top