ICPR24纸的官方存储库“ GenFormer-生成的图像是您需要改善小型数据集上变形金刚的稳健性的全部内容”
Sven Oehri,Nikolas Ebert,Ahmed Abdullah,Didier Stricker和OliverWasenmüller
CEMOS-应用科学大学曼海姆大学研究与转移中心

该代码用CUDA 11.8,Python 3.10 Pytorch 2.2.0测试。该代码未针对多GPU设置进行优化,并且仅支持1 GPU的各种模型。
git clone https://github.com/CeMOS-IS/GenFormer
cd GenFormer
要设置Anaconda环境,请从:
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
要构建Docker映像,请运行以下内容
docker build -t genformer .
根据您的设置调整可见的GPU,共享内存大小和安装的本地目录,然后运行容器。
docker run -it --name genformer --rm
--shm-size 100G --gpus '"device=0"'
-v /path/to/repo/:/genformer
genformer bash
| 方法 | 火车策略 | 一般图像 | T-in Err。 | T-INV2错误。 | T-In-R-ERR。 | T-in-C CE | T-in-a错误。 | 模型 |
|---|---|---|---|---|---|---|---|---|
| deit-ti | 基线 | 错误的 | 50.3 | 68.0 | 92.5 | 80.6 | 80.6 | 模型 |
| deit-ti | 基线 | 真的 | 44.1 | 65.3 | 89.6 | 77.7 | 78.0 | 模型 |
| deit-ti | cutmix +混音 | 错误的 | 44.4 | 65.0 | 89.7 | 74.5 | 78.3 | 模型 |
| deit-ti | cutmix +混音 | 真的 | 38.5 | 57.8 | 86.4 | 71.8 | 74.4 | 模型 |
| deit-ti | Augmix | 错误的 | 40.4 | 61.3 | 88.4 | 72.8 | 76.2 | 模型 |
| deit-ti | Augmix | 真的 | 36.4 | 57.8 | 85.6 | 71.0 | 73.1 | 模型 |
| PVT-T | 基线 | 错误的 | 46.5 | 67.2 | 91.5 | 78.9 | 78.9 | 模型 |
| PVT-T | 基线 | 真的 | 42.8 | 64.8 | 87.4 | 76.8 | 77.7 | 模型 |
| PVT-T | cutmix +混音 | 错误的 | 41.9 | 64.6 | 87.8 | 74.1 | 76.8 | 模型 |
| PVT-T | cutmix +混音 | 真的 | 37.5 | 60.1 | 84.6 | 70.1 | 74.1 | 模型 |
| PVT-T | Augmix | 错误的 | 39.9 | 62.1 | 87.9 | 73.0 | 75.9 | 模型 |
| PVT-T | Augmix | 真的 | 36.4 | 58.3 | 86.2 | 71.0 | 73.6 | 模型 |
| 方法 | 一般图像 | C-10错误。 | C-10.1错误。 | C-10-C CE | C-100-C错误 | C-100-C CE | 模型 |
|---|---|---|---|---|---|---|---|
| RESNET18 | 错误的 | 4.6 | 11.2 | 15.1 | 20.5 | 37.9 | Model-C10 / Model-C100 |
| RESNET18 | 真的 | 4.1 | 10.1 | 14.6 | 20.3 | 38.0 | Model-C10 / Model-C100 |
| deit-ti | 错误的 | 10.5 | 22.2 | 23.0 | 35.3 | 51.8 | Model-C10 / Model-C100 |
| deit-ti | 真的 | 4.0 | 9.8 | 12.0 | 24.7 | 39.4 | Model-C10 / Model-C100 |
| PVT-T | 错误的 | 6.9 | 14.8 | 17.8 | 29.7 | 48.0 | Model-C10 / Model-C100 |
| PVT-T | 真的 | 3.6 | 9.7 | 11.7 | 21.1 | 35.9 | Model-C10 / Model-C100 |
| PVTV2-B0 | 错误的 | 5.0 | 11.1 | 14.2 | 23.1 | 41.2 | Model-C10 / Model-C100 |
| PVTV2-B0 | 真的 | 3.5 | 8.8 | 12.6 | 19.5 | 34.2 | Model-C10 / Model-C100 |
| 汇合 | 错误的 | 5.6 | 13.2 | 14.0 | 25.5 | 40.6 | Model-C10 / Model-C100 |
| 汇合 | 真的 | 3.2 | 7.8 | 9.6 | 18.2 | 31.5 | Model-C10 / Model-C100 |
| 方法 | 一般图像 | b-Mnist错误。 | B-MNIST-C CE | p-mnist错误。 | P-Mnist-C CE | 操作系统错误。 | OS-MNIST-C CE | 模型 |
|---|---|---|---|---|---|---|---|---|
| deit-ti | 错误的 | 23.1 | 24.5 | 8.0 | 12.8 | 26.9 | 45.9 | B / Model-P / Model-OS |
| deit-ti | 真的 | 9.0 | 14.7 | 5.1 | 10.5 | 21.3 | 32.5 | B / Model-P / Model-OS |
| PVT-T | 错误的 | 22.4 | 23.9 | 13.1 | 17.8 | 20.3 | 34.4 | B / Model-P / Model-OS |
| PVT-T | 真的 | 9.0 | 13.9 | 5.4 | 10.0 | 17.1 | 24.7 | B / Model-P / Model-OS |
train和val集合,而无需任何进一步的自定义。data/文件夹中。所有数据集的文件夹结构应如下: $ tree data
generated dataset
├── class1
│ ├── img1.jpeg
│ ├── img2.jpeg
│ └── ...
├── class2
│ ├── img3.jpeg
│ └── ...
└── ...
注意:合成图像的文件夹必须在SYNTHETIC_DATA.DIR_NAME下的config -file中指定(例如configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml行24至26)
注意:有关如何创建生成数据集的更多信息,可以在部分数据生成中找到必要的模型。
评估在Tiny ImageNet , Tiny ImageNet-C , Tiny ImageNet-A和Tiny ImageNet-R运行上的预训练模型:
python3 tools/eval.py --cfg path/to/config.yaml --ckpt path/to/weights.pth -d dataset
例如,使用Tiny ImageNet-R评估Deit微型:
python3 tools/eval.py --cfg configs/baseline/vanilla/deit_vanilla_tinyim.yaml --ckpt checkpoints/deit_tinyimagenet_vanilla.pth -d tinyimagenet-r
除了Tiny-ImagNet外,还可以评估许多其他数据集,例如CIFAR , MedMNIST和EuroSAT 。可以使用以下命令找到所有受支持数据集的列表:
python3 tools/eval.py -h
要在从头开始的选择数据集上训练模型,请运行:
python3 tools/train.py --cfg path/to/config.yaml
选项:
--resume :加载模型的最后一个检查点opts :操纵配置选项例如,与GenFormer的Tiny ImageNet的Deit-Tiny :
python3 tools/train.py --cfg configs/baseline/vanilla/deit_vanilla_tinyim.yaml
例如,与GenFormer的Tiny ImageNet的Deit-Tiny :
python3 tools/train.py --cfg configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml
例如,在带有命令行修改的GenFormer wandB的Tiny ImageNet上的Deit-Tiny :
python3 tools/train.py --cfg configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml LOG.WANDB True
为了调整所有训练参数,必须调整configs/文件中相应的.yaml -file。所有选项的概述都可以在genformer/engine/cfg.py中找到。
我们从阐明基于扩散的生成模型(EDM)的设计空间来利用代码来创建生成的数据集。在这里,我们仅提供用于数据生成的训练有素的模型。有关使用扩散模型的更多信息,请参阅作者的文档。
该存储库是使用TIMM库和Tiny Transformers存储库构建的。
这项研究部分由Albert和Anneliese Konanz基金会,Grant Inst874/9-1的德国研究基金会以及联邦教育和研究部在该项目M2AIND-Deeplearning(13FH8I08IA)中资助。
如果您在研究中使用了GenFormer,请引用我们的工作。 ?
@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 } ,
}