Repositorio oficial del documento ICPR24 "Genformador: las imágenes generadas son todo lo que necesita para mejorar la robustez de los transformadores en pequeños conjuntos de datos"
Sven Oehri, Nikolas Ebert, Ahmed Abdullah, Didier Stricker y Oliver Wasenmüller
CEMOS - Centro de Investigación y Transferencia, Universidad de Ciencias Aplicadas Mannheim

El código se probó con CUDA 11.8, Python 3.10 Pytorch 2.2.0. El código no estaba optimizado para las configuraciones de GPU múltiples y varios modelos solo admiten 1 GPU.
git clone https://github.com/CeMOS-IS/GenFormer
cd GenFormer
Para configurar un entorno de Anaconda, ejecute los siguientes comandos desde:
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 una imagen de Docker, ejecute lo siguiente
docker build -t genformer .
Ajuste las GPU visibles, el tamaño de la memoria compartida y el directorio local montado de acuerdo con su configuración, luego ejecute el contenedor.:
docker run -it --name genformer --rm
--shm-size 100G --gpus '"device=0"'
-v /path/to/repo/:/genformer
genformer bash
| Método | Estrategia de tren | Imágenes de Gen. | T-in err. | T-inv2 err. | T-In-R-ERR. | T-in-C CE | T-in-a err. | modelo |
|---|---|---|---|---|---|---|---|---|
| Deit-ti | Base | FALSO | 50.3 | 68.0 | 92.5 | 80.6 | 80.6 | modelo |
| Deit-ti | Base | Verdadero | 44.1 | 65.3 | 89.6 | 77.7 | 78.0 | modelo |
| Deit-ti | CUTMIX + MECHUP | FALSO | 44.4 | 65.0 | 89.7 | 74.5 | 78.3 | modelo |
| Deit-ti | CUTMIX + MECHUP | Verdadero | 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 | Verdadero | 36.4 | 57.8 | 85.6 | 71.0 | 73.1 | modelo |
| PVT-T | Base | FALSO | 46.5 | 67.2 | 91.5 | 78.9 | 78.9 | modelo |
| PVT-T | Base | Verdadero | 42.8 | 64.8 | 87.4 | 76.8 | 77.7 | modelo |
| PVT-T | CUTMIX + MECHUP | FALSO | 41.9 | 64.6 | 87.8 | 74.1 | 76.8 | modelo |
| PVT-T | CUTMIX + MECHUP | Verdadero | 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 | Verdadero | 36.4 | 58.3 | 86.2 | 71.0 | 73.6 | modelo |
| Método | Imágenes de 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 | Modelo-C10 / Modelo-C100 |
| Resnet18 | Verdadero | 4.1 | 10.1 | 14.6 | 20.3 | 38.0 | Modelo-C10 / Modelo-C100 |
| Deit-ti | FALSO | 10.5 | 22.2 | 23.0 | 35.3 | 51.8 | Modelo-C10 / Modelo-C100 |
| Deit-ti | Verdadero | 4.0 | 9.8 | 12.0 | 24.7 | 39.4 | Modelo-C10 / Modelo-C100 |
| PVT-T | FALSO | 6.9 | 14.8 | 17.8 | 29.7 | 48.0 | Modelo-C10 / Modelo-C100 |
| PVT-T | Verdadero | 3.6 | 9.7 | 11.7 | 21.1 | 35.9 | Modelo-C10 / Modelo-C100 |
| Pvtv2-b0 | FALSO | 5.0 | 11.1 | 14.2 | 23.1 | 41.2 | Modelo-C10 / Modelo-C100 |
| Pvtv2-b0 | Verdadero | 3.5 | 8.8 | 12.6 | 19.5 | 34.2 | Modelo-C10 / Modelo-C100 |
| Convicto | FALSO | 5.6 | 13.2 | 14.0 | 25.5 | 40.6 | Modelo-C10 / Modelo-C100 |
| Convicto | Verdadero | 3.2 | 7.8 | 9.6 | 18.2 | 31.5 | Modelo-C10 / Modelo-C100 |
| Método | Imágenes de 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 | Modelo-B / Model-P / Model-OS |
| Deit-ti | Verdadero | 9.0 | 14.7 | 5.1 | 10.5 | 21.3 | 32.5 | Modelo-B / Model-P / Model-OS |
| PVT-T | FALSO | 22.4 | 23.9 | 13.1 | 17.8 | 20.3 | 34.4 | Modelo-B / Model-P / Model-OS |
| PVT-T | Verdadero | 9.0 | 13.9 | 5.4 | 10.0 | 17.1 | 24.7 | Modelo-B / Model-P / Model-OS |
train y val se descargarán y prepararán automáticamente sin necesidad de ninguna más personalización.data/ carpeta. La estructura de la carpeta para todos los conjuntos de datos debe ser la siguiente: $ tree data
generated dataset
├── class1
│ ├── img1.jpeg
│ ├── img2.jpeg
│ └── ...
├── class2
│ ├── img3.jpeg
│ └── ...
└── ...
Nota: La carpeta de las imágenes sintéticas debe especificarse en el archivo config -file en SYNTHETIC_DATA.DIR_NAME (EG configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml Línea 24 a 26)
Nota: Se puede encontrar más información sobre cómo crear los conjuntos de datos generados y los modelos necesarios en la generación de datos de la sección.
Para evaluar un modelo previamente capacitado en Tiny ImageNet , Tiny ImageNet-C , Tiny ImageNet-A y Tiny ImageNet-R Run:
python3 tools/eval.py --cfg path/to/config.yaml --ckpt path/to/weights.pth -d dataset
Por ejemplo, para evaluar el deit pequeño con Tiny ImageNet-R :
python3 tools/eval.py --cfg configs/baseline/vanilla/deit_vanilla_tinyim.yaml --ckpt checkpoints/deit_tinyimagenet_vanilla.pth -d tinyimagenet-r
Además de Tiny-ImagNet , se pueden evaluar numerosos conjuntos de datos como CIFAR , MedMNIST y EuroSAT . Se puede encontrar una lista de todos los conjuntos de datos compatibles con el siguiente comando:
python3 tools/eval.py -h
Para entrenar un modelo en un conjunto de datos de elección desde cero, ejecute:
python3 tools/train.py --cfg path/to/config.yaml
Opciones:
--resume : carga el último punto de control del modeloopts : manipular opciones de configuración por ejemplo, Deit-Tiny en Tiny ImageNet sin GenFormer :
python3 tools/train.py --cfg configs/baseline/vanilla/deit_vanilla_tinyim.yaml
por ejemplo Deit-Tiny en Tiny ImageNet con GenFormer :
python3 tools/train.py --cfg configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml
por ejemplo, Deit-Tiny en Tiny ImageNet con GenFormer y wandB -Gogging modificado a través de la línea de comandos:
python3 tools/train.py --cfg configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml LOG.WANDB True
Para ajustar todos los parámetros de entrenamiento, se debe ajustar el archivo .yaml correspondiente en las configs/ -folder. Se puede encontrar una descripción general de todas las opciones en genformer/engine/cfg.py .
Utilizamos el código para dilucidar el espacio de diseño de los modelos generativos basados en difusión (EDM) para crear los conjuntos de datos generados. Aquí, solo proporcionamos nuestros modelos capacitados utilizados para la generación de datos. Para obtener más información sobre el uso del modelo de difusión, consulte la documentación de los autores.
Este repositorio se construye utilizando la biblioteca TIMM y el repositorio de transformadores pequeños.
Esta investigación fue financiada en parte por Albert y Anneliese Konanz Foundation, la Fundación de Investigación Alemana bajo Grant Inst874/9-1 y el Ministerio Federal de Educación e Investigación de Alemania en el Proyecto M2AIND-DePearning (13FH8I08A).
Si ha utilizado Genformer en su investigación, cite nuestro trabajo. ?
@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 } ,
}