Integração IA
Descrição e registro de alterações
Neste PR, foi implementado o backend para tradução em tempo real de sinais de Libras com Flask e TensorFlow. As principais funcionalidades incluem:
- Configuração do servidor Flask e Flask-SocketIO para comunicação via WebSocket.
- Implementação das classes
HandTracker
para detectar landmarks nas imagens eLetterPredictor
para prever a letra correspondente com base no modelo de IA. - Criação de um endpoint
/predict
para receber imagens codificadas em base64 e retornar a letra prevista. - Adição de uma classe de teste para validar o fluxo end-to-end e de um gerador de modelo mock para testes locais.
- Arquivo
requirements.txt
atualizado com dependências necessárias para o projeto.
Ticket do ClickUp
Como isso foi testado?
Ambiente de Teste:
- Sistema Operacional: MacOS 13
- Python: 3.12.6
- Frameworks e Bibliotecas: Flask 3.0.3, Flask-SocketIO 5.3.3, TensorFlow 2.14.0
-
Ferramentas: Postman para testar o endpoint HTTP
/predict
Testes Executados:
-
Teste do Servidor Flask:
- O servidor foi iniciado com o comando:
python -m app.socket_server
- Verificou-se que o servidor subiu corretamente na porta
5003
e estava pronto para receber requisições HTTP e WebSocket.
- O servidor foi iniciado com o comando:
-
Teste do Endpoint
/predict
:- Usando o Postman, foi enviada uma requisição
POST
para o endpoint:
URL:http://localhost:5003/predict
Body:{ "image_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAAAAAAAD..." }
- A resposta esperada foi verificada no formato:
{ "letter": "A" }
- Foram testados cenários de sucesso e de erro:
- Sucesso: Quando uma imagem válida foi enviada.
- Erro: Quando nenhuma imagem ou imagem inválida foi enviada.
- Usando o Postman, foi enviada uma requisição
-
Teste do WebSocket:
- Verificação de que a comunicação WebSocket estava ativa e funcional.
- Teste da conexão WebSocket no Postman e manualmente com um frontend básico em HTML e JavaScript.
-
Teste do Modelo Mock:
- O modelo mock foi gerado e carregado corretamente, validando a funcionalidade:
python create_mock_model.py
- Ao carregar o modelo no servidor, verificou-se que ele respondia com a letra correspondente ao input de landmarks.
- O modelo mock foi gerado e carregado corretamente, validando a funcionalidade:
-
Testes de Fluxo End-to-End:
- Testes de integração foram realizados chamando o HandTracker para processar uma imagem base64 e passando os landmarks resultantes para o LetterPredictor.
- A resposta correta foi exibida no console e validada:
python -m app.test.integration_testing
-
Testes de Conflito de Porta:
- Ao garantir que nenhuma outra aplicação estava usando a porta 5003, validou-se que o servidor Flask subia corretamente, e conflitos de porta foram resolvidos.
-
Testes de Logs e Debug:
- Análise dos logs gerados para garantir que não havia erros inesperados ou warnings críticos além dos esperados, como os relacionados ao TensorFlow Lite.
Lista de Verificação:
- Meu código segue as diretrizes e a arquitetura deste projeto
- Posso alcançar o fluxo implementado sem nenhuma falha
- Os sinalizadores de desenvolvimento foram adicionados ou removidos conforme necessário
- Todos os ACs para esta tarefa foram implementados e verificados
- Adicionei testes para cobrir minhas alterações, se necessário
- Todos os testes novos e existentes foram aprovados
- Os layouts implementados são semelhantes ao figma referenciado no tíquete