Aplicação de IA em Mamografia
No texto de hoje, abordaremos como é possível aplicar IA em imagens de mamografia para classificação de nódulos.
Introdução
Em outubro, há uma grande campanha nacional sobre a prevenção e o diagnóstico do câncer de mama, o Outubro Rosa. É o câncer mais frequente nas mulheres, atingindo milhões no mundo todo. Para entender melhor a gravidade da doença, o Grupo ARGO — Inovação em Saúde escreveu em suas redes um texto sobre o tema. Uma forma de auxiliar nessas tarefas é utilizando tecnologias, como Inteligência Artificial, e hoje mostraremos que é possível fazer um modelo simples mas que já apresenta um resultado razoável. O código utilizado na elaboração desse texto está disponível no Repositório do Turing!
Dataset
Para essa análise, será utilizado o CBIS-DDSM (Curated Breast Imaging Subset of DDSM) [1][2][3], um banco de mamografias disponíveis para pesquisa. Contém cerca de 1500 pacientes distintos, com presença ou de massa ou de calcificação em alguma região da mama, e sua classificação, sendo Benigno, Maligno ou Benigno Sem Retorno. A fim de tornar esse problema um de classificação binária, removemos os casos de calcificação e os casos de Benigno Sem Retorno, restando somente massas benignas (classe 0) e malignas (classe 1). Para cada caso, temos 3 imagens, a original, a segmentação e a região da segmentação. Abaixo, podemos visualizar um caso.
Metodologia
Com os casos de interesse separados, precisamos pensar em como abordar essas imagens. Elas possuem tamanhos diferentes então não será possível utilizá-las da forma original. Além disso, queremos um modelo simples (como comentado na introdução). Dado esse cenário, há uma forma simples mas poderosa: extração de features.
Serão extraídos 3 features diferentes:
- Features de Primeira Ordem (FO) — Características relacionadas com os pixels da figura. Não possuem qualquer informação a respeito dos pixels vizinhos. Exemplo: média dos pixels, máximo, mínimo, desvio padrão, etc.
- Features de Formato (Shape) — Características relacionadas com o formato da massa.
- Features de Segunda Ordem — Características relacionadas com os pixels e sua vizinhança. Existem diversas formas de calcular essas features, como pela Gray Level Co-occurrence Matrix (GLCM).
Todas as features serão extraídas somente da região da massa. Para a modelagem, será utilizado o algoritmo Gradient Boosting.
Extração de Features
As features de primeira ordem são simples de extrair, pois utilizam somente os valores dos pixels, sem analisar a vizinhança. O pacote numpy já possui funções necessárias para calcular todas as features. A primeira a ser calculada é a Energy, cuja formula está apresentada abaixo.
As outras features calculadas são: média, máximo, mínimo, desvio padrão, Skewness e Kurtosis. Será que com essas já é possível treinar um bom modelo? Infelizmente, não. O AUC obtido no teste utilizando somente essas foi de 0.57, um valor baixo (lembrando que um modelo aleatório teria AUC igual a 0.5). Vamos então ver as próximas features!
Nesse dataset, já existe uma coluna identificando o formato da massa. Há ao todo 18 formatos diferentes, e para a criação das features, foi utilizado one-hot-encoding. Será que agora já pode sair um bom modelo? Sim! O AUC, dessa vez, foi cerca de 0.77, um valor bem superior ao anterior e utilizando somente a informação do formato. Vamos ver, abaixo, o que o modelo está dando maior importância.
É possível observar que o formato irregular é decisivo na classificação da massa. Podemos ver esse fato na tabela abaixo, onde é nítida a diferença entre as frequências de cada classe para esse formato.
Features de Segunda Ordem
Enquanto as features de primeira ordem só analisam os valores de pixels, as features de segunda ordem analisam também a posição entre eles, possuindo informações da vizinhança. Essas relações podem ser calculadas por diversas técnicas: Gray Level Cooccurence Matrix (GLCM), Gray Level Run Length Matrix (GLRLM), Gray Level Size Zone Matrix (GLSZM), Neighbouring Gray Tone Difference Matrix (NGTDM), Gray Level Dependence Matrix (GLDM). Abordaremos somente o GLCM no texto de hoje.
Como o próprio nome diz, o GLCM é uma matriz, cujos elementos buscam representar a distribuição espacial dos pixels. Ela precisa de duas informações: a direção e a distância (em pixels). O tamanho da matriz é NxN, onde que N é a quantidade total de níveis distintos que o pixel pode assumir. No arquivo DICOM (Digital Imaging and Communications in Medicine) que estamos utilizando, há ao todo 65536 níveis distintos. Com essa quantidade, é praticamente inviável manter uma matriz desse tamanho na memória, e ela teria a maior parte dos elementos igual a zero. Para corrigir esses problemas, costuma-se a dividir em discretizar em níveis menores. Abaixo, uma imagem exemplo com discretizações diferentes.
Podemos observar que uma discretização com 32 níveis já é bem semelhante a original, visualmente. Com isso, nossa matriz GLCM terá um tamanho de 32x32. Mas como preencher os valores dela? Abaixo, uma imagem representando duas imagens e sua GLCM.
A GLCM, como dito anteriormente, precisa de duas informações, a direção e a distância. O processo do preenchimento dessa matriz segue o seguinte passo: dado um pixel (P1), veja o pixel que está na direção e distância determinada (P2). Na GLCM, procure a linha com o nível de P1 e a coluna com o nível de P2 e adicione 1 nessa posição. Repita esse processo com todos os pixels. Na Figura 4, a direção escolhida foi direita e a distância foi de 1 pixel. Com a GLCM preenchida, é possível utilizar seus elementos para calcular diversas features, descritas aqui.
Utilizando essas features, será que é possível criar um modelo bom? Infelizmente, dessa vez não. O AUC obtido com essas features foi na ordem de 0.59, melhor que de primeira ordem mas ainda sim baixo.
Juntando tudo
A ultima modelagem feita no nosso código é juntando todas essas features que descrevemos ao longo do texto. Com isso, obtemos um AUC de 0.78, um valor considerável comparado à complexidade do problema e à simplicidade da nossa metodologia, que é conhecida na radiologia como Radiomics! Essa área consiste em extrair features de imagens médicas e desenvolver modelos de machine learning para predizer o desfecho clínico do paciente.
Conclusão
No texto de hoje, aplicamos a metodologia de Radiomics para classificar nódulos em imagens de mamografia utilizando modelos simples de machine learning. Nosso resultado, embora modesto, mostra que essa técnica simples gera resultados interessantes.
Referências
[1] Rebecca Sawyer Lee, Francisco Gimenez, Assaf Hoogi , Daniel Rubin (2016). Curated Breast Imaging Subset of DDSM [Dataset]. The Cancer Imaging Archive. DOI: https://doi.org/10.7937/K9/TCIA.2016.7O02S9CY
[2] Rebecca Sawyer Lee, Francisco Gimenez, Assaf Hoogi, Kanae Kawai Miyake, Mia Gorovoy & Daniel L. Rubin. (2017) A curated mammography data set for use in computer-aided detection and diagnosis research. Scientific Data volume 4, Article number: 170177 DOI: https://doi.org/10.1038/sdata.2017.177
[3] Clark K, Vendt B, Smith K, Freymann J, Kirby J, Koppel P, Moore S, Phillips S, Maffitt D, Pringle M, Tarbox L, Prior F. The Cancer Imaging Archive (TCIA): Maintaining and Operating a Public Information Repository, Journal of Digital Imaging, Volume 26, Number 6, December, 2013, pp 1045–1057. DOI: https://doi.org/10.1007/s10278-013-9622-7
[4] Miranda Magalhaes Santos, J.M., Clemente Oliveira, B., Araujo-Filho, J.A.B. et al. State-of-the-art in radiomics of hepatocellular carcinoma: a review of basic principles, applications, and limitations. Abdom Radiol 45, 342–353 (2020). https://doi.org/10.1007/s00261-019-02299-3