Content-aware graphic layout generation
tiene como objetivo organizar automáticamente elementos visuales junto con un contenido determinado, como la imagen de un producto de comercio electrónico. Este repositorio tiene como objetivo proporcionar un paquete todo en uno para content-aware layout generation
. Si te gusta este repositorio, ¡dale una estrella!
En este artículo, proponemos Retrieval-augmented content-aware layout generation
. Recuperamos ejemplos de vecinos más cercanos basados en la imagen de entrada y los usamos como referencia para aumentar el proceso de generación.
Proporcionamos no solo nuestro método (RALF/Autoreg Baseline), sino también otros métodos de última generación para la generación de diseños basados en el contenido. Los siguientes métodos están incluidos en este repositorio:
Recomendamos utilizar Docker para probar fácilmente nuestro código.
Recomendamos usar Poetry (todas las configuraciones y dependencias en pyproject.toml).
curl -sSL https://install.python-poetry.org | python3 -
poetry install
bash scripts/docker/build.sh
bash scripts/docker/exec.sh
poetry install
Se deben establecer algunas variables. Cree scripts/bin/setup.sh usted mismo. Se deben establecer al menos estas tres variables. Si descarga el zip proporcionado, ignore la configuración.
DATA_ROOT= " ./cache/dataset "
Es posible que se establezcan algunas variables (por ejemplo, OMP_NUM_THREADS
).
Los puntos de control y los diseños generados de Autoreg Baseline y nuestro RALF para las tareas restringidas y sin restricciones están disponibles en Google Drive o Microsoft OneDrive. Después de descargarlo, ejecute unzip cache.zip
en este directorio. Tenga en cuenta que el tamaño del archivo es de 13 GB.
El directorio cache
contiene:
cache/dataset
.cache/PRECOMPUTED_WEIGHT_DIR
.cache/eval_gt_features
.relationship
en cache/pku_cgl_relationships_dic_using_canvas_sort_label_lexico.pt
.cache/training_logs
. Realizamos un preprocesamiento en los conjuntos de datos de PKU y CGL dividiendo el conjunto de entrenamiento en subconjuntos de validación y prueba, como se explica en la Sección 4.1. El conjunto de datos CGL, tal como está distribuido, ya está segmentado en estas divisiones. Para replicar nuestros resultados, proporcionamos detalles de los nombres de archivos dentro del directorio data_splits/splits/
. Fomentamos el uso de estas divisiones predefinidas al realizar experimentos basados en nuestra configuración y utilizando nuestras puntuaciones reportadas, como CGL-GAN y DS-GAN.
Usamos la división de entrenamiento como fuente de recuperación. Por ejemplo, cuando RALF se entrena con PKU, la división del entrenamiento de PKU se utiliza para entrenamiento y evaluación. Proporcionamos la correspondencia precalculada usando DreamSim [Fu+ NeurIPS23] en data_splits/retrieval/
. La estructura de datos sigue a continuación.
FILENAME :
- FILENAME top1
- FILENAME top2
...
- FILENAME top16
Puede cargar una imagen desde
.
¡Recomendamos encarecidamente preprocesar conjuntos de datos ya que puede ejecutar sus experimentos lo más rápido posible!
Cada script se puede utilizar para procesar tanto PKU como CGL especificando --dataset_type (pku|cgl)
Esta canalización generará nombres de carpetas entre paréntesis.
| - 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/
contiene los hiperparámetros y la configuración para cada método y conjunto de datos. Consulte el archivo para obtener más detalles. En particular, verifique si el modo de depuración DEBUG=True or False
.
por favor corre
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 >
donde TASK_NAME
indica las tareas restringidas y sin restricciones. Consulte la siguiente lista de tareas:
uncond
: generación sin restriccionesc
: Categoría → Tamaño + Posicióncwh
: Categoría + Tamaño → Posiciónpartial
: finalizaciónrefinement
: Refinamientorelation
: RelaciónEl conjunto de datos con inpainting.
por favor corre
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 >
Por ejemplo, estos scripts son útiles. end_to_end.sh
es un script contenedor para entrenamiento, inferencia y evaluación.
# 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
Los resultados experimentales se proporcionan en cache/training_logs
. Por ejemplo, un directorio de autoreg_c_cgl
, que contiene los resultados de la tarea Autoreg Baseline con Categoría → Tamaño + Posición, incluye:
test_.pkl
: los diseños generadoslayout_test_.png
: los diseños renderizados, en los que la muestra superior es la verdad del terreno y la muestra inferior es una muestra predichagen_final_model.pt
: el punto de control finalscores_test.tex
: resultados cualitativos resumidosPor favor mira y ejecuta
bash scripts/eval_inference/eval_inference.sh < GPU_ID > < JOB_DIR > < COND_TYPE > cgl
Por ejemplo,
# Autoreg Baseline with Unconstraint generation
bash scripts/eval_inference/eval_inference.sh 0 " cache/training_logs/autoreg_uncond_cgl " uncond cgl
El conjunto de datos con lienzo real, es decir, sin pintura.
Por favor mira y ejecuta
bash scripts/eval_inference/eval_inference_all.sh < GPU_ID >
por favor corre
bash scripts/run_job/inference_single_data.sh < GPU_ID > < JOB_DIR > cgl < SAMPLE_ID >
donde SAMPLE_ID
se puede configurar opcionalmente como índice de conjunto de datos.
Por ejemplo,
bash scripts/run_job/inference_single_data.sh 0 " ./cache/training_logs/ralf_uncond_cgl " cgl
Personalice image2layout/train/inference_single_data.py para cargar sus datos.
Si encuentra nuestro trabajo útil en su investigación, considere citar:
@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 }
}