Escopo: classificação em imagens para os atributos
upper_color,lower_color,gender,bagehatdo dataset PAR2025. Os experimentos avaliaram arquiteturas EfficientNet-B0, MobileNetV2 e SwinV2-T, com e sem transfer learning, e com data augmentation.
Devido ao tamanho dos arquivos de saída — especialmente os pesos dos modelos (.pth), figuras de treinamento e matrizes de confusão —, os resultados completos não foram incluídos diretamente neste repositório, uma vez que o GitHub impõe um limite de 100 MB por arquivo e 2 GB por pacote de push.
Todos os artefatos experimentais completos (modelos, relatórios CSV e gráficos) estão disponíveis no seguinte link público:
Conteúdo do link:
- Checkpoints dos modelos (
best_model.pth) treinados em cada configuração (com/sem transfer learning, com/sem data augmentation). - Gráficos de acurácia e matrizes de confusão por arquitetura e tarefa.
- Relatórios consolidados (
general_summary_report.csveensemble_summary_report.csv). - Logs de treinamento (
terminal_output.txt) e parâmetros utilizados.
Observação: os arquivos
.pthe demais saídas são grandes (~100 MB cada) e foram movidos para o Google Drive apenas para garantir reprodutibilidade e armazenamento persistente, conforme práticas comuns em projetos de Deep Learning.
-
analysis/par.ipynb: notebook de exploração, preparação, treino/avaliação e análise do PAR2025. Pré-requisitos:./data/PAR2025/training_set.txte./data/PAR2025/validation_set.txt(gerados pelodownload_datasets.py). Saídas típicas: figuras de curvas/discordâncias e tabelas consolidadas (salvas emplots/emodelos/{...}/general_summary_report.csv).
-
data_agumentation/data_agumentation-50-50.py: script de data augmentation com política 50/50 (gera amostras apenas para a classe minoritária de cada atributo binário, até equilibrar ~50/50). Centraliza transformações usadas durante os treinos experimentais. Como usar: não recebe CLI; edite os parâmetros no topo do arquivo (ex.:BASE_PATH,TRAIN_CSV_PATH,SAVE_DIR,SAMPLE_PERCENTAGE,TRANSFORMATION_TYPE = {SIMPLE|COMPLETE},RANDOM_SEED). O que ele faz:- Lê o CSV de treino e cria um dataset balanceado (gera imagens sintéticas com
torchvision.transforms). - Salva apenas as sintetizadas em
.../augmented_only/e todas (originais + sintetizadas) em.../all_images/. - Exporta CSV final com caminhos atualizados (
dataset_balanceado_amostra.csv) e gráficos de distribuição antes/depois.
- Lê o CSV de treino e cria um dataset balanceado (gera imagens sintéticas com
-
modelos/-
BASELINE-com_transfer_leaning/: resultados dos treinos com transferência de aprendizado (pesos pré-treinados). Estruturado por tarefa (bag/,gender/,hat/,lower_color/,upper_color/) e, dentro de cada tarefa, por arquitetura (EfficientNet-B0/,MobileNetV2/,SwinV2-T/). Cada arquitetura contém:accuracy_plot.png: curva(s) de acurácia por época (treino/val).confusion_matrix.png: matriz de confusão no conjunto de validação/teste (conforme configurado).terminal_output.txt: stdout completo do treino (épocas, métricas, tempos, etc.).
-
BASELINE-sem_transfer_learning/: mesma estrutura acima, porém sem pesos pré-treinados (treino do zero). -
output-com_transfer_learning-DataAgumentationDuranteTreinamento/: saídas adicionais de experimentos com transfer learning + data augmentation aplicada em tempo de treino. Mantém o mesmo padrão por tarefa/arquitetura (figuras, checkpoints e logs). -
output-sem_transfer_learning-DataAgumentationDuranteTreinamento/: saídas equivalentes sem transfer learning + data augmentation durante o treino. -
ensemble_summary_report.csv: tabela-resumo com métricas agregadas por ensembles (hard/soft voting). -
general_summary_report.csv: tabela-resumo geral por execução (tarefa, arquitetura, seed, augmentation, acurácia, F1, loss mínima, época do melhor, etc.). -
train_models.py: runner principal de treinamento (varre tarefas e arquiteturas). Entradas esperadas:--data-root PATHapontando para o diretório que contémtraining_set.txtevalidation_set.txt(ex.:./data/PAR2025). Parâmetros (linha de comando):--data-root PATH→ raiz do dataset (obrigatório).--epochs INT→ número de épocas (padrão do script: 10).--no-pretrained→ desativa transfer learning (por padrão, usa pesos pré-treinados). Padrões internos (editáveis no arquivo):IMG_SIZE=200,BATCH_SIZE=32,LEARNING_RATE=1e-4,RANDOM_STATE=42,MODELS_TO_TRAIN=['MobileNetV2','EfficientNet-B0','SwinV2-T']. Pré-processamento: normalização ImageNet; treino comRandomResizedCrop,HorizontalFlip(0.5)eRandomErasing(0.4); validação/teste comResize. Estratégia de split: reparte o arquivovalidation_set.txtem val e teste (50/50) por ID de imagem original (removendo sufixos_aug_). Saídas:
./output-{com|sem}_transfer_learning-DataAgumentationDuranteTreinamento/ {bag|gender|hat|lower_color|upper_color}/{MobileNetV2|EfficientNet-B0|SwinV2-T}/ ├─ best_model.pth ├─ accuracy_plot.png ├─ confusion_matrix.png └─ terminal_output.txt ├─ general_summary_report.csv └─ ensemble_summary_report.csv(Se rodar o script a partir de
modelos/, as pastas sairão emmodelos/output-*, como na sua árvore.)
-
-
plots/-
gerar_plots_PAR2025.py: script utilitário para gerar gráficos de distribuição de classes e outras figuras a partir dos TXTs do PAR2025. Parâmetros (CLI): Saídas geradas (no diretório corrente):PAR2025_treinamento_colors_distribution.pngePAR2025_validação_colors_distribution.png(cores upper/lower).PAR2025_treinamento_gbh_distribution.pngePAR2025_validação_gbh_distribution.png(gender,bag,hat).
-
PAR2025_treinamento_colors_distribution.pngePAR2025_validação_colors_distribution.png: distribuição de cores (upper/lower) nos conjuntos de treino e validação. -
PAR2025_treinamento_gbh_distribution.pngePAR2025_validação_gbh_distribution.png: distribuição degender,bag,hatnos conjuntos de treino e validação.
-
-
download_datasets.pyScript para baixar/organizar o conjunto de dados PAR2025 e os templates de submissão. Parâmetro (CLI):--data-dir PATH(padrão:./data). O que ele baixa/prepara:- PAR2025 em
{DATA_DIR}/PAR2025/(gera os TXTstraining_set.txtevalidation_set.txte organiza imagens). - Templates de submissão em
./submission_templates/. Estrutura criada:
{DATA_DIR}/ └── PAR2025/ ├── training_set/ └── validation_set/ ./submission_templates/ - PAR2025 em
-
environment.ymlDefinição do ambiente Conda (Python + libs de visão computacional/ML). Principais dependências esperadas: PyTorch/torchvision, scikit-learn, pandas, numpy, matplotlib, Pillow, tqdm, gdown (para downloads), e utilitários de leitura de imagens.
Padrão de organização (idêntico em todas as variações):
modelos/
├── {VARIANTE}/
│ ├── bag/
│ │ ├── EfficientNet-B0/
│ │ │ ├── accuracy_plot.png
│ │ │ ├── best_model.pth
│ │ │ ├── confusion_matrix.png
│ │ │ └── terminal_output.txt
│ │ ├── MobileNetV2/
│ │ └── SwinV2-T/
│ ├── gender/
│ ├── hat/
│ ├── lower_color/
│ ├── upper_color/
│ ├── ensemble_summary_report.csv
│ └── general_summary_report.csv
└── train_models.py
Onde {VARIANTE} BASELINE-com_transfer_leaning, BASELINE-sem_transfer_learning, output-com_transfer_learning-DataAgumentationDuranteTreinamento, output-sem_transfer_learning-DataAgumentationDuranteTreinamento}.
Arquivos por arquitetura (em cada tarefa):
best_model.pth: checkpoint com os melhores pesos.accuracy_plot.png: desempenho por época (treino/val).confusion_matrix.png: erros/acertos por classe.terminal_output.txt: log literal da execução (hints de parâmetros, lr, tempos, etc.).
Relatórios CSV:
-
general_summary_report.csv: uma linha por execução (tarefa$\times$ arquitetura$\times$ variação), com métricas-chave e metadados. -
ensemble_summary_report.csv: agregações/combinações quando aplicável (médias, voting, stacking, etc.).
-
Criar ambiente (Conda):
conda env create -f environment.yml conda activate projeto-transformador-ii
-
Baixar dados (PAR2025 e templates):
python download_datasets.py --data-dir ./data
-
Executar treinamentos:
-
Com transfer learning (padrão):
python modelos/train_models.py \ --data-root ./data/PAR2025 \ --epochs 10
-
Sem transfer learning (treino do zero):
python modelos/train_models.py \ --data-root ./data/PAR2025 \ --epochs 10 \ --no-pretrained
-