Reconhecendo câncer com inteligência artificial

Aplicação de uma rede neural convolucional para reconhecimento de metástase

Alan Melo Clappis
Data Hackers
4 min readSep 17, 2019

--

Exame de histopatologia com câncer de pulmão. Fonte: Wikimedia

Você seria capaz de reconhecer quais desses exames de histopatologia nas imagens abaixo são de tecidos cancerígenos?

Exames de histopatologia — Fonte: Kaggle

A menos que você seja um especialista da área, dificilmente compreenderá os padrões necessários para identificar que apenas as imagens da segunda linha são de tecidos cancerígenos.

Pra ser sincero, nós aqui da EurekaLabs também não sabemos quais critérios um médico leva em consideração para identificar a presença de metástase em um exame de histopatologia, mas criaremos um algoritmo capaz de aprender esses padrões. That’s the machine learning magic, folks :)

Lembrando que esse artigo faz parte de uma série de publicações realizadas pela EurekaLabs, em que resolveremos problemas de inteligência artificial com um teor mais didático.

Para a compreensão desse artigo, é fundamental a leitura do nosso artigo de introdução as redes neurais convolucionais.

Data Augmentation

Além dos conceitos apresentados pelo artigo de introdução, vamos utilizar as técnicas de Data Augmentation para auxiliar no treinamento da CNN.

Data Augmentation é uma técnica de generalização com a intenção de reduzir o overfitting do modelo. Essa técnica consiste em gerar novas imagens com base nas existentes na sua massa de dados.

Exemplo de Data Augmentation em uma foto de gatos — Fonte Keras.io

É possível aplicar diversas transformações nas imagens como:

  • Translação;
  • Rotação;
  • Modificação a perspectiva;
  • Achatamento e alongamento;
  • Distorção de Lentes

Vale a pena salientar que as escolhas dessas transformações pode influenciar significativamente na qualidade do seu modelo, tanto de forma positiva quanto negativa. Algumas transformações não são adequadas para alguns domínios e pode acabar com a capacidade preditiva do modelo.

Sobre o problema

O problema consiste em predizer a probabilidade de um exame de histopatologia ser de um tecido em metástase. Os resultados das predições são avaliados com base na métrica AUC-ROC.

A massa de dados possui imagens de dimensões 96x96x3. Entretanto, apenas o centro da imagem com dimensão de 32x32x3 deve ser levado em consideração para predizer as probabilidades. Essa característica da dimensão na massa de dados é para permitir operações de convolução sem aplicar o padding (lembrando que os conceitos são apresentados no artigo de introdução).

Devido a complexidade desse problema, vamos construir uma CNN com mais camadas que o último artigo. A topologia da rede é apresentada apenas na implementação (a imagem do diagrama ficaria muito grande para postar aqui).

Implementação

Acurácia durante as épocas

Inspeção do modelo

Quando trabalhamos com CNN, é sempre bom inspecionar o modelo para avaliar o que a rede está considerando para realizar suas predições. Vamos inspecionar como o modelo está se comportando para algumas imagens.

Inspeção do modelo para algumas imagens (Heatmap)

A inspeção por heatmap nos informa qual parte da imagem o modelo está levando mais em consideração para realizar as predições (quanto mais vermelho, mais importante é a região).

Como podemos ver, mesmo tendo uma boa assertividade, a CNN pode estar com um viés, pois considera uma parte fora do centro da imagem para realizar a predição (lembrando que o dataset considera apenas o centro 32x32 para avaliação).

A inspeção do modelo é fundamental para avaliar se não existe um viés no seu modelo. Este artigo demonstra um caso de um modelo aplicado em exames de pneumonia. Alguns exames possuíam um texto no canto da imagem indicando que o exame foi realizado por um aparelho portável. Ao inspecionar o modelo, os autores notaram que a CNN estava levando em consideração essa informação para a predição, como apresentado abaixo.

Inspeção de CNN para predição de pneumonia — Fonte: Medium

Apesar de possivelmente existir uma certa correlação nesse cenário, dado que o paciente que necessita de um aparelho móvel tende a estar mais debilitado, parece errado o diagnóstico da rede considerar essa informação.

Uma abordagem aceitável para nosso problema seria recortar a imagem e trabalhar apenas com o centro (dado que estamos utilizando o padding same), mas nós deixamos ela propositalmente no tamanho original para mostrar essas questões de inspeção do modelo :). Mesmo com essa abordagem, atingimos um bom resultado da métrica AUC na competição do Kaggle!

Submissão do modelo pro Kaggle

Eai, gostou? Não deixe de acompanhar esse Medium e as redes sociais da EurekaLabs (Linkedin, Facebook) para acompanhar os novos artigos! Até lá!

--

--