Дейл Декейтер, Итай Ланг, Кфир Аберман, Рана Ханока



В этой работе мы разрабатываем 3D Paintbrush, методику для автоматического текста в местных семантических регионах на сетях посредством описаний текста. Наш метод предназначен для работы непосредственно на сетях, создавая карты текстуры, которые беспрепятственно интегрируются в стандартные графические трубопроводы. Мы предпочитаем одновременно создавать карту локализации (чтобы указать область редактирования) и карту текстур, которая соответствует ей. Этот синергетический подход улучшает качество как локализации, так и стилизации. Чтобы улучшить детали и разрешение текстурированной области, мы используем несколько этапов каскадной диффузионной модели, чтобы контролировать нашу локальную методику редактирования с генеративными априорными науками, изученными на изображениях в разных разрешениях. Наша техника, называемая каскадной дистилляцией баллов (CSD), одновременно перегоняет оценки в разных резолюциях каскадным образом, что позволяет контролировать как гранулярность, так и глобальное понимание надзора. Мы демонстрируем эффективность 3D -кишки для локальной текстуры различных форм в разных семантических регионах.
Чтобы увидеть демонстрацию потери каскадной дистилляции баллов (CSD), ознакомьтесь с этим ноутбуком с применением CSD к генерации изображений и редактированию изображений. CSD позволяет нам контролировать нашу оптимизацию с помощью нескольких каскадных стадий диффузионной модели вместо только базовой стадии, используемой в стандартных SDS. Мы разгоняем оценки на нескольких этапах каскадной диффузионной модели одновременно, чтобы использовать как глобальное осознание первой стадии, так и более высокий уровень детализации, содержащийся на более поздних этапах.

Если у вас меньше 48 ГБ памяти графического процессора, вы все равно можете запустить код, см. Раздел об оптимизации памяти для получения дополнительной информации.
Сначала создайте среду Conda:
conda create -n "3d-paintbrush" python=3.10
и активируйте это с помощью:
conda activate 3d-paintbrush
Затем установите необходимые пакеты, запустив сценарий установки. Обязательно запустите этот сценарий с доступом к графическому процессору .
bash ./install_environment.sh
Инструкции от DeepFloyd IF:
huggingface_hub pip install huggingface_hub --upgrade
Запустите функцию входа в оболочку Python
from huggingface_hub import login
login()
И введите свой токен для доступа к концентратору обнимающего лица.
Чтобы использовать наши предварительно обученные модели, загрузите папки trained_models и inverse_map_cache отсюда и добавьте их в папку данных, чтобы создать следующую структуру каталога:
├── data
│ ├── inverse_map_cache
│ ├── trained_models
│ ├── hand.obj
...
│ ├── spot.obj
Чтобы запустить предварительно обученные модели, используйте приведенные ниже команды. Результаты будут сохранены в results/[name-of-mesh]/[name-of-edit]/renders/infernce.png .
Место:
python src/main.py --config_path demo/spot/gold_chain_necklace.yaml --log.inference true --log.model_path ./data/trained_models/spot/gold_chain_necklace.pth
python src/main.py --config_path demo/spot/heart-shaped_sunglasses.yaml --log.inference true --log.model_path ./data/trained_models/spot/heart-shaped_sunglasses.pth
python src/main.py --config_path demo/spot/colorful_crochet_hat.yaml --log.inference true --log.model_path ./data/trained_models/spot/colorful_crochet_hat.pth






Человек:
python src/main.py --config_path demo/person/tie-dye_apron.yaml --log.inference true --log.model_path ./data/trained_models/person/tie-dye_apron.pth
python src/main.py --config_path demo/person/colorful_polo_shirt.yaml --log.inference true --log.model_path ./data/trained_models/person/colorful_polo_shirt.pth
python src/main.py --config_path demo/person/superman_chest_emblem.yaml --log.inference true --log.model_path ./data/trained_models/person/superman_chest_emblem.pth






LEGO MINFIGURE:
python src/main.py --config_path demo/lego_minifig/barcelona_jersey.yaml --log.inference true --log.model_path ./data/trained_models/lego_minifig/barcelona_jersey.pth
python src/main.py --config_path demo/lego_minifig/blue_denim_overalls.yaml --log.inference true --log.model_path ./data/trained_models/lego_minifig/blue_denim_overalls.pth
python src/main.py --config_path demo/lego_minifig/red_bow_tie.yaml --log.inference true --log.model_path ./data/trained_models/lego_minifig/red_bow_tie.pth






Рука:
python src/main.py --config_path demo/hand/fancy_gold_watch.yaml --log.inference true --log.model_path ./data/trained_models/hand/fancy_gold_watch.pth


Чтобы воспроизвести результаты из бумаги с нуля, просто передайте предопределенный файл демонстрации. Результаты будут сохранены в results/[name-of-mesh]/[name-of-edit] .
Место:
python src/main.py --config_path demo/spot/gold_chain_necklace.yaml
python src/main.py --config_path demo/spot/heart-shaped_sunglasses.yaml
python src/main.py --config_path demo/spot/colorful_crochet_hat.yaml
Человек:
python src/main.py --config_path demo/person/tie-dye_apron.yaml
python src/main.py --config_path demo/person/colorful_polo.yaml
python src/main.py --config_path demo/person/superman_chest_emblem.yaml
Минифигура LEGO:
python src/main.py --config_path demo/lego_minifig/barcelona_jersey.yaml
python src/main.py --config_path demo/lego_minifig/blue_denim_overalls.yaml
python src/main.py --config_path demo/lego_minifig/red_bow_tie.yaml
Рука:
python src/main.py --config_path demo/hand/fancy_gold_watch.yaml
Чтобы запустить свои собственные примеры, вы можете создать свои собственные файлы конфигурации и передать их, как это сделано в предыдущем разделе. Кроме того, вместо этого вы можете передавать значения для любого из полей в src/configs/train_config в качестве аргументов командной строки. Например, для запуска примера рук без прохождения файла конфигурации вы можете позвонить:
python src/main.py --log.exp_dir results/hand/fancy_gold_watch --mesh.path ./data/spot.obj --guidance.object_name "hand" --guidance.style "fancy gold" --guidance.edit "watch"
Если у вас нет доступа к графическому процессору 48 ГБ, вы можете ...
cpu_offload на True в src/configs/guidance_config.py . Это значительно уменьшит использование памяти, но будет за счет скорости.batch_size либо с помощью аргумента командной строки --optim.batch_size или в пользовательском файле конфигурации. Хотя это уменьшает использование памяти, это может повлиять на точность.sample_points на True и отрегулируйте mlp_batch_size ). Хотя это уменьшает использование памяти, это может повлиять на точность.batched_sd в False ). Это уменьшит использование памяти, но будет за счет скорости. Наша кодовая база основана на Latent-Snerf/Latent-Paint, а наш код руководства CSD структурирован в формате модулей руководства Threestudio. Мы благодарим этих авторов за их удивительную работу.
Если вы обнаружите, что этот код полезным для вашего исследования, пожалуйста, укажите нашу бумажную 3D -кисть: локальная стилизация 3D -форм с каскадной дистилляцией счетов.
@article{decatur2023paintbrush,
author = {Decatur, Dale and Lang, Itai and Aberman, Kfir and Hanocka, Rana},
title = {3D Paintbrush: Local Stylization of 3D Shapes with Cascaded Score Distillation},
journal = {arXiv},
year = {2023}
}