Repositório referente aos trabalhos desenvolvidos durante o ciclo do PIBIC 2020/21 orientado pela Prof.ª Drª. Karin Komati.
Pneumonia é uma doença caracterizada pela inflamação dos pulmões, e o seu diagnóstico é realizado com base nos sintomas, exame físico, análise bioquímica, análise microbiológica e radiológico, sendo geralmente a radiografia de tórax que é um elemento-chave no diagnóstico.
Usualmente, médicos analisam padrões radiológicos específicos associados a dados clínicos e laboratoriais para diferenciar a pneumonia entre etiologia viral e bacteriana. Radiografias que apresentam doença localizada com consolidações geralmente indicam uma infecção por bactérias, entretanto, exames que apresentam um padrão intersticial ou espessamento peribrôquico tendem a ser uma infecção de origem viral.
Desta forma o presente trabalho se compromete em estudar, implementar e analisar o uso de redes neurais convolucionais no auxilio do diagnóstico e classificação da pneumonia através de imagens de raio-X.
Foram utilizadas algumas ferramentas e tecnologias para o desenvolvimento deste trabalho, dentre elas:
- Python - linguagem de programação de alto nível, interpretada de script, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte.
- Jupyter Notebook - ferramenta de Literate Computing, simples e extremamente eficientes, pois permite unir código e texto.
- TensorFlow - biblioteca de código aberto para aprendizado de máquina aplicável a uma ampla variedade de tarefas.
- Keras - biblioteca de rede neural de código aberto escrita em Python.
- Collab - ambiente de notebooks Jupyter que não requer configuração e é executado na nuvem, disponibilizado pelo Google.
A base de dados utilizada foi a Chest X-Ray Images (Pneumonia) disponibilizada de forma pública na plataforma Kaggle.
Essa base de dados contém 5,863 imagens de radiografia de tórax de criancças de 1 a 5 anos.
Neste repositório existe 4 modelos diferentes de Rede Neural Convolucional para resolução do problema proposto neste trabalho.
Uma rede neural convolucional é um tipo especial de implementação de inteligência artificial que utiliza de manipulações matemáticas de matrizes para processar imagens.
- Uma convolução é dada pela multiplicação de uma matriz por outra, sendo gerada uma terceira
- A rede recebe uma imagem de entrada e usa um filtro (ou kernel) para criar o mapa de caracteristas (feature map) descrevendo a imagem
- Na operação de convolução nós pegamos um filtro (usualmente 2x2 or 3x3) e percorremos sobre a matriz da imagem. Os números são multiplicados e é gerado um produto que descreve esse espaço da matriz gerada da imagem maior. Esse processo é repetido sobe toda a imagem, como pode ser visto na animação abaixo:
Abaixo uma representação 2D do que está acontecendo em 3 dimensões, utilizando um filtro 3x3.
- Usamos diferentes filtros para passer sobre nossa entrada, extraímos todos os mapas de caracteristicas, agrupamos e colocamos como a saída da camada convolucional.
- E então passamos o resultado dessa saída por uma função de ativação
O repositório está organizado da seguinte maneira:
Arquivo | Descrição |
---|---|
src/model1/index.ipynb | Notebook com o modelo 1 de RNC proposto para classificação binária entre pneumonia ou normal. |
src/model2/index.ipynb | Notebook com o modelo 2 de RNC proposto para classificação binária entre pneumonia ou normal. |
src/model3/index.ipynb | Notebook com o modelo 3 de RNC proposto para classificação multiclasse entre normal, pneumonia viral e bacteriana. |
src/model4/index.ipynb | Notebook com o modelo 4 de RNC proposto para classificação multiclasse entre normal, pneumonia viral e bacteriana. |
MIT
Yan Teixeira