Le référentiel officiel de l'article ICPR24 "GenFormer - Les images générées sont tout ce dont vous avez besoin pour améliorer la robustesse des transformateurs sur les petits ensembles de données"
Sven Oehri, Nikolas Ebert, Ahmed Abdullah, Didier Stricker et Oliver Wasenmüller
CEMOS - Centre de recherche et de transfert, Université des sciences appliquées Mannheim

Le code a été testé avec CUDA 11.8, Python 3.10 Pytorch 2.2.0. Le code n'a pas été optimisé pour les configurations multi-GPU et divers modèles ne prennent en charge que 1 GPU.
git clone https://github.com/CeMOS-IS/GenFormer
cd GenFormer
Pour configurer un environnement Anaconda, exécutez les commandes suivantes à partir 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
Pour construire une image Docker, exécutez ce qui suit
docker build -t genformer .
Ajustez les GPU visibles, la taille de la mémoire partagée et le répertoire local monté en fonction de votre configuration, puis exécutez le conteneur.:
docker run -it --name genformer --rm
--shm-size 100G --gpus '"device=0"'
-v /path/to/repo/:/genformer
genformer bash
| Méthode | Stratégie du train | Images générales | T-in err. | T-inv2 err. | T-in-r-err. | T-in-c ce | T-in-a err. | modèle |
|---|---|---|---|---|---|---|---|---|
| Deit-ti | Base de base | FAUX | 50.3 | 68.0 | 92.5 | 80.6 | 80.6 | modèle |
| Deit-ti | Base de base | Vrai | 44.1 | 65.3 | 89.6 | 77.7 | 78.0 | modèle |
| Deit-ti | Cutmix + mélange | FAUX | 44.4 | 65.0 | 89.7 | 74.5 | 78.3 | modèle |
| Deit-ti | Cutmix + mélange | Vrai | 38.5 | 57.8 | 86.4 | 71.8 | 74.4 | modèle |
| Deit-ti | Augment | FAUX | 40.4 | 61.3 | 88.4 | 72.8 | 76.2 | modèle |
| Deit-ti | Augment | Vrai | 36.4 | 57.8 | 85.6 | 71.0 | 73.1 | modèle |
| Pvt-t | Base de base | FAUX | 46.5 | 67.2 | 91.5 | 78.9 | 78.9 | modèle |
| Pvt-t | Base de base | Vrai | 42.8 | 64.8 | 87.4 | 76.8 | 77.7 | modèle |
| Pvt-t | Cutmix + mélange | FAUX | 41.9 | 64.6 | 87.8 | 74.1 | 76.8 | modèle |
| Pvt-t | Cutmix + mélange | Vrai | 37.5 | 60.1 | 84.6 | 70.1 | 74.1 | modèle |
| Pvt-t | Augment | FAUX | 39.9 | 62.1 | 87.9 | 73.0 | 75.9 | modèle |
| Pvt-t | Augment | Vrai | 36.4 | 58.3 | 86.2 | 71.0 | 73.6 | modèle |
| Méthode | Images générales | C-10 err. | C-10.1 ERR. | C-10-C CE | C-100-C err | C-100-C CE | modèle |
|---|---|---|---|---|---|---|---|
| Resnet18 | FAUX | 4.6 | 11.2 | 15.1 | 20.5 | 37.9 | Model-C10 / Model-C100 |
| Resnet18 | Vrai | 4.1 | 10.1 | 14.6 | 20.3 | 38.0 | Model-C10 / Model-C100 |
| Deit-ti | FAUX | 10.5 | 22.2 | 23.0 | 35.3 | 51.8 | Model-C10 / Model-C100 |
| Deit-ti | Vrai | 4.0 | 9.8 | 12.0 | 24.7 | 39.4 | Model-C10 / Model-C100 |
| Pvt-t | FAUX | 6.9 | 14.8 | 17.8 | 29.7 | 48.0 | Model-C10 / Model-C100 |
| Pvt-t | Vrai | 3.6 | 9.7 | 11.7 | 21.1 | 35.9 | Model-C10 / Model-C100 |
| Pvtv2-b0 | FAUX | 5.0 | 11.1 | 14.2 | 23.1 | 41.2 | Model-C10 / Model-C100 |
| Pvtv2-b0 | Vrai | 3.5 | 8.8 | 12.6 | 19.5 | 34.2 | Model-C10 / Model-C100 |
| Condamnation | FAUX | 5.6 | 13.2 | 14.0 | 25.5 | 40.6 | Model-C10 / Model-C100 |
| Condamnation | Vrai | 3.2 | 7.8 | 9.6 | 18.2 | 31.5 | Model-C10 / Model-C100 |
| Méthode | Images générales | B-mNist err. | B-MNIST-C CE | P-mnist err. | P-MNIST-C CE | OS-Mnist err. | OS-MNIST-C CE | modèle |
|---|---|---|---|---|---|---|---|---|
| Deit-ti | FAUX | 23.1 | 24.5 | 8.0 | 12.8 | 26.9 | 45.9 | Model-B / Model-P / Model-OS |
| Deit-ti | Vrai | 9.0 | 14.7 | 5.1 | 10.5 | 21.3 | 32.5 | Model-B / Model-P / Model-OS |
| Pvt-t | FAUX | 22.4 | 23.9 | 13.1 | 17.8 | 20.3 | 34.4 | Model-B / Model-P / Model-OS |
| Pvt-t | Vrai | 9.0 | 13.9 | 5.4 | 10.0 | 17.1 | 24.7 | Model-B / Model-P / Model-OS |
train et val seront téléchargés et préparés automatiquement sans aucune personnalisation supplémentaire nécessaire.data/ dossiers. La structure du dossier pour tous les ensembles de données doit être la suivante: $ tree data
generated dataset
├── class1
│ ├── img1.jpeg
│ ├── img2.jpeg
│ └── ...
├── class2
│ ├── img3.jpeg
│ └── ...
└── ...
Remarque: le dossier des images synthétiques doit être spécifié dans le fichier config sous SYNTHETIC_DATA.DIR_NAME (par exemple configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml LINE 24 à 26)
Remarque: Plus d'informations sur la façon de créer les ensembles de données générés et les modèles nécessaires peuvent être trouvés dans la génération de données de section.
Pour évaluer un modèle pré-formé sur Tiny ImageNet , Tiny ImageNet-C , Tiny ImageNet-A et Tiny ImageNet-R Run:
python3 tools/eval.py --cfg path/to/config.yaml --ckpt path/to/weights.pth -d dataset
Par exemple, pour évaluer le deit-tiny avec sur Tiny ImageNet-R :
python3 tools/eval.py --cfg configs/baseline/vanilla/deit_vanilla_tinyim.yaml --ckpt checkpoints/deit_tinyimagenet_vanilla.pth -d tinyimagenet-r
En plus de Tiny-ImagNet , de nombreux autres ensembles de données tels que CIFAR , MedMNIST et EuroSAT peuvent être évalués. Une liste de tous les ensembles de données pris en charge peut être trouvé avec la commande suivante:
python3 tools/eval.py -h
Pour former un modèle sur un ensemble de données de choix à partir de zéro, exécutez:
python3 tools/train.py --cfg path/to/config.yaml
Options:
--resume : charge le dernier point de contrôle du modèleopts : manipuler les options de configuration par exemple Deit-Tiny sur Tiny ImageNet sans GenFormer :
python3 tools/train.py --cfg configs/baseline/vanilla/deit_vanilla_tinyim.yaml
par exemple Deit-Tiny sur Tiny ImageNet avec GenFormer :
python3 tools/train.py --cfg configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml
par exemple Deit-Tiny sur Tiny ImageNet avec GenFormer un wandB -Logging modifié via la ligne de commande:
python3 tools/train.py --cfg configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml LOG.WANDB True
Pour ajuster tous les paramètres de formation, le fichier .yaml correspondant dans les configs/ -Folder doit être ajusté. Un aperçu de toutes les options peut être trouvé dans genformer/engine/cfg.py
Nous avons utilisé le code de l'élucidation de l'espace de conception des modèles génératifs basés sur la diffusion (EDM) pour créer les ensembles de données générés. Ici, nous fournissons uniquement nos modèles formés utilisés pour la génération de données. Pour plus d'informations sur l'utilisation du modèle de diffusion, veuillez vous référer à la documentation des auteurs.
Ce référentiel est construit à l'aide de la bibliothèque TIMM et du référentiel de transformateurs minuscules.
Cette recherche a été financée en partie par la Fondation Albert et Anneliese Konanz, la German Research Foundation sous Grant Inst874 / 9-1 et le ministère fédéral de l'Éducation et de la recherche en Allemagne dans le projet M2aind-Deeplearning (13FH8I08IA).
Si vous avez utilisé GenFormer dans vos recherches, veuillez citer notre travail. ?
@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 } ,
}