Pesquisa aplicada, MBA em Inteligência Artificial e Big Data no ICMC-USP
Retinopatia diabética entre bases
Medida de quanto o pré-processamento de imagem sustenta a generalização de redes convolucionais quando o modelo treinado numa base de fundo de olho é aplicado, sem adaptação, em outra. Seis configurações, três pré-processamentos em duas arquiteturas, treinadas em 35.126 imagens e avaliadas em 1.744 de outra procedência.
- Papel
- Autor, orientação Profa. Dra. Agma J. M. Traina
- Período
- 2026
- Situação
- Monografia concluída, 58 páginas
Arquitetura
- Protocolo cross-dataset: treino exclusivamente em EyePACS e avaliação em Messidor-2, sem nenhuma adaptação. Nenhuma imagem do Messidor-2 participa do treino nem da seleção de checkpoint.
- Rótulo binarizado pelo mesmo critério nas duas bases: grau 0 da escala de severidade vira classe negativa, graus 1 a 4 viram classe positiva, o que corresponde à decisão de encaminhar ou não.
- Split intra-base agrupado por paciente: 17.563 pacientes do EyePACS, dois olhos cada, divididos em 14.050 para treino e 3.513 para validação, com zero sobreposição de paciente e 26,5% de positivos dos dois lados.
- Três pré-processamentos comparados: redimensionamento puro como baseline, realce local de contraste com CLAHE no canal L do espaço LAB, e extração do canal verde replicado nos três canais.
- Duas arquiteturas de capacidade diferente: uma SimpleCNN de 1.146.561 parâmetros treinada do zero, com campo receptivo de 36 por 36 pixels, e uma EfficientNet-B0 de 4.008.829 parâmetros inicializada em ImageNet, com fine-tuning de todas as camadas.
- Receita de treino idêntica entre variantes: BCEWithLogitsLoss com pos_weight 2,77, AdamW, CosineAnnealingLR, batch efetivo 32 por acumulação de gradiente, precisão mista e aumento de dados por espelhamento, rotação e perturbação de brilho.
- Métricas com intervalo de confiança de 95% por bootstrap de 2.000 réplicas: AUC-ROC, sensibilidade, especificidade, precisão, F1 e matriz de confusão.
- Dois pontos de operação reportados: limiar padrão 0,5 e limiar calibrado na validação para sensibilidade mínima de 0,90, depois transferido para a base externa sem reajuste.
- Grad-CAM implementado com hooks na última camada convolucional, compartilhado entre a figura da monografia e uma demonstração web em Gradio que carrega os seis checkpoints.
Detalhes de implementação
- O filtro roda na resolução nativa e só depois a imagem cai para 512 por 512, porque o CLAHE depende da estatística de vizinhança e microaneurisma ocupa poucos pixels no original.
- O intervalo de confiança vem de um bootstrap que reamostra os 874 exames, não as imagens soltas, porque 86,3% dos pares de olhos têm rótulo concordante.
- O melhor checkpoint é escolhido pela AUC de validação do EyePACS, nunca pela base externa, e a AUC é calculada por estatística U de Mann-Whitney implementada no próprio projeto.
Tecnologias
- Python
- Linguagem de todo o experimento, em treze scripts.
- PyTorch
- Treino, fine-tuning e inferência das duas arquiteturas.
- torchvision
- EfficientNet-B0 com pesos de ImageNet e as transformações de imagem.
- OpenCV
- CLAHE no canal L do LAB e a separação do canal verde.
- NumPy e pandas
- Manipulação dos rótulos, dos splits e dos resultados.
- Pillow
- Leitura e redimensionamento com reamostragem de Lanczos.
- matplotlib
- Curvas ROC, matrizes de confusão e as figuras da monografia.
- Grad-CAM
- Implementação própria com hooks, para ver onde a rede olha.
- Gradio
- Demonstração web que carrega os seis checkpoints e aceita imagem enviada.
- EyePACS e Messidor-2
- Base de treino e base externa de avaliação.

Figura 6 da monografia: a mesma imagem de fundo de olho sem retinopatia, em baseline, CLAHE e canal verde. 
Figura 7: as mesmas três variantes aplicadas a uma imagem com retinopatia diabética. 
Figura 2: decomposição da imagem nos canais de cor, que motiva a escolha do canal verde. 
Figura 9: curvas ROC no conjunto externo Messidor-2, por arquitetura e variante. 
Figura 13: mapas de Grad-CAM em casos reais de retinopatia do Messidor-2.
Quer conversar sobre arquitetura, decisão técnica e entrega em produção?
