[ICCV 23] DLT : Génération de disposition conditionnée avec transformateur de disposition à diffusion conjointe discrète-continue
Ce référentiel est une implémentation officielle du papier DLT. Veuillez vous référer au document pour plus de détails et à la page du projet pour un aperçu général.
Inconditionnel | Catégorie | Catégorie + Taille |
---|---|---|
Toutes les exigences pertinentes sont répertoriées dans Environment.yml. Nous vous recommandons d'utiliser conda pour créer l'environnement approprié et installer les dépendances :
conda env create -f environment.yml
conda activate dlt
Veuillez télécharger les ensembles de données publics sur les pages Web suivantes. Mettez-le dans votre dossier et mettez à jour ./dlt/configs/remote/dataset_config.yaml
en conséquence.
Vous pouvez entraîner le modèle à l'aide de n'importe quel script de configuration dans le dossier configs. Par exemple, si vous souhaitez entraîner le modèle DLT fourni sur l'ensemble de données publaynet, la commande est la suivante :
cd dlt
python main.py --config configs/remote/dlt_publaynet_config.yaml --workdir < WORKDIR >
Veuillez noter que le code est indépendant de l'accélérateur. si vous ne souhaitez pas enregistrer les résultats sur wandb, définissez simplement --workdir test
dans args.
Pour générer des échantillons à évaluer sur l'ensemble de test, procédez comme suit :
# put weights in config.logs folder
DATASET = " publaynet " # or "rico" or "magazine"
python generate_samples.py --config configs/remote/dlt_{ $DATASET }_config.yaml \
--workdir < WORKDIR > --epoch < EPOCH > --cond_type < COND_TYPE > \
--save True
# get all the metrics
# update path to pickle file in dlt/evaluation/metric_comp.py
./download_fid_model.sh
python metric_comp.py
où <COND_TYPE>
peut être : (all, Whole_box, loc) - (inconditionnel, catégorie, catégorie+taille) respectivement, <EPOCH>
est le numéro d'époque du modèle que vous souhaitez évaluer et <WORKDIR>
est le chemin d'accès au dossier où les poids du modèle sont enregistrés (par exemple rico_final). Les échantillons générés seront enregistrés dans le dossier logs/<WORKDIR>/samples
si save
True.
Une sortie de celui-ci est un fichier pickle avec des échantillons générés. Vous pouvez l'utiliser pour calculer des métriques.
Le dossier avec les poids après l'entraînement a cette structure :
logs
├── magazine_final
│ ├── checkpoints
│ └── samples
├── publaynet_final
│ ├── checkpoints
│ └── samples
└── rico_final
├── checkpoints
└── samples
Si vous trouvez ce code utile pour votre recherche, veuillez citer notre article :
@misc{levi2023dlt,
title={DLT: Conditioned layout generation with Joint Discrete-Continuous Diffusion Layout Transformer},
author={Elad Levi and Eli Brosh and Mykola Mykhailych and Meir Perez},
year={2023},
eprint={2303.03755},
archivePrefix={arXiv},
primaryClass={cs.CV}
}