يهدف Content-aware graphic layout generation
إلى ترتيب العناصر المرئية تلقائيًا مع محتوى معين، مثل صورة منتج التجارة الإلكترونية. يهدف هذا المستودع إلى توفير حزمة شاملة content-aware layout generation
. إذا أعجبك هذا المستودع، من فضلك أعطه نجمة!
في هذه الورقة، نقترح Retrieval-augmented content-aware layout generation
. نقوم باسترداد أمثلة الجيران الأقرب بناءً على الصورة المدخلة ونستخدمها كمرجع لزيادة عملية الإنشاء.
نحن لا نقدم طريقتنا (RALF / Autoreg Baseline) فحسب، بل نقدم أيضًا أساليب أخرى متطورة لإنشاء تخطيط مدرك للمحتوى. يتم تضمين الطرق التالية في هذا المستودع:
نوصي باستخدام Docker لتجربة الكود الخاص بنا بسهولة.
نوصي باستخدام الشعر (جميع الإعدادات والتبعيات في 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 بنفسك. وينبغي تعيين هذه المتغيرات الثلاثة على الأقل. إذا قمت بتنزيل الملف المضغوط المقدم، يرجى تجاهل الإعداد.
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
: العلاقةمجموعة البيانات مع inpainting.
يرجى تشغيل
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
، والذي يتضمن نتائج خط الأساس للتسجيل التلقائي مع مهمة الفئة → الحجم + الموضع، ما يلي:
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 }
}