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
Некоторые переменные должны быть установлены. Пожалуйста, создайте скрипты/bin/setup.sh самостоятельно. Должны быть установлены как минимум эти три переменные. Если вы загружаете предоставленный zip-архив, игнорируйте установку.
DATA_ROOT= " ./cache/dataset "
Могут быть установлены некоторые переменные (например, OMP_NUM_THREADS
).
Контрольные точки и созданные макеты Autoreg Baseline и нашего RALF для неограниченных и ограниченных задач доступны на Google Drive или Microsoft OneDrive. После загрузки запустите unzip cache.zip
в этом каталоге. Обратите внимание, что размер файла составляет 13 ГБ.
каталог cache
содержит:
cache/dataset
.cache/PRECOMPUTED_WEIGHT_DIR
.cache/eval_gt_features
.relationship
в cache/pku_cgl_relationships_dic_using_canvas_sort_label_lexico.pt
.cache/training_logs
. Мы выполняем предварительную обработку наборов данных PKU и CGL, разделяя обучающий набор на проверочный и тестовый подмножества, как описано в разделе 4.1. Распределенный набор данных CGL уже сегментирован на эти подразделения. Для репликации наших результатов мы предоставляем подробную информацию об именах файлов в каталоге data_splits/splits/
. Мы рекомендуем использовать эти предопределенные разделения при проведении экспериментов на основе наших настроек и использования наших сообщаемых оценок, таких как CGL-GAN и DS-GAN.
Мы используем обучающее разделение в качестве источника поиска. Например, когда RALF обучается с помощью PKU, тренировочная часть PKU используется для обучения и оценки. Мы предоставляем предварительно вычисленное соответствие с помощью DreamSim [Fu+ NeurIPS23] в data_splits/retrieval/
. Структура данных приведена ниже.
FILENAME :
- FILENAME top1
- FILENAME top2
...
- FILENAME top16
Вы можете загрузить изображение из
.
Мы настоятельно рекомендуем предварительно обработать наборы данных, поскольку вы сможете проводить эксперименты как можно быстрее!
Каждый скрипт можно использовать для обработки как PKU, так и CGL, указав --dataset_type (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 с категорией → Размер + положение, включает в себя:
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 }
}