Content-aware graphic layout generation
vise à organiser automatiquement les éléments visuels avec un contenu donné, comme l'image d'un produit de commerce électronique. Ce référentiel vise à fournir un package tout-en-un pour content-aware layout generation
. Si vous aimez ce référentiel, donnez-lui une étoile !
Dans cet article, nous proposons Retrieval-augmented content-aware layout generation
. Nous récupérons les exemples du voisin le plus proche en fonction de l'image d'entrée et les utilisons comme référence pour augmenter le processus de génération.
Nous fournissons non seulement notre méthode (RALF / Autoreg Baseline), mais également d'autres méthodes de pointe pour la génération de mises en page sensibles au contenu. Les méthodes suivantes sont incluses dans ce référentiel :
Nous vous recommandons d'utiliser Docker pour essayer facilement notre code.
Nous vous recommandons d'utiliser Poetry (tous les paramètres et dépendances dans pyproject.toml).
curl -sSL https://install.python-poetry.org | python3 -
poetry install
bash scripts/docker/build.sh
bash scripts/docker/exec.sh
poetry install
Certaines variables doivent être définies. Veuillez créer vous-même scripts/bin/setup.sh. Au moins ces trois variables doivent être définies. Si vous téléchargez le zip fourni, veuillez ignorer la configuration.
DATA_ROOT= " ./cache/dataset "
Certaines variables peuvent être définies (par exemple, OMP_NUM_THREADS
)
Les points de contrôle et les mises en page générées de la ligne de base Autoreg et de notre RALF pour les tâches non contraintes et contraintes sont disponibles sur Google Drive ou Microsoft OneDrive. Après l'avoir téléchargé, veuillez exécuter unzip cache.zip
dans ce répertoire. Notez que la taille du fichier est de 13 Go.
le répertoire cache
contient :
cache/dataset
.cache/PRECOMPUTED_WEIGHT_DIR
.cache/eval_gt_features
.relationship
dans cache/pku_cgl_relationships_dic_using_canvas_sort_label_lexico.pt
.cache/training_logs
. Nous effectuons un prétraitement sur les ensembles de données PKU et CGL en divisant l'ensemble de formation en sous-ensembles de validation et de test, comme expliqué dans la section 4.1. L'ensemble de données CGL, tel que distribué, est déjà segmenté en ces divisions. Pour la réplication de nos résultats, nous fournissons des détails sur les noms de fichiers dans le répertoire data_splits/splits/
. Nous encourageons l'utilisation de ces divisions prédéfinies lors de la réalisation d'expériences basées sur notre paramètre et en utilisant nos scores rapportés tels que CGL-GAN et DS-GAN.
Nous utilisons la répartition de la formation comme source de récupération. Par exemple, lorsque RALF est formé avec la PCU, la répartition de la formation de la PCU est utilisée pour la formation et l'évaluation. Nous fournissons la correspondance pré-calculée à l'aide de DreamSim [Fu+ NeurIPS23] dans data_splits/retrieval/
. La structure des données suit ci-dessous
FILENAME :
- FILENAME top1
- FILENAME top2
...
- FILENAME top16
Vous pouvez charger une image depuis
.
Nous vous recommandons fortement de prétraiter les ensembles de données car vous pouvez exécuter vos expériences le plus rapidement possible !
Chaque script peut être utilisé pour traiter à la fois la PKU et la CGL en spécifiant --dataset_type (pku|cgl)
Les noms de dossiers entre parenthèses seront générés par ce pipeline.
| - annotation
| | (for PKU)
| | - train_csv_9973.csv
| | - [test_csv_905.csv](https://drive.google.com/file/d/19BIHOdOzVPBqf26SZY0hu1bImIYlRqVd/view?usp=sharing)
| | (for CGL)
| | - layout_train_6w_fixed_v2.json
| | - layout_test_6w_fixed_v2.json
| | - yinhe.json
| - image
| | - train
| | | - original: image with layout elements
| | | - (input): image without layout elements (by inpainting)
| | | - (saliency)
| | | - (saliency_sub)
| | - test
| | | - input: image without layout elements
| | | - (saliency)
| | | - (saliency_sub)
poetry run python image2layout/hfds_builder/inpainting.py --dataset_root < DATASET_ROOT >
poetry run python image2layout/hfds_builder/saliency_detection.py --input_dir < INPUT_DIR > --output_dir < OUTPUT_DIR > (--algorithm (isnet | basnet))
poetry run python image2layout/hfds_builder/dump_dataset.py --dataset_root < DATASET_ROOT > --output_dir < OUTPUT_DIR >
configs/
contient les hyperparamètres et paramètres pour chaque méthode et ensemble de données. Veuillez vous référer au dossier pour les détails. En particulier, veuillez vérifier si le mode de débogage DEBUG=True or False
.
S'il vous plaît, courez
bash scripts/train/autoreg_cgl.sh < GPU_ID > < TASK_NAME >
# If you wanna run train and eval, please run
bash scripts/run_job/end_to_end.sh < GPU_ID e.g. 0> autoreg cgl < TASK_NAME e.g. uncond >
où TASK_NAME
indique les tâches non contraintes et contraintes. Veuillez vous référer à la liste de tâches ci-dessous :
uncond
: Génération sans contraintec
: Catégorie → Taille + Positioncwh
: Catégorie + Taille → Positionpartial
: Achèvementrefinement
: Raffinementrelation
: RelationL'ensemble de données avec inpainting.
S'il vous plaît, courez
bash scripts/train/ralf_cgl.sh < GPU_ID > < TASK_NAME >
# If you wanna run train and eval, please run
bash scripts/run_job/end_to_end.sh < GPU_ID e.g. 0> ralf cgl < TASK_NAME e.g. uncond >
Par exemple, ces scripts sont utiles. end_to_end.sh
est un script wrapper pour la formation, l'inférence et l'évaluation.
# DS-GAN with CGL dataset
bash scripts/run_job/end_to_end.sh 0 dsgan cgl uncond
# LayoutDM with CGL dataset
bash scripts/run_job/end_to_end.sh 2 layoutdm cgl uncond
# CGL-GAN + Retrieval Augmentation with CGL dataset
bash scripts/run_job/end_to_end.sh 2 cglgan_ra cgl uncond
Les résultats expérimentaux sont fournis dans cache/training_logs
. Par exemple, un répertoire de autoreg_c_cgl
, qui contient les résultats de la tâche Autoreg Baseline with Category → Size + Position, comprend :
test_.pkl
: les mises en page généréeslayout_test_.png
: les mises en page rendues, dans lesquelles l'échantillon supérieur est la vérité terrain et l'échantillon inférieur est un échantillon préditgen_final_model.pt
: le point de contrôle finalscores_test.tex
: résultats qualitatifs résumésVeuillez voir et exécuter
bash scripts/eval_inference/eval_inference.sh < GPU_ID > < JOB_DIR > < COND_TYPE > cgl
Par exemple,
# Autoreg Baseline with Unconstraint generation
bash scripts/eval_inference/eval_inference.sh 0 " cache/training_logs/autoreg_uncond_cgl " uncond cgl
L'ensemble de données avec une vraie toile, c'est-à-dire pas d'inpainting.
Veuillez voir et exécuter
bash scripts/eval_inference/eval_inference_all.sh < GPU_ID >
S'il vous plaît, courez
bash scripts/run_job/inference_single_data.sh < GPU_ID > < JOB_DIR > cgl < SAMPLE_ID >
où SAMPLE_ID
peut éventuellement être défini comme index d'ensemble de données.
Par exemple,
bash scripts/run_job/inference_single_data.sh 0 " ./cache/training_logs/ralf_uncond_cgl " cgl
Veuillez personnaliser image2layout/train/inference_single_data.py pour charger vos données.
Si vous trouvez notre travail utile dans votre recherche, pensez à citer :
@article { horita2024retrievalaugmented ,
title = { {Retrieval-Augmented Layout Transformer for Content-Aware Layout Generation} } ,
author = { Daichi Horita and Naoto Inoue and Kotaro Kikuchi and Kota Yamaguchi and Kiyoharu Aizawa } ,
booktitle = { CVPR } ,
year = { 2024 }
}