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 }
}