Repositório oficial contendo os códigos e experimentos do meu Trabalho de Conclusão de Curso (TCC).
Este projeto propõe uma arquitetura de Deep Learning em cascata para mitigar o viés de classes majoritárias no diagnóstico de câncer de pele, com foco especial na subpopulação de pacientes idosos (>= 60 anos), que sofrem com as assinaturas visuais complexas da senescência cutânea.
Modelos multiclasse diretos frequentemente negligenciam o Melanoma devido ao desbalanceamento massivo de dados (excesso de Nevus). Para resolver isso, este projeto dividiu o problema em dois níveis utilizando ResNet50 via Transfer Learning:
- Filtro Binário (Triagem): Separa as imagens em Benignas ou Malignas/Risco. Retém a maior parte dos ruídos diagnósticos.
- Filtro Especialista Oncológico: Recebe apenas os casos suspeitos e classifica entre as classes de alto risco (Melanoma, Carcinoma Basocelular, Carcinoma Espinocelular, etc.).
Os experimentos foram conduzidos de forma estritamente independente em dois dos maiores repositórios dermatoscópicos mundiais. Devido ao limite de tamanho do GitHub, as matrizes de imagens originais devem ser baixadas em suas fontes oficiais:
- HAM10000: Harvard Dataverse
- ISIC 2019: ISIC Archive
Nota: Os arquivos
.csvcom os metadados demográficos estão disponíveis na pasta/metadatadeste repositório.
Optou-se por separar os experimentos em Jupyter Notebooks individuais e agrupá-los por base de dados para garantir total reprodutibilidade acadêmica de cada fase do estudo.
📦 TCC-Cascata-Melanoma
┣ 📂 metadata/ # Arquivos CSV (GroundTruth e Metadados originais)
┣ 📂 notebooks/ # Scripts de treinamento e avaliação
┃ ┣ 📂 HAM10000/ # Experimentos com a base HAM10000
┃ ┃ ┣ 📜 01_Baseline_HAM10000.ipynb
┃ ┃ ┣ 📜 02_Filtro_Binario_HAM10000.ipynb
┃ ┃ ┗ 📜 03_Filtro_Especialista_HAM10000.ipynb
┃ ┗ 📂 ISIC/ # Experimentos com a base ISIC 2019
┃ ┣ 📜 01_Baseline_ISIC.ipynb
┃ ┣ 📜 02_Filtro_Binario_ISIC.ipynb
┃ ┗ 📜 03_Filtro_Especialista_ISIC.ipynb
┗ 📜 README.md # Documentação do projeto
Para facilitar a reprodutibilidade e permitir o uso imediato do sistema em cascata sem a necessidade de retreinar as redes do zero, os pesos finais dos modelos (.keras) foram disponibilizados publicamente na seção Releases deste repositório.
- Clique aqui para acessar a página de Releases e baixar os modelos originais
Exemplo de carregamento rápido:
from tensorflow.keras.models import load_model
modelo = load_model('caminho_do_download/ResNet50_Filtro_Binario_ISIC.keras')A abordagem em cascata demonstrou ser uma ferramenta altamente confiável de Suporte ao Diagnóstico (CAD), especialmente na faixa demográfica de maior risco. Ao isolar a classe majoritária, o sistema reduziu drasticamente os falsos negativos para o câncer mais letal da pele.
Sensibilidade específica para detecção de Melanoma (Pacientes Idosos >= 60 anos):
- ISIC 2019: Salto de 62,0% (Baseline) para 93,5% (Filtro Especialista)
- HAM10000: Salto de 44,9% (Baseline) para 98,8% (Filtro Especialista)
- Clone o repositório:
git clone https://github.com/PedroWerlang/TCC.git - Baixe as imagens originais nos links oficiais citados acima e organize-as no formato de diretórios exigido pelo
ImageDataGeneratordo Keras (/Train,/Val,/Test). - Altere os caminhos das variáveis
base_direcaminho_salvamentonos notebooks de acordo com o seu ambiente (Google Drive ou Local). - Execute as células sequencialmente.
Desenvolvido por Pedro Valentim Mozzaquatro Werlang para o Trabalho de Conclusão de Curso (2026) do curso Ciência da Computação do Instituto da Computação.