Dieses Repository ist eine offizielle Implementierung des oben betitelten Dokuments. Weitere Einzelheiten finden Sie auf der Projektseite oder im Dokument.
Hier beschreiben wir den für das Modelltraining und die Modellbewertung erforderlichen Aufbau.
Wir prüfen die Reproduzierbarkeit in dieser Umgebung.
Wir empfehlen die Verwendung von Poetry (alle Einstellungen und Abhängigkeiten in pyproject.toml). Pytorch-geometry bietet ein unabhängiges vorgefertigtes Rad für eine Kombination aus PyTorch und CUDA-Version (Einzelheiten finden Sie unter PyG:Installation). Wenn Ihre Umgebung nicht mit der oben genannten übereinstimmt, aktualisieren Sie bitte die Abhängigkeiten.
curl -sSL https://install.python-poetry.org | python3 -
poetry install
wget https://github.com/CyberAgentAILab/layout-dm/releases/download/v1.0.0/layoutdm_starter.zip
unzip layoutdm_starter.zip
Die Daten werden in die folgende Struktur dekomprimiert:
download
- clustering_weights
- datasets
- fid_weights
- pretrained_weights
Wichtig : Wir stellen einige kritische Fehler fest, die bei der Verwendung mehrerer GPUs nicht schnell behoben werden können. Bitte legen Sie CUDA_VISIBLE_DEVICES=<GPU_ID>
fest, um zu erzwingen, dass das Modell eine einzelne GPU verwendet.
Hinweis: Unser Hauptframework basiert auf Hydra. Es ist bequem, Dutzende von Argumenten hierarchisch zu behandeln, erfordert jedoch möglicherweise einige zusätzliche Anstrengungen, wenn man mit Hydra noch nicht vertraut ist.
Bitte führen Sie ein Jupyter-Notebook in „notebooks/demo.ipynb“ aus. Sie können die Ergebnisse von sechs Layout-Generierungsaufgaben in zwei Datensätzen (Rico und PubLayNet) abrufen und rendern.
Sie können Ihr eigenes Modell auch von Grund auf trainieren, beispielsweise durch
bash bin/train.sh rico25 layoutdm
, wobei das erste und zweite Argument den Datensatz (Auswahlmöglichkeiten) bzw. die Art des Experiments (Auswahlmöglichkeiten) angeben. Beachten Sie, dass für Training/Tests der Stil der Argumente key=value
ist, da wir Hydra verwenden, im Gegensatz zum beliebten --key value
(z. B. argparse).
poetry run python3 -m src.trainer.trainer.test
cond= < COND >
job_dir= < JOB_DIR >
result_dir= < RESULT_DIR >
< ADDITIONAL_ARGS >
<COND>
kann sein: (unbedingt, c, cwh, teilweise, Verfeinerung, Relation)
Wenn Sie beispielsweise das bereitgestellte LayoutDM-Modell auf C->S+P
testen möchten, lautet der Befehl wie folgt:
poetry run python3 -m src.trainer.trainer.test cond=c dataset_dir=./download/datasets job_dir=./download/pretrained_weights/layoutdm_rico result_dir=tmp/dummy_results
Weitere verfügbare Optionen finden Sie in TestConfig. Nachfolgend finden Sie einige beliebte Optionen für <ADDITIONAL_ARGS>
is_validation=true
: wird verwendet, um die Generierungsleistung auf dem Validierungssatz anstelle des Testsatzes zu bewerten. Dies muss beim Optimieren der Hyperparameter verwendet werden.sampling=top_p top_p=<TOP_P>
: Verwenden Sie Top-P-Sampling mit p=<TOP_P> anstelle des Standard-Samplings.poetry run python3 eval.py < RESULT_DIR >
Wenn Sie diesen Code für Ihre Forschung nützlich finden, zitieren Sie bitte unseren Artikel:
@inproceedings{inoue2023layout,
title={{LayoutDM: Discrete Diffusion Model for Controllable Layout Generation}},
author={Naoto Inoue and Kotaro Kikuchi and Edgar Simo-Serra and Mayu Otani and Kota Yamaguchi},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2023},
pages={10167-10176},
}