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
アナコンダ環境をセットアップするには、次のコマンドを実行します。
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 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 | 8月 | 間違い | 40.4 | 61.3 | 88.4 | 72.8 | 76.2 | モデル |
| deit-ti | 8月 | 真実 | 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 | 8月 | 間違い | 39.9 | 62.1 | 87.9 | 73.0 | 75.9 | モデル |
| PVT-T | 8月 | 真実 | 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
たとえば、 GenFormerを備えたTiny ImageNetのDeit-Tiny :
python3 tools/train.py --cfg configs/genformer/vanilla_genformer/deit_vanilla_tinyim_genformer.yaml
たとえば、コマンドラインをGenFormerて修正されたwandB -loggingを備えたTiny ImageNetのDeit-Tiny :
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 } ,
}