ICPR24 용지의 공식 저장소 "Genformer- 생성 된 이미지는 소규모 데이터 세트에서 변압기의 견고성을 향상시키는 데 필요한 모든 것입니다"
Sven Oehri, Nikolas Ebert, Ahmed Abdullah, Didier Stricker & Oliver Wasenmüller
CEMOS- 응용 과학 대학교 연구 및 전학 센터 Mannheim

코드는 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 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 err. | t-in-r-err. | T-in-C CE | t-in-a err. | 모델 |
|---|---|---|---|---|---|---|---|---|
| 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 + Mixup | 거짓 | 44.4 | 65.0 | 89.7 | 74.5 | 78.3 | 모델 |
| deit-ti | Cutmix + Mixup | 진실 | 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 + Mixup | 거짓 | 41.9 | 64.6 | 87.8 | 74.1 | 76.8 | 모델 |
| PVT-T | Cutmix + Mixup | 진실 | 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 ERR. | C-10.1 err. | C-10-C CE | C-100-C err | 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 err. | B-Mnist-C CE | p-mnist err. | P-Mnist-C CE | os-mnist err. | OS-MNIST-C CE | 모델 |
|---|---|---|---|---|---|---|---|---|
| deit-ti | 거짓 | 23.1 | 24.5 | 8.0 | 12.8 | 26.9 | 45.9 | Model-B / Model-P / Model-OS |
| deit-ti | 진실 | 9.0 | 14.7 | 5.1 | 10.5 | 21.3 | 32.5 | Model-B / Model-P / Model-OS |
| PVT-T | 거짓 | 22.4 | 23.9 | 13.1 | 17.8 | 20.3 | 34.4 | Model-B / Model-P / Model-OS |
| PVT-T | 진실 | 9.0 | 13.9 | 5.4 | 10.0 | 17.1 | 24.7 | Model-B / Model-P / Model-OS |
train 및 val 세트는 추가 사용자 정의없이 다운로드 및 준비됩니다.data/ 폴더에 저장되어 있는지 확인하십시오. 모든 데이터 세트의 폴더 구조는 다음과 같습니다. $ tree data
generated dataset
├── class1
│ ├── img1.jpeg
│ ├── img2.jpeg
│ └── ...
├── class2
│ ├── img3.jpeg
│ └── ...
└── ...
참고 : 합성 이미지의 폴더는 SYNTHETIC_DATA.DIR_NAME (예 : configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml line 24 ~ 26)에서 config -file에 지정되어야합니다.
참고 : 생성 된 데이터 세트 및 필요한 모델을 만드는 방법에 대한 자세한 내용은 섹션 데이터 생성에서 찾을 수 있습니다.
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-Tiny를 평가합니다.
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
예를 들어, Tiny ImageNet w/ GenFormer 에 대한 Deit-Tiny :
python3 tools/train.py --cfg configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml
예를 들어, Tiny ImageNet w/ GenFormer 에 대한 Deit-Tiny wandB -logging을 통해 명령 줄을 통해 수정되었습니다.
python3 tools/train.py --cfg configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml LOG.WANDB True
모든 교육 매개 변수를 조정하려면 configs/ -folder의 해당 .yaml -File을 조정해야합니다. 모든 옵션에 대한 개요는 genformer/engine/cfg.py 에서 찾을 수 있습니다.
확산 기반 생성 모델 (EDM)의 설계 공간을 설명하여 생성 된 데이터 세트를 생성하는 코드를 사용하여 코드를 사용했습니다. 여기서는 데이터 생성에 사용되는 숙련 된 모델 만 제공하고 있습니다. 확산 모델 사용에 대한 자세한 내용은 저자의 문서를 참조하십시오.
이 저장소는 TIMM 라이브러리와 Tiny-Transformers 저장소를 사용하여 구축되었습니다.
이 연구는 Albert와 Anneliese Konanz Foundation, 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 } ,
}