Skip to content

Gustyper/FixMatchImplementation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Implementação do FixMatch: Aprendizado Semisupervisionado no CIFAR-10

Este repositório contém um Jupyter Notebook com a implementação completa do algoritmo FixMatch, focado na classificação de imagens do dataset CIFAR-10 utilizando técnicas de Aprendizado Semisupervisionado (SSL). O projeto demonstra como melhorar a performance do modelo utilizando dados não rotulados através de consistência de predições entre diferentes aumentações.

O projeto segue o paradigma do FixMatch, que combina duas abordagens principais:

  1. Pseudo-Labeling: O modelo atua como um "professor" para si mesmo, gerando rótulos para dados não rotulados quando a confiança da predição em uma imagem (com aumentação fraca) excede um limiar pré-definido (ex: 0.95).
  2. Consistency Regularization: O modelo é treinado para que sua predição em uma versão fortemente aumentada da mesma imagem corresponda ao pseudo-rótulo gerado.

Principais Componentes:

  • Arquitetura: ResNet18 modificada para o CIFAR-10 (ajuste na primeira camada convolucional para suportar inputs $32 \times 32$).
  • Data Augmentation:
    • Weak (Fraca): Random Crop e Random Horizontal Flip.
    • Strong (Forte): RandAugment e RandomErasing (Cutout).
  • Split de Dados: Funções auxiliares para dividir o dataset de treino em subconjuntos rotulados (simulando escassez de labels) e não rotulados.
  • Pipeline de Treino: Classe FixMatchTrainer personalizada que gerencia as perdas supervisionada ($L_s$) e não-supervisionada ($L_u$).

Estrutura do Código

O notebook está organizado da seguinte forma:

  1. Carregamento de Dados: Download e normalização do CIFAR-10.
  2. Pre-processamento SSL: Separação balanceada de índices para dados rotulados e não rotulados.
  3. Definição do Modelo: Implementação da ResNet18 customizada.
  4. Aumentação de Dados: Definição das pipelines de transformação Weak e Strong.
  5. Classe Trainer: Loop de treinamento com cálculo de masked cross-entropy loss para os dados não rotulados.
  6. Visualização: Funções para inspecionar pseudo-rótulos e comparar históricos de treinamento.

About

Este projeto consiste na implementação do algoritmo FixMatch, um método de estado-da-arte para Aprendizado Semisupervisionado (Semi-Supervised Learning), aplicado ao dataset CIFAR-10. O objetivo é treinar uma rede neural profunda utilizando uma pequena quantidade de dados rotulados e uma grande quantidade de dados não rotulados

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages