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 } ,
}