Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • hoortech_backend hoortech_backend
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 1
    • Merge requests 1
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • HoorTech
  • hoortech_backendhoortech_backend
  • Merge requests
  • !6

Merged
Created Oct 18, 2024 by Antônio Vidal Pereira da Rosa@antonio.rosaOwner7 of 7 tasks completed7/7 tasks

Integração IA

  • Overview 1
  • Commits 16
  • Changes 29

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 e LetterPredictor 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

  • https://app.clickup.com/t/8689zhteg
  • https://app.clickup.com/t/8689k12ka

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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
  6. 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.
  7. 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

Capturas de logs:

Captura terminal ao realizar teste integrado:

log-shell

Captura do Postman ao realizar requisição via client

log-postman

Edited Oct 22, 2024 by Lucas Dal Pozzo de Matos
Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: feature/integracao-IA