Джузеппе Веккио, Ренато Сортино, Симоне Палаццо и Консо СПАМПАМПИНАТО

Официальная реализация Pytorch для бумаги «MATFUSE: управляемая генерация материала с диффузионными моделями» .
Matfuse-это новый подход, который упрощает создание карт SVBRDF (пространственно изменяющаяся функция распределения двунаправленной отражательной способности).
Он использует генеративную силу диффузионных моделей (DM) для оптимизации процесса синтеза материала. Интегрируя несколько источников кондиционирования, включая цветовые палитры, эскизы, текст и изображения, он обеспечивает мелкозернистый контроль и гибкость в генерации материала.
Кроме того, MATFUSE включил редактирование или уточнение синтезированных материалов после их первоначального поколения. Он поддерживает редактирование уровня карты, маскируя определенные области определенных карт или всего материала.

Создание высококачественных материалов в компьютерной графике-это сложная и трудоемкая задача, которая требует большого опыта. Чтобы просто этот процесс, мы вводим Matfuse , единый подход, который использует генеративную силу диффузионных моделей для упрощения создания карт SVBRDF. Наш трубопровод интегрирует несколько источников кондиционирования, включая цветовые палитры, эскизы, текст и изображения, для мелкозернистого управления и гибкости в синтезе материала. Этот дизайн позволяет комбинацию разнообразных источников информации (например, Sketch + Text), расширяя творческие возможности в соответствии с принципом композиции. Кроме того, мы предлагаем модель сжатия с несколькими кодерами с двумя целями: она улучшает производительность реконструкции, изучая отдельное скрытое представление для каждой карты и позволяет возможность редактирования материала на уровне карты. Мы демонстрируем эффективность MATFUSE в нескольких условиях кондиционирования и исследуем потенциал редактирования материала. Мы также количественно оцениваем качество сгенерированных материалов с точки зрения результатов клипа-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/ Мы предоставляем конфигурации для обучения MATFUSE LDMS.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 }
}