Repositório oficial do artigo ICPR24 "Imagens geradas por Genformer são tudo o que você precisa para melhorar a robustez dos transformadores em pequenos conjuntos de dados"
Sven Oehri, Nikolas Ebert, Ahmed Abdullah, Didier Stricker e Oliver Wasenmüller
CEMOS - Centro de Pesquisa e Transferência, Universidade de Ciências Aplicadas Mannheim

O código foi testado com CUDA 11.8, Python 3.10 Pytorch 2.2.0. O código não foi otimizado para configurações multi-GPU e vários modelos suportam apenas 1 GPU.
git clone https://github.com/CeMOS-IS/GenFormer
cd GenFormer
Para configurar um ambiente de Anaconda, execute os seguintes comandos de:
conda create -n genformer python=3.10
conda activate genformer
pip install torch torchvision torchaudio
pip install -r requirements.txt
pip install robust-minisets
python3 setup.py develop
Para construir uma imagem do Docker, execute o seguinte
docker build -t genformer .
Ajuste as GPUs visíveis, o tamanho da memória compartilhada e o diretório local montado de acordo com a sua configuração, depois execute o contêiner.:
docker run -it --name genformer --rm
--shm-size 100G --gpus '"device=0"'
-v /path/to/repo/:/genformer
genformer bash
| Método | Estratégia de trem | Imagens gen. | T-in err. | T-Inv2 Err. | T-in-R-Err. | T em C CE | T-in-A err. | modelo |
|---|---|---|---|---|---|---|---|---|
| Deit-Ti | Linha de base | Falso | 50.3 | 68.0 | 92.5 | 80.6 | 80.6 | modelo |
| Deit-Ti | Linha de base | Verdadeiro | 44.1 | 65.3 | 89.6 | 77.7 | 78.0 | modelo |
| Deit-Ti | Cutmix + Mixup | Falso | 44.4 | 65.0 | 89.7 | 74.5 | 78.3 | modelo |
| Deit-Ti | Cutmix + Mixup | Verdadeiro | 38.5 | 57.8 | 86.4 | 71.8 | 74.4 | modelo |
| Deit-Ti | Augmix | Falso | 40.4 | 61.3 | 88.4 | 72.8 | 76.2 | modelo |
| Deit-Ti | Augmix | Verdadeiro | 36.4 | 57.8 | 85.6 | 71.0 | 73.1 | modelo |
| PVT-T | Linha de base | Falso | 46.5 | 67.2 | 91.5 | 78.9 | 78.9 | modelo |
| PVT-T | Linha de base | Verdadeiro | 42.8 | 64.8 | 87.4 | 76.8 | 77.7 | modelo |
| PVT-T | Cutmix + Mixup | Falso | 41.9 | 64.6 | 87.8 | 74.1 | 76.8 | modelo |
| PVT-T | Cutmix + Mixup | Verdadeiro | 37.5 | 60.1 | 84.6 | 70.1 | 74.1 | modelo |
| PVT-T | Augmix | Falso | 39.9 | 62.1 | 87.9 | 73.0 | 75.9 | modelo |
| PVT-T | Augmix | Verdadeiro | 36.4 | 58.3 | 86.2 | 71.0 | 73.6 | modelo |
| Método | Imagens gen. | C-10 Err. | C-10.1 Err. | C-10-C CE | C-100-C Err | C-100-C CE | modelo |
|---|---|---|---|---|---|---|---|
| Resnet18 | Falso | 4.6 | 11.2 | 15.1 | 20.5 | 37.9 | Model-C10 / Model-C100 |
| Resnet18 | Verdadeiro | 4.1 | 10.1 | 14.6 | 20.3 | 38.0 | Model-C10 / Model-C100 |
| Deit-Ti | Falso | 10.5 | 22.2 | 23.0 | 35.3 | 51.8 | Model-C10 / Model-C100 |
| Deit-Ti | Verdadeiro | 4.0 | 9.8 | 12.0 | 24.7 | 39.4 | Model-C10 / Model-C100 |
| PVT-T | Falso | 6.9 | 14.8 | 17.8 | 29.7 | 48.0 | Model-C10 / Model-C100 |
| PVT-T | Verdadeiro | 3.6 | 9.7 | 11.7 | 21.1 | 35.9 | Model-C10 / Model-C100 |
| Pvtv2-b0 | Falso | 5.0 | 11.1 | 14.2 | 23.1 | 41.2 | Model-C10 / Model-C100 |
| Pvtv2-b0 | Verdadeiro | 3.5 | 8.8 | 12.6 | 19.5 | 34.2 | Model-C10 / Model-C100 |
| Convite | Falso | 5.6 | 13.2 | 14.0 | 25.5 | 40.6 | Model-C10 / Model-C100 |
| Convite | Verdadeiro | 3.2 | 7.8 | 9.6 | 18.2 | 31.5 | Model-C10 / Model-C100 |
| Método | Imagens gen. | B-mnist Err. | B-Mnist-C CE | P-mnist err. | P-mnist-C CE | OS-MNIST ERR. | OS-MNIST-C CE | modelo |
|---|---|---|---|---|---|---|---|---|
| Deit-Ti | Falso | 23.1 | 24.5 | 8.0 | 12.8 | 26.9 | 45.9 | Model-B / Model-P / Model-OS |
| Deit-Ti | Verdadeiro | 9.0 | 14.7 | 5.1 | 10.5 | 21.3 | 32.5 | Model-B / Model-P / Model-OS |
| PVT-T | Falso | 22.4 | 23.9 | 13.1 | 17.8 | 20.3 | 34.4 | Model-B / Model-P / Model-OS |
| PVT-T | Verdadeiro | 9.0 | 13.9 | 5.4 | 10.0 | 17.1 | 24.7 | Model-B / Model-P / Model-OS |
train e val serão baixados e preparados automaticamente, sem nenhuma personalização adicional necessária.data/ pasta. A estrutura da pasta para todos os conjuntos de dados deve ser a seguinte: $ tree data
generated dataset
├── class1
│ ├── img1.jpeg
│ ├── img2.jpeg
│ └── ...
├── class2
│ ├── img3.jpeg
│ └── ...
└── ...
NOTA: A pasta das imagens sintéticas deve ser especificada no config -File em SYNTHETIC_DATA.DIR_NAME (por exemplo, configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml linha 24 a 26)
Nota: Mais informações sobre como criar os conjuntos de dados gerados e os modelos necessários podem ser encontrados na seção de geração de dados.
Para avaliar um modelo pré-treinado no Tiny ImageNet , Tiny ImageNet-C , Tiny ImageNet-A e Tiny ImageNet-R Run:
python3 tools/eval.py --cfg path/to/config.yaml --ckpt path/to/weights.pth -d dataset
Por exemplo, para avaliar o deit minúsculo com o Tiny ImageNet-R :
python3 tools/eval.py --cfg configs/baseline/vanilla/deit_vanilla_tinyim.yaml --ckpt checkpoints/deit_tinyimagenet_vanilla.pth -d tinyimagenet-r
Além do Tiny-ImagNet , vários outros conjuntos de dados, como CIFAR , MedMNIST e EuroSAT podem ser avaliados. Uma lista de todos os conjuntos de dados suportados pode ser encontrada com o seguinte comando:
python3 tools/eval.py -h
Para treinar um modelo em um conjunto de dados de escolha do zero, execute:
python3 tools/train.py --cfg path/to/config.yaml
Opções:
--resume : carrega o último ponto de verificação do modeloopts : manipular opções de configuração por exemplo, Deit-Tiny em Tiny ImageNet sem o GenFormer :
python3 tools/train.py --cfg configs/baseline/vanilla/deit_vanilla_tinyim.yaml
por exemplo Deit-Tiny em Tiny ImageNet com GenFormer :
python3 tools/train.py --cfg configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml
por exemplo Deit-Tiny em Tiny ImageNet com GenFormer um wandB -Logging Modificado via linha de comando:
python3 tools/train.py --cfg configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml LOG.WANDB True
Para ajustar todos os parâmetros de treinamento, o arquivo .yaml correspondente nas configs/ -Polder deve ser ajustado. Uma visão geral de todas as opções pode ser encontrada no genformer/engine/cfg.py .
Utilizamos o código de elucidar o espaço de design de modelos generativos baseados em difusão (EDM) para criar os conjuntos de dados gerados. Aqui, estamos fornecendo apenas nossos modelos treinados usados para geração de dados. Para obter mais informações sobre o uso do modelo de difusão, consulte a documentação dos autores.
Este repositório é construído usando a biblioteca Timm e o repositório de Tiny Transformers.
Esta pesquisa foi parcialmente financiada pela Fundação Albert e Anneliese Konanz, pela Fundação de Pesquisa Alemã sob Grant Inst874/9-1 e pelo Ministério Federal de Educação e Pesquisa Alemanha no Projeto M2AnD-Deeplearning (13FH8I08ia).
Se você usou o Genformer em sua pesquisa, cite nosso trabalho. ?
@inproceedings { oehri2024genformer ,
title = { GenFormer – Generated Images are All You Need to Improve Robustness of Transformers on Small Datasets } ,
author = { Oehri, Sven and Ebert, Nikolas and Abdullah, Ahmed and Stricker, Didier and Wasenm{"u}ller, Oliver } ,
booktitle = { International Conference on Pattern Recognition (ICPR) } ,
year = { 2024 } ,
}