Dale Decatur, Itai Lang, Kfir Aberman, Rana Hanocka



In dieser Arbeit entwickeln wir 3D Pinbrush, eine Technik für automatisch teurige semantische Regionen auf Maschen über Textbeschreibungen. Unsere Methode ist so konzipiert, dass sie direkt auf Maschen arbeiten und Texturkarten erstellen, die nahtlos in Standard -Grafik -Pipelines integriert werden. Wir erstellen gleichzeitig eine Lokalisierungskarte (um den Bearbeitungsbereich anzugeben) und eine Texturkarte, die ihr entspricht. Dieser synergistische Ansatz verbessert die Qualität sowohl der Lokalisierung als auch der Stylisierung. Um die Details und die Auflösung des strukturierten Bereichs zu verbessern, nutzen wir mehrere Stufen eines kaskadierten Diffusionsmodells, um unsere lokale Bearbeitungstechnik mit generativen Priors zu überwachen, die aus Bildern bei verschiedenen Auflösungen gelernt werden. Unsere Technik, die als CSD -Destillation (Cascaded Score Destillation) bezeichnet wird, destilliert gleichzeitig die Bewertungen bei mehreren Auflösungen auf kaskadierte Weise und ermöglicht die Kontrolle über die Granularität und das globale Verständnis der Aufsicht. Wir demonstrieren die Wirksamkeit von 3D -Pinsel, um eine Vielzahl von Formen in verschiedenen semantischen Regionen lokal zu strukturieren.
Um eine Demo des CSD -Verlusts (Cascaded Score Destillation) zu sehen, lesen Sie dieses Notizbuch, in dem CSD auf Bildgenerierung und Bildbearbeitung verwendet wird. Mit CSD können wir unsere Optimierung mit mehreren kaskadierten Stadien des Diffusionsmodells anstelle der in Standard -SDS verwendeten Basisstufe überwachen. Wir destillieren die Werte über mehrere Stufen eines kaskadierten Diffusionsmodells gleichzeitig, um sowohl das globale Bewusstsein der ersten Stufe als auch das höhere Detailniveau in späteren Stadien zu nutzen.

Wenn Sie weniger als 48 GB GPU -Speicher haben, können Sie den Code weiterhin ausführen. Weitere Informationen finden Sie im Abschnitt zur Speicheroptimierung.
Erstellen Sie zuerst die Conda -Umgebung:
conda create -n "3d-paintbrush" python=3.10
und aktiviere es mit:
conda activate 3d-paintbrush
Installieren Sie als nächstes die erforderlichen Pakete, indem Sie das Skript installieren. Stellen Sie sicher, dass Sie dieses Skript mit Zugriff auf eine GPU ausführen .
bash ./install_environment.sh
Anweisungen von DeepFloyd Wenn:
huggingface_hub pip install huggingface_hub --upgrade
Führen Sie die Anmeldefunktion in einer Python -Shell aus
from huggingface_hub import login
login()
und betreten Sie Ihren Umarmungs -Face -Hub -Zugangs -Token.
Um unsere vorgebildeten Modelle zu verwenden, laden Sie sowohl die Ordner trained_models als auch inverse_map_cache herunter und fügen Sie sie unter den Datenordner hinzu, um die folgende Verzeichnisstruktur zu erstellen:
├── data
│ ├── inverse_map_cache
│ ├── trained_models
│ ├── hand.obj
...
│ ├── spot.obj
Verwenden Sie die folgenden Befehle, um die vorgeborenen Modelle auszuführen. Die Ergebnisse werden bei results/[name-of-mesh]/[name-of-edit]/renders/infernce.png gespeichert.
Stelle:
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






Person:
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






Hand:
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


Um Ergebnisse aus dem Papier von Grund auf neu zu reproduzieren, geben Sie einfach eine vordefinierte Demo -Konfigurationsdatei übergeben. Die Ergebnisse werden bei results/[name-of-mesh]/[name-of-edit] gespeichert.
Stelle:
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
Person:
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
Hand:
python src/main.py --config_path demo/hand/fancy_gold_watch.yaml
Um Ihre eigenen Beispiele auszuführen, können Sie Ihre eigenen Konfigurationsdateien erstellen und diese wie im vorherigen Abschnitt übergeben. Darüber hinaus können Sie stattdessen Werte für eines der Felder in src/configs/train_config als Befehlszeilenargumente übergeben. Um das Handbeispiel beispielsweise ohne eine Konfigurationsdatei auszuführen, können Sie aufrufen:
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"
Wenn Sie keinen Zugriff auf eine 48 -GB -GPU haben, können Sie ...
cpu_offload in True src/configs/guidance_config.py einstellen. Dies wird die Speicherverwendung von Bedeutung verringern, ist jedoch auf Kosten der Geschwindigkeit.batch_size entweder mit dem Befehlszeilenargument ändern --optim.batch_size oder in einer benutzerdefinierten Konfigurationsdatei. Während dies die Speicherverwendung reduziert, kann dies die Genauigkeit beeinflussen.sample_points auf True und passen Sie mlp_batch_size an). Während dies die Speicherverwendung reduziert, kann dies die Genauigkeit beeinflussen.batched_sd auf False ). Dies wird die Speicherverwendung verringern, ist jedoch auf Kosten der Geschwindigkeit. Unsere Codebasis basiert auf Latent-Nerf/Latent-Paint, und unser CSD-Leitfaden ist im Format der Leitmodule von Threestudio strukturiert. Wir danken diesen Autoren für ihre erstaunliche Arbeit.
Wenn Sie diesen Code für Ihre Forschung hilfreich finden, zitieren Sie bitte unser Papier 3D -Pinsel: Lokale Stylisierung von 3D -Formen mit einer destillation von kaskadierten Punktzahl.
@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}
}