더 많은 시각적 결과를 보려면 프로젝트 페이지를 확인하세요.
자세한 내용은 당사의 논문을 참조하세요.
환경을 복제하고 필요한 종속성을 설치하십시오.
conda env create -f environment.yml
conda activate occfusion
conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=12.4 -c pytorch -c nvidia
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn
pip install " git+https://github.com/facebookresearch/pytorch3d.git "
pip install --upgrade https://github.com/unlimblue/KNN_CUDA/releases/download/0.2/KNN_CUDA-0.2-py3-none-any.whl
Wild2Avatar에서 샘플링된 6개의 OcMotion 시퀀스에 대한 교육/렌더링 코드를 제공합니다. 전처리된 시퀀스가 유용하다고 생각되면 Wild2Avatar 및 CHOMP를 인용해 보세요.
여기에서 처리된 시퀀스를 다운로드하고 ./data/
디렉터리에 다운로드한 시퀀스의 압축을 풀어주세요. ./data/
의 구조는 다음과 같아야 합니다.
./
├── ...
└── data/
├── 0011_02_1_w2a/
├── images/
├── masks/
└── ...
├── 0011_02_2_w2a/
├── 0013_02_w2a/
├── 0038_04_w2a/
├── 0039_02_w2a/
└── 0041_00_w2a/
여기에서 중립 SMPL 모델을 등록하고 다운로드하세요. 다운로드한 모델을 ./assets/
폴더에 넣습니다.
보다 효율적인 표준 공간 SDS를 활성화하기 위해 표준 2D 포즈용 OpenPose 캔버스가 미리 계산되어 있으며 여기에서 다운로드할 수 있습니다. 다운로드한 폴더를 ./assets/
폴더에 넣습니다.
0단계(선택 사항, 아래 참조)에서 모델을 훈련하려면 완전한 인간 인페인팅을 위한 바이너리 마스크를 계산해야 합니다. 세분화를 위해 SAM-HQ를 활용했습니다. 마스크를 직접 계산하려면 여기에서 사전 훈련된 가중치 sam_hq_vit_h.pth
다운로드하고 다운로드된 가중치를 ./assets/
폴더에 넣으세요.
다운로드가 성공적으로 완료되면 ./assets/
의 구조는 다음과 같아야 합니다.
./
├── ...
└── assets/
├── daposesv2
├── -5.png
└── ...
├── SMPL_NEUTRAL.pkl
└── sam_hq_vit_h.pth (optional)
우리는 빠른 추론/평가를 위해 모든 OcMotion 시퀀스에 대해 사전 훈련된 모델을 제공합니다. 여기에서 ocmotion/
폴더를 다운로드하고 다운로드한 폴더를 ./output/
에 넣으세요.
OccFusion의 훈련은 4개의 순차적 단계로 구성됩니다. 0단계와 2단계는 선택 사항이며 맞춤형 모델, 솔버 및 프롬프트를 사용하여 폐색된 인간을 다시 칠합니다. 다양한 조합은 인페인팅 결과에 큰 영향을 미칠 수 있습니다. 인간 세대를 조건으로 한 고품질 포즈는 이 작업의 범위를 벗어납니다. 우리는 사용자가 직접 시도해 볼 수 있도록 코드(아래 0단계 및 2단계 참조)를 제공합니다.
우리는 여기에서 다운로드할 수 있도록 미리 계산된 세대(결과를 논문에 복제하기 위해)를 제공합니다. 압축을 풀고 oc_generations/
폴더를 루트 디렉터리에 직접 넣어주세요. 계산을 사용하면 0단계와 2단계를 건너뛸 수 있습니다.
훈련 전에 Hugging Face 모델을 캐싱하기 위한 사용자 정의 디렉터리를 지정하는 것이 좋습니다. 이 디렉터리는 훈련 스크립트를 처음 실행할 때 자동으로 다운로드됩니다.
export HF_HOME= " YOUR_DIRECTORY "
export HF_HUB_CACHE= " YOUR_DIRECTORY "
0단계(초기화 단계)를 실행하여 SAM 및 Stable Diffusion을 사용하여 완전한 인간에 대한 바이너리 마스크를 분할하고 인페인트합니다. OcMotion 시퀀스에서 Stage 0을 실행하려면 해당 SUBJECT
변수의 주석 처리를 해제하고
source run_oc_stage0.sh
분할된 바이너리 마스크는 ./oc_genertaions/$SUBJECT/gen_masks/
디렉토리에 저장됩니다.
최적화 단계를 시작하려면 1단계를 실행하세요. OcMotion 시퀀스에서 1단계를 실행하려면 해당 SUBJECT
변수의 주석 처리를 해제하고
source run_oc_stage1.sh
렌더링과 함께 체크포인트는 ./output/$SUBJECT/
에 저장됩니다.
최적화된 모델을 사용하여 Stage 2를 실행하여 incontext-inpainting을 시작합니다. OcMotion 시퀀스에서 Stage 2를 실행하려면 해당 SUBJECT
변수의 주석을 해제하고
source run_oc_stage2.sh
인페인팅된 RGB 이미지는 ./oc_genertaions/$SUBJECT/incontext_inpainted/
채색/ 디렉토리에 저장됩니다.
마지막으로 인페인팅된 RGB 이미지와 최적화된 모델 체크포인트를 사용하여 3단계를 실행하여 구체화 단계를 시작합니다. OcMotion 시퀀스에서 3단계를 실행하려면 해당 SUBJECT
변수의 주석 처리를 해제하고
source run_oc_stage1.sh
렌더링과 함께 체크포인트는 ./output/$SUBJECT/
에 저장됩니다.
1단계와 3단계에서는 학습이 완료된 후 렌더링 프로세스가 자동으로 시작됩니다. 학습된 체크포인트에서 명시적으로 렌더링하려면 다음을 실행하세요.
source render.sh
이 코드 베이스는 GauHuman을 기반으로 구축되었습니다. SDS 지침은 DreamGaussian에서 차용되었습니다.
폐색된 인간 렌더링에 대한 이전 작업도 확인하세요! OccNeRF 및 Wild2Avatar.
이 저장소가 귀하의 작업이나 연구에 유용하다고 생각되면 다음을 인용해 주세요.
@inproceedings { occfusion ,
title = { OccFusion: Rendering Occluded Humans with Generative Diffusion Priors } ,
author = { Sun, Adam and Xiang, Tiange and Delp, Scott and Fei-Fei, Li and Adeli, Ehsan } ,
booktitle = { The Thirty-eighth Annual Conference on Neural Information Processing Systems } ,
url = { https://arxiv.org/abs/2407.00316 } ,
year = { 2024 }
}