Dale Decatur,Itai Lang,Kfir Aberman,Rana Hanocka



在这项工作中,我们开发了3D画笔,这是一种通过文本说明自动在网格上纹理局部语义区域的技术。我们的方法旨在直接在网格上运行,从而生成纹理图,从而无缝集成到标准的图形管道中。我们选择同时生成本地化图(指定编辑区域)和符合它的纹理图。这种协同方法提高了本地化和风格化的质量。为了增强纹理区域的细节和分辨率,我们利用级联扩散模型的多个阶段来监督我们的本地编辑技术,并通过从不同分辨率的图像中学到的生成先验。我们的技术(称为级联得分蒸馏(CSD))以级联的方式同时在多个分辨率上提取分数,从而可以控制对监督的粒度和全球理解。我们演示了3D画笔在不同语义区域内局部质地各种形状的有效性。
要查看级联分数蒸馏(CSD)损失的演示,请查看此笔记本,将CSD应用于图像生成和图像编辑。 CSD使我们能够通过扩散模型的多个级联阶段来监督优化,而不仅仅是标准SDS中使用的基本阶段。我们同时提炼了级联扩散模型的多个阶段的分数,以利用对第一阶段的全球意识和后期阶段所包含的较高细节的较高水平。

如果您的GPU内存少于48 GB,则仍然可以运行代码,请参阅内存优化的部分,了解更多详细信息。
首先创建Conda环境:
conda create -n "3d-paintbrush" python=3.10
并用:
conda activate 3d-paintbrush
接下来,通过运行安装脚本来安装所需的软件包。确保在访问GPU的情况下运行此脚本。
bash ./install_environment.sh
deepfloyd的说明if:
huggingface_hub pip install huggingface_hub --upgrade
在python shell中运行登录功能
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 Minifigure:
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 GB GPU,则可以...
cpu_offload设置为True在src/configs/guidance_config.py中启用CPU卸载。这将大大减少记忆使用量,但以速度为代价。--optim.batch_size或在自定义配置文件中更改batch_size参数来使用较小的批次大小。虽然这会降低内存使用量,但它可能会影响准确性。sample_points设置为True并调整mlp_batch_size )。虽然这会降低内存使用量,但它可能会影响准确性。batched_sd设置为False )。这将减少记忆使用量,但以速度为代价。 我们的代码库基于潜在的NERF/潜在绘画,而我们的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}
}