Dale Decatur, Itai Lang, Kfir Aberman, Rana Hanocka



이 작업에서 우리는 텍스트 설명을 통해 메시에 국부 시맨틱 영역을 자동으로 텍스처링하는 기술 인 3D Paintbrush를 개발합니다. 우리의 방법은 메시에서 직접 작동하도록 설계되어 표준 그래픽 파이프 라인에 원활하게 통합되는 텍스처 맵을 생성합니다. 우리는 동시에 현지화 맵 (편집 영역을 지정하기 위해)과 그것을 준수하는 텍스처 맵을 동시에 생성하도록 선택합니다. 이 시너지 효과는 현지화와 양식화의 품질을 향상시킵니다. 텍스처 영역의 세부 사항과 해상도를 향상시키기 위해 계단식 확산 모델의 여러 단계를 활용하여 다른 해상도의 이미지에서 배운 생성 된 사전으로 로컬 편집 기술을 감독합니다. 계단식 점수 증류 (CSD)라고 불리는 우리의 기술은 동시에 계단식 방식으로 여러 해상도에서 점수를 증류하여 감독의 세분성과 글로벌 이해를 모두 제어 할 수있게합니다. 우리는 다른 의미 론적 영역 내에서 다양한 형태를 국소 적으로 질감하기 위해 3D 페인트 브러시의 효과를 보여줍니다.
계단식 점수 증류 (CSD) 손실의 데모를 보려면 이미지 생성 및 이미지 편집에 CSD를 적용하는이 노트북을 확인하십시오. CSD를 통해 표준 SDS에 사용되는 기본 단계 대신 확산 모델의 여러 계단식 단계로 최적화를 감독 할 수 있습니다. 우리는 첫 번째 단계의 글로벌 인식과 이후 단계에 포함 된 더 높은 수준의 세부 사항을 모두 활용하기 위해 계단식 확산 모델의 여러 단계에서 점수를 증류합니다.

48GB 미만의 GPU 메모리가있는 경우에도 코드를 실행할 수 있습니다. 자세한 내용은 메모리 최적화 섹션을 참조하십시오.
먼저 콘다 환경을 만듭니다.
conda create -n "3d-paintbrush" python=3.10
다음과 같이 활성화하십시오.
conda activate 3d-paintbrush
다음으로 설치 스크립트를 실행하여 필요한 패키지를 설치하십시오. GPU에 액세스 하여이 스크립트를 실행하십시오 .
bash ./install_environment.sh
Deepfloyd의 지침 :
huggingface_hub 설치하십시오 pip install huggingface_hub --upgrade
로그인 함수를 파이썬 쉘에서 실행하십시오
from huggingface_hub import login
login()
Hugging Face Hub Access Token을 입력하십시오.
미리 훈련 된 모델을 사용하려면 여기에서 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






레고 민화 :
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
레고 미니 피겨 :
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"
48GB GPU에 액세스 할 수 없다면 ...
src/configs/guidance_config.py 에서 플래그 cpu_offload True 로 설정하여 CPU 오프로드를 활성화하십시오. 이것은 메모리 사용량을 의미있게 줄일 것이지만 속도 비용이 발생합니다.--optim.batch_size 또는 사용자 정의 구성 파일로 batch_size 매개 변수를 변경하여 더 작은 배치 크기를 사용하십시오. 이것은 메모리 사용량을 줄이지 만 정확도에 영향을 줄 수 있습니다.sample_points True 로 설정하고 mlp_batch_size 조정하십시오). 이것은 메모리 사용량을 줄이지 만 정확도에 영향을 줄 수 있습니다.batched_sd False 로 설정). 이렇게하면 메모리 사용량이 줄어들지 만 속도 비용이 발생합니다. 우리의 코드베이스는 잠재적 인 -nerf/latent-paint를 기반으로하며 CSD 안내 코드는 Threestudio의 안내 모듈 형식으로 구성됩니다. 우리는이 저자들에게 놀라운 작품에 감사드립니다.
이 코드가 연구에 도움이되면 Cascaded Score Distillation으로 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}
}