Content-aware graphic layout generation
旨在自动排列视觉元素以及给定内容,例如电子商务产品图像。该存储库旨在为content-aware layout generation
提供一体化包。如果您喜欢这个存储库,请给它一个星星!
在本文中,我们提出了Retrieval-augmented content-aware layout generation
。我们根据输入图像检索最近邻示例,并将它们用作增强生成过程的参考。
我们不仅提供我们的方法(RALF / Autoreg Baseline),还提供其他最先进的内容感知布局生成方法。此存储库中包含以下方法:
我们建议使用 Docker 来轻松尝试我们的代码。
我们建议使用 Poetry(pyproject.toml 中的所有设置和依赖项)。
curl -sSL https://install.python-poetry.org | python3 -
poetry install
bash scripts/docker/build.sh
bash scripts/docker/exec.sh
poetry install
应该设置一些变量。请自行制作scripts/bin/setup.sh。至少应该设置这三个变量。如果您下载提供的 zip,请忽略安装。
DATA_ROOT= " ./cache/dataset "
可能会设置一些变量(例如, OMP_NUM_THREADS
)
用于无约束和约束任务的 Autoreg 基线和我们的 RALF 的检查点和生成的布局可在 Google Drive 或 Microsoft OneDrive 上找到。下载后,请运行此目录中的unzip cache.zip
。请注意,文件大小为 13GB。
cache
目录包含:
cache/dataset
中预处理的 CGL 数据集。cache/PRECOMPUTED_WEIGHT_DIR
中。cache/eval_gt_features
中 CGL 预先计算的布局特征。cache/pku_cgl_relationships_dic_using_canvas_sort_label_lexico.pt
中relationship
任务的元素关系。cache/training_logs
中 Autoreg 基线和 RALF 的检查点和评估结果。 我们通过将训练集划分为验证和测试子集来对 PKU 和 CGL 数据集进行预处理,如 4.1 节中所述。 CGL 数据集在分发时已被划分为这些部分。为了复制我们的结果,我们提供了data_splits/splits/
目录中的文件名详细信息。我们鼓励在根据我们的设置进行实验并使用我们报告的分数(例如 CGL-GAN 和 DS-GAN)时使用这些预定义的分割。
我们使用训练分割作为检索源。例如,当RALF与PKU一起训练时,PKU的训练分割用于训练和评估。我们在data_splits/retrieval/
中使用 DreamSim [Fu+ NeurIPS23] 提供预先计算的对应关系。数据结构如下
FILENAME :
- FILENAME top1
- FILENAME top2
...
- FILENAME top16
您可以从
加载图像。
我们强烈建议预处理数据集,因为您可以尽快运行实验!
通过指定--dataset_type (pku|cgl)
每个脚本均可用于处理 PKU 和 CGL
带括号的文件夹名称将由此管道生成。
| - 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/
包含每个方法和数据集的超参数和设置。详细信息请参阅文件。特别是,请检查调试模式DEBUG=True or False
。
请跑
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 >
其中TASK_NAME
表示无约束和约束任务。请参考以下任务列表:
uncond
:无约束生成c
:类别→大小+位置cwh
:类别+大小→位置partial
:完成refinement
:精炼relation
:关系具有修复功能的数据集。
请跑
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 >
例如,这些脚本很有帮助。 end_to_end.sh
是用于训练、推理和评估的包装脚本。
# 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
实验结果在cache/training_logs
中提供。例如, autoreg_c_cgl
的目录,其中是 Autoreg Baseline with Category → Size + Position 任务的结果,包括:
test_.pkl
:生成的布局layout_test_.png
:渲染的布局,其中顶部样本是真实样本,底部样本是预测样本gen_final_model.pt
:最终检查点scores_test.tex
:总结的定性结果请查看并运行
bash scripts/eval_inference/eval_inference.sh < GPU_ID > < JOB_DIR > < COND_TYPE > cgl
例如,
# Autoreg Baseline with Unconstraint generation
bash scripts/eval_inference/eval_inference.sh 0 " cache/training_logs/autoreg_uncond_cgl " uncond cgl
具有真实画布的数据集,即没有修复。
请查看并运行
bash scripts/eval_inference/eval_inference_all.sh < GPU_ID >
请跑
bash scripts/run_job/inference_single_data.sh < GPU_ID > < JOB_DIR > cgl < SAMPLE_ID >
其中SAMPLE_ID
可以选择设置为数据集索引。
例如,
bash scripts/run_job/inference_single_data.sh 0 " ./cache/training_logs/ralf_uncond_cgl " cgl
请自定义 image2layout/train/inference_single_data.py 来加载您的数据。
如果您发现我们的工作对您的研究有用,请考虑引用:
@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 }
}