Content-aware graphic layout generation
bertujuan untuk secara otomatis mengatur elemen visual bersama dengan konten tertentu, seperti gambar produk e-commerce. Repositori ini bertujuan untuk menyediakan paket lengkap untuk content-aware layout generation
. Jika Anda menyukai repositori ini, silakan beri bintang!
Dalam makalah ini, kami mengusulkan Retrieval-augmented content-aware layout generation
. Kami mengambil contoh tetangga terdekat berdasarkan gambar masukan dan menggunakannya sebagai referensi untuk meningkatkan proses pembuatan.
Kami tidak hanya menyediakan metode kami (RALF / Autoreg Baseline) tetapi juga metode canggih lainnya untuk pembuatan tata letak yang sadar konten. Metode berikut disertakan dalam repositori ini:
Kami merekomendasikan penggunaan Docker untuk mencoba kode kami dengan mudah.
Kami merekomendasikan penggunaan Puisi (semua pengaturan dan dependensi di pyproject.toml).
curl -sSL https://install.python-poetry.org | python3 -
poetry install
bash scripts/docker/build.sh
bash scripts/docker/exec.sh
poetry install
Beberapa variabel harus ditetapkan. Silakan buat scripts/bin/setup.sh sendiri. Setidaknya ketiga variabel ini harus ditetapkan. Jika Anda mengunduh zip yang disediakan, abaikan pengaturannya.
DATA_ROOT= " ./cache/dataset "
Beberapa variabel mungkin disetel (misalnya, OMP_NUM_THREADS
)
Pos pemeriksaan dan tata letak Autoreg Baseline dan RALF kami yang dihasilkan untuk tugas yang tidak dibatasi dan dibatasi tersedia di google drive atau Microsoft OneDrive. Setelah mendownloadnya, silahkan jalankan unzip cache.zip
di direktori ini. Perhatikan bahwa ukuran file adalah 13GB.
direktori cache
berisi:
cache/dataset
.cache/PRECOMPUTED_WEIGHT_DIR
.cache/eval_gt_features
.relationship
di cache/pku_cgl_relationships_dic_using_canvas_sort_label_lexico.pt
.cache/training_logs
. Kami melakukan prapemrosesan pada kumpulan data PKU dan CGL dengan mempartisi kumpulan pelatihan menjadi subset validasi dan pengujian, seperti yang diuraikan di Bagian 4.1. Kumpulan data CGL, sebagaimana didistribusikan, sudah disegmentasi ke dalam divisi-divisi ini. Untuk mereplikasi hasil kami, kami memberikan rincian nama file dalam direktori data_splits/splits/
. Kami mendorong penggunaan pemisahan yang telah ditentukan sebelumnya ini saat melakukan eksperimen berdasarkan pengaturan kami dan menggunakan skor yang kami laporkan seperti CGL-GAN dan DS-GAN.
Kami menggunakan pemisahan pelatihan sebagai sumber pengambilan. Misalnya, ketika RALF dilatih dengan PKU, pemisahan pelatihan PKU digunakan untuk pelatihan dan evaluasi. Kami menyediakan korespondensi yang telah dihitung sebelumnya menggunakan DreamSim [Fu+ NeurIPS23] di data_splits/retrieval/
. Struktur datanya berikut di bawah ini
FILENAME :
- FILENAME top1
- FILENAME top2
...
- FILENAME top16
Anda dapat memuat gambar dari
.
Kami sangat menyarankan untuk melakukan pra-pemrosesan kumpulan data karena Anda dapat menjalankan eksperimen secepat mungkin!!
Setiap skrip dapat digunakan untuk memproses PKU dan CGL dengan menentukan --dataset_type (pku|cgl)
Nama folder dengan tanda kurung akan dihasilkan oleh saluran ini.
| - 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/
berisi hyperparameter dan pengaturan untuk setiap metode dan kumpulan data. Silakan merujuk ke file untuk detailnya. Secara khusus, periksa apakah mode debugging DEBUG=True or False
.
Silakan lari
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 >
di mana TASK_NAME
menunjukkan tugas yang tidak dibatasi dan dibatasi. Silakan lihat daftar tugas di bawah ini:
uncond
: Generasi tanpa kendalac
: Kategori → Ukuran + Posisicwh
: Kategori + Ukuran → Posisipartial
: Penyelesaianrefinement
: Penyempurnaanrelation
: HubunganKumpulan data dengan inpainting.
Silakan lari
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 >
Misalnya, skrip ini sangat membantu. end_to_end.sh
adalah skrip pembungkus untuk pelatihan, inferensi, dan evaluasi.
# 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
Hasil eksperimen disediakan di cache/training_logs
. Misalnya, direktori autoreg_c_cgl
, yang merupakan hasil tugas Autoreg Baseline dengan Kategori → Ukuran + Posisi, meliputi:
test_.pkl
: tata letak yang dihasilkanlayout_test_.png
: tata letak yang dirender, dengan sampel teratas adalah kebenaran dasar dan sampel bawah adalah sampel prediksigen_final_model.pt
: pos pemeriksaan terakhirscores_test.tex
: ringkasan hasil kualitatifSilakan lihat dan jalankan
bash scripts/eval_inference/eval_inference.sh < GPU_ID > < JOB_DIR > < COND_TYPE > cgl
Misalnya,
# Autoreg Baseline with Unconstraint generation
bash scripts/eval_inference/eval_inference.sh 0 " cache/training_logs/autoreg_uncond_cgl " uncond cgl
Kumpulan data dengan kanvas asli, yaitu tanpa lukisan.
Silakan lihat dan jalankan
bash scripts/eval_inference/eval_inference_all.sh < GPU_ID >
Silakan lari
bash scripts/run_job/inference_single_data.sh < GPU_ID > < JOB_DIR > cgl < SAMPLE_ID >
di mana SAMPLE_ID
secara opsional dapat ditetapkan sebagai indeks kumpulan data.
Misalnya,
bash scripts/run_job/inference_single_data.sh 0 " ./cache/training_logs/ralf_uncond_cgl " cgl
Harap sesuaikan image2layout/train/inference_single_data.py untuk memuat data Anda.
Jika Anda merasa karya kami bermanfaat dalam penelitian Anda, mohon pertimbangkan untuk mengutip:
@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 }
}