Skip to content

Latest commit

 

History

History
84 lines (57 loc) · 4.82 KB

WIKI.md

File metadata and controls

84 lines (57 loc) · 4.82 KB

SPIRA LABXP - WIKI

Tree

Projeto do LabXP em parceria com o SPIRA.


    O SPIRA (Sistema de detecção precoce de insuficiência respiratória por meio de análise de áudio) é um projeto focado em criar um método de triagem baseado em áudio e inteligência artificial para a detecção de insuficiência respitória.

O nosso grupo da matéria LabXP de 2021 está encarregado de construir a API responsável pela interação com o modelo de inteligência artificial.


Tabela de Conteúdo



Grupo


  • João Vitor Soares
  • Leonardo Meireles da Silva
  • Lucas Vilela Aleixo
  • Raul Mello Silva
  • Vitor Daisuke Tamae
  • Ygor Sad Machado

Ferramentas



Desenvolvimento


Preparação e decisões iniciais

    Para iniciarmos o projeto tivemos que estudar a pesquisa em que o SPIRA se baseia para compreender a lógica por trás do modelo com que estamos trabalhando e sobre como é feita a coleta de dados.

    O modelo de inteligência artificial foi construído em Python através da biblioteca PyTorch. Por questões de compatibilidade, optamos por também utilizar a linguagem Python para construir a API, utilizando a biblioteca Flask para o recebimento de requisições de inferência, que por sua vez são realizadas com o auxílio do próprio PyTorch. A ferramenta MongoDB é utilizada para o banco de dados de outros setores do projeto. Sendo assim, tendo em mente potenciais futuros planos de integração das aplicações, optamos por também utilizá-la para a nossa API.

    Houve a necessidade de pesquisar sobre as ferramentas visto que nenhum dos membros da equipe tiveram contato prévio com elas.

Construção da API

    Foi necessário compreender o funcionamento do código do modelo para que pudéssemos produzir uma inferência sobre os resultados obtidos, no entanto isso se mostrou um desafio muito maior do que esperado, devido à nossa falta de experiência trabalhando com modelos e a complexidade ímpar do código diversas dúvidas sobre as configurações que deveriam ser usadas e como utilizar algumas funções do PyTorch foram surgindo.

    Após algumas semanas de desenvolvimento, conseguimos encapsular o modelo para que ele recebesse o áudio e realizasse as devidas predições. As primeiras inferências foram feitas com um modelo rudimentar treinado por nós mesmos. Logo após, um dos desenvolvedores do modelo, Edresson Casanova, nos forneceu um arquivo com as configurações da versão mais recente do modelo, esse que utilizamos de fato para realizar as inferências definitivas com o encapsulamento que havíamos criado.

    Mesmo com o novo arquivo de configuração, os testes de inferência realizados eram em sua grande maioria inconclusivos, o que era um indicativo de que haviam partes do procedimento de inferência que precisavam ser corrigidas. Com o auxílio de um dos pesquisadores do modelo, Daniel Peixoto, encontramos os seguintes erros na primeira versão do encapsulamento:

  • Strict = false: Ignora camadas que não são iguais ao modelo que estamos utilizando para classificar a entrada, levando o Pytorch à ignorar qualquer erro que acontecesse.

  • Test = false: No teste era inserido um ruido diferente sobre o áudio, então é preciso que ele seja true para que o ruido adequado fosse implementado.

    Após a correção dos erros encontrados, observamos que as inferências se tornaram condizentes com os resultados esperados.

    Uma vez que o encapsulamento do modelo foi corrigido, utilizamos a biblioteca Flask para construir uma API funcional que recebe o arquivo de áudio em formato ".wav" a ser analisado e retorna como resposta uma análise dizendo se o usuário possui ou não insuficiência respiratória.

    

Futuros Passos


  • Dockerizar a aplicação
  • Deploy da aplicação no Heroku
  • Implementação do armazenamento de resultados no banco de dados
  • Ajustes na inferência do modelo - Feito