Ce référentiel est une implémentation officielle de l'article intitulé ci-dessus. Veuillez vous référer à la page ou au document du projet pour plus de détails.
Nous décrivons ici la configuration requise pour la formation et l'évaluation du modèle.
Nous vérifions la reproductibilité dans cet environnement.
Nous vous recommandons d'utiliser Poetry (tous les paramètres et dépendances dans pyproject.toml). La géométrie Pytorch fournit une roue de pré-construction indépendante pour une combinaison des versions PyTorch et CUDA (voir PyG:Installation pour plus de détails). Si votre environnement ne correspond pas à celui ci-dessus, veuillez mettre à jour les dépendances.
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
Les données sont décompressées selon la structure suivante :
download
- clustering_weights
- datasets
- fid_weights
- pretrained_weights
Important : nous trouvons des erreurs critiques qui ne peuvent pas être corrigées rapidement en utilisant plusieurs GPU. Veuillez définir CUDA_VISIBLE_DEVICES=<GPU_ID>
pour forcer le modèle à utiliser un seul GPU.
Remarque : notre framework principal est basé sur Hydra. Il est pratique de gérer des dizaines d'arguments de manière hiérarchique mais peut nécessiter des efforts supplémentaires si l'on est nouveau sur Hydra.
Veuillez exécuter un notebook Jupyter dans notebooks/demo.ipynb. Vous pouvez obtenir et restituer les résultats de six tâches de génération de mise en page sur deux ensembles de données (Rico et PubLayNet).
Vous pouvez également entraîner votre propre modèle à partir de zéro, par exemple en
bash bin/train.sh rico25 layoutdm
, où le premier et le deuxième argument spécifient respectivement l'ensemble de données (choix) et le type d'expérience (choix). Notez que pour la formation/les tests, le style des arguments est key=value
car nous utilisons hydra, contrairement à --key value
populaire (par exemple, argparse).
poetry run python3 -m src.trainer.trainer.test
cond= < COND >
job_dir= < JOB_DIR >
result_dir= < RESULT_DIR >
< ADDITIONAL_ARGS >
<COND>
peut être : (inconditionnel, c, cwh, partiel, raffinement, relation)
Par exemple, si vous souhaitez tester le modèle LayoutDM fourni sur C->S+P
, la commande est la suivante :
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
Veuillez vous référer à TestConfig pour plus d'options disponibles. Vous trouverez ci-dessous quelques options populaires pour <ADDITIONAL_ARGS>.
is_validation=true
: utilisé pour évaluer les performances de génération sur l'ensemble de validation au lieu de l'ensemble de test. Ceci doit être utilisé lors du réglage des hyper-paramètres.sampling=top_p top_p=<TOP_P>
: utilise l'échantillonnage top-p avec p=<TOP_P> au lieu de l'échantillonnage par défaut.poetry run python3 eval.py < RESULT_DIR >
Si vous trouvez ce code utile pour votre recherche, veuillez citer notre article :
@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},
}