Giuseppe Vecchio و Renato Sortino و Simone Palazzo و Concetto Spampinato

تطبيق Pytorch الرسمي للورق "Matfuse: توليد المواد القابلة للتحكم مع نماذج الانتشار" .
Matfuse هو نهج جديد يبسط إنشاء SVBRDF (وظيفة توزيع الانعكاس ثنائية الاتجاه المتغيرة مكانياً).
إنه يعزز الطاقة التوليدية لنماذج الانتشار (DM) لتبسيط عملية توليف المواد. من خلال دمج مصادر متعددة للتكيف ، بما في ذلك لوحات الألوان والرسومات والنصوص والصور ، فإنه يوفر تحكمًا دقيقًا ومرونة في توليد المواد.
بالإضافة إلى ذلك ، قام Matfuse بتمكين تحرير أو تحسين المواد المصنفة بعد جيلها الأولي. وهو يدعم التحرير على مستوى الخريطة عن طريق إخفاء مناطق محددة من خرائط محددة أو المادة بأكملها.

يعد إنشاء مواد عالية الجودة في رسومات الكمبيوتر مهمة صعبة وتستغرق وقتًا طويلاً ، والتي تتطلب خبرة كبيرة. إلى هذه العملية ببساطة ، نقدم Matfuse ، وهو نهج موحد يسخر القوة التوليدية لنماذج الانتشار لتبسيط إنشاء خرائط SVBRDF. يدمج خط أنابيبنا مصادر متعددة للتكيف ، بما في ذلك لوحات الألوان والرسومات والنص والصور ، للتحكم الدقيق والمرونة في تخليق المواد. يتيح هذا التصميم مزيجًا من مصادر المعلومات المتنوعة (على سبيل المثال ، Sketch + Text) ، مما يعزز الاحتمالات الإبداعية بما يتماشى مع مبدأ التكوين. بالإضافة إلى ذلك ، نقترح نموذج ضغط متعدد الأوضاع بهدف ذو شقين: إنه يحسن أداء إعادة الإعمار من خلال تعلم تمثيل كامن منفصل لكل خريطة ويمكّن إمكانيات تحرير المواد على مستوى الخريطة. نوضح فعالية Matfuse في إطار إعدادات تكييف متعددة واستكشاف إمكانات تحرير المواد. نقوم أيضًا بتقييم جودة المواد التي تم إنشاؤها من حيث درجات Clip-IQA و FID.

يعتمد هذا الريبو على تنفيذ الانتشار الكامن الأصلي (https://github.com/compvis/stable-diffusion) الذي تم تعديله ليشمل الميزات الموضحة في ورقة matfuse . إذا كنت معتادًا على قاعدة كود الانتشار المستقر الأصلي ، فلن تواجه أي مشاكل في تشغيل هذا.
التغييرات الأكثر صلة هي:
يتم تدريب Matfuse على مجموعة من مجموعة البيانات بواسطة Deschaintre et al. (2018) والمواد من مكتبة polyheaven. نحن لا نخطط لإصدار مجموعة البيانات هذه لأنه يمكن جمعها بسهولة. على أي حال ، إذا كنت تخطط لتدريب Matfuse الخاص بك ، فإننا نوصي بشدة باستخدام Matsynth مجموعة البيانات التي تم إصدارها مؤخرًا والتي تحتوي على مجموعة واسعة من المواد والشروح عالية الدقة.
git clone https://github.com/giuvecchio/matfuse-sd.git
cd matfuse-sd هذا على افتراض أنك انتقلت إلى جذر matfuse-sd بعد استنساخه.
ملاحظة: يتم اختبار هذا تحت python3.10 . بالنسبة للإصدارات الأخرى من Python ، قد تواجه صراعات الإصدار.
Pytorch 1.13.1
# create environment (can use venv instead of conda)
conda create -n matfuse python==3.10.13
conda activate matfuse
# install required packages
pip install -r requirements.txtيتطلب تدريب Matfuse خطوتين:
يتم الوصول إلى كلاهما من خلال البرنامج النصي main.py في مجلد src ويعتمد على استخدام ملفات التكوين لإعداد النماذج ومجموعات البيانات والخسائر.
توجد ملفات التكوين تحت src/configs/ ، ويتم تقسيمها إلى المجلدات الفرعية autoencoder diffusion .
استخدم ملف التكوين الصحيح اعتمادًا على جزء النموذج الذي تريد تدريبه.
الأمر العام لإطلاق التدريب هو:
python src/main.py --base src/configs/ < model > / < config.yaml > --train --gpus < indices, > نحن نقدم فئة مجموعة البيانات لتدريب Matfuse. تتوقع مجموعة البيانات هذه تنظيم مجلد البيانات كما هو موضح أدناه.
./data/MatFuse/{split}/
├── bricks_045
│ ├── metadata.json
│ ├── diffuse.png
│ ├── normal.png
│ ├── roughness.png
│ ├── specular.png
│ ├── sketch.png
│ ├── renders
│ ├── render_00.png
│ ├── render_01.png
│ ├── ...
├── ...
يجب أن تنقسم البيانات بين مجموعات train ومجموعات test . يحتوي كل مجلد للمواد على خرائط SVBRDF المطلوبة (منتشرة ، عادية ، خشونة ، مضاربة) ، رسم وملف metadata.json مع تعليق النص ولوحة الألوان.
data_root في ملف التكوين للإشارة إلى المجلد حيث يتم تخزين مجموعة البيانات الخاصة بك.
نحن نقدم برنامجًا نصيًا لاستخراج لوحة الألوان من العروض تحت مجلد src/scripts/data . لتشغيله:
python src/scripts/data/extract_palette.py --data < path/to/dataset > يتم توفير تكوينات لتدريب Autoencoder في src/configs/autoencoder .
يستخدم Matfuse نموذجًا منتظمًا VQ. لمزيد من المعلومات ، راجع مستودع تحويلات Taming Transformers.
يمكن أن يبدأ التدريب عن طريق الجري
python src/main.py --base src/configs/autoencoder/multi-vq_f8.yaml --train --gpus 0, في src/configs/diffusion/ نقدم التكوينات لتدريب LDMs Matfuse.ckpt_path ضمن first_stage_config في matfuse-ldm-vq_f8.yaml للإشارة إلى نقطة تفتيش VQ-VAE الخاصة بك.
يمكن أن يبدأ التدريب عن طريق الجري
python src/main.py --base src/configs/diffusion/matfuse-ldm-vq_f8.yaml --train --gpus 0, لاستئناف تدريب إلحاق الحجج --resume <log/folder> إلى أمر التدريب.
إذا كنت تتدرب على Windows ، تذكر تعيين الواجهة الخلفية الموزعة على gloo . البعض الآخر غير مدعوم!
$env :PL_TORCH_DISTRIBUTED_BACKEND= ' gloo 'للحد من عدد وحدات معالجة الرسومات المرئية:
CUDA_VISIBLE_DEVICES= < GPU_ID > python src/main.py ...يتم تسجيل التجارب تلقائيًا باستخدام الأوزان والتحيزات. لتحديد مساحة المشروع الخاصة بك واسم المشروع ، قم بتعيين متغيرات البيئة التالية:
WANDB_PROJECT= ' {YOUR_PROJECT_NAME} '
WANDB_ENTITY= ' {YOUR_PROJECT_SPACE_NAME} ' لتشغيل الاستدلال على نموذج مدرب ، قم بتشغيل نص gradio_app.py يحدد المسار إلى نقطة تفتيش النموذج والتكوين.
سيؤدي هذا إلى فتح واجهة ويب لأداء توليد مشروط وتحرير المواد.
python src/gradio_app.py --ckpt < path/to/checkpoint.ckpt > --config src/configs/diffusion/ < config.yaml > 

@inproceedings { vecchio2024matfuse ,
author = { Vecchio, Giuseppe and Sortino, Renato and Palazzo, Simone and Spampinato, Concetto } ,
title = { MatFuse: Controllable Material Generation with Diffusion Models } ,
booktitle = { Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) } ,
month = { June } ,
year = { 2024 } ,
pages = { 4429-4438 }
}