Aplicativo nativo para inferência on-device de detecção de objetos (Xícara, Mouse, Celular).
Pipeline completo implementado: Coleta → Treinamento → Exportação → Deploy Mobile.
Este projeto é uma prova de conceito de engenharia de ML focada em dispositivos móveis. O objetivo foi orquestrar um fluxo de trabalho completo de Visão Computacional, culminando em um aplicativo Android capaz de realizar inferência em tempo real utilizando um modelo YOLOv8 quantizado para TFLite.
O core do desafio técnico foi o pós-processamento do tensor de saída ([1, 7, 5376]) diretamente em Kotlin, sem dependências pesadas de Python no device.
A estrutura foi modularizada para separar a preparação de dados da lógica de aplicação.
| Componente / Módulo | Descrição Técnica |
|---|---|
| Dataset & Anotação | Coleta manual (~150 imgs) e bounding box via Roboflow. |
| Treinamento (Colab) | Transfer Learning com yolov8n.pt. 25 épocas. |
| Conversão de Modelo | Export para .tflite (Float32, Input 512x512). |
| Android Wrapper | Integração ActivityResultContracts para I/O de galeria. |
| Motor de Inferência | Parser de Tensor [1, 7, 5376], NMS e normalização de coords. |
| UI/UX | Renderização de Bounding Boxes em Canvas sobreposto. |
Nota Técnica: O maior desafio foi a matemática de coordenadas. O modelo YOLOv8 exportado possui um output de shape
[1, 7, 5376].
- Parsing do Tensor: Foi necessário iterar sobre as 5376 detecções potenciais, filtrando pelo
SCORE_THRESHOLD. - Escalonamento: As coordenadas retornadas são relativas ao input do modelo (512x512). Implementada lógica para mapear de volta para a resolução original da imagem (
Bitmap) e, subsequentemente, para a densidade de pixels da tela do dispositivo.
Pré-requisitos: Android Studio Ladybug ou superior, JDK 17+.
- Clone o repositório
git clone [https://github.com/seu-usuario/android-yolo-detector.git](https://github.com/seu-usuario/android-yolo-detector.git)- Abra o projeto no Android Studio e aguarde o Sync do Gradle
- Configure um emulador (Recomendado: API 26+)
- Build & Run: O app será instalado no dispositivo virtual/físico.
Dica: Arraste imagens de teste (xícaras, mouses) para o emulador antes de rodar
- Clique em "Carregar Imagem".
- Selecione uma foto da galeria.
- O app processará o Bitmap e desenhará as caixas de detecção.