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
いくつかの変数を設定する必要があります。 script/bin/setup.shは各自で作成してください。少なくともこれら 3 つの変数を設定する必要があります。提供された zip をダウンロードする場合は、セットアップを無視してください。
DATA_ROOT= " ./cache/dataset "
いくつかの変数が設定される可能性があります (例: OMP_NUM_THREADS
)
Autoreg Baseline のチェックポイントと生成されたレイアウト、および制約のないタスクと制約のあるタスクの RALF は、Google ドライブまたは Microsoft OneDrive で入手できます。ダウンロード後、このディレクトリにあるunzip cache.zip
を実行してください。ファイルサイズは13GBであることに注意してください。
cache
ディレクトリには次のものが含まれます。
cache/dataset
の前処理された CGL データセット。cache/PRECOMPUTED_WEIGHT_DIR
内のレイアウト エンコーダーと ResNet50 の重み。cache/eval_gt_features
。cache/pku_cgl_relationships_dic_using_canvas_sort_label_lexico.pt
内のrelationship
タスクの要素の関係。cache/training_logs
にあります。 セクション 4.1 で詳しく説明したように、トレーニング セットを検証サブセットとテスト サブセットに分割することにより、PKU および CGL データセットに対して前処理を実行します。 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 タスクの結果) には、次のものが含まれます。
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 }
}