Weitere visuelle Ergebnisse finden Sie auf unserer Projektseite.
Einzelheiten entnehmen Sie bitte unserem Papier.
Bitte klonen Sie unsere Umgebung und installieren Sie die erforderlichen Abhängigkeiten:
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
Wir stellen Trainings-/Rendering-Code für die 6 OcMotion-Sequenzen bereit, die von Wild2Avatar abgetastet werden. Wenn Sie die vorverarbeiteten Sequenzen nützlich finden, denken Sie bitte darüber nach, Wild2Avatar und CHOMP zu zitieren.
Bitte laden Sie die verarbeiteten Sequenzen hier herunter und entpacken Sie die heruntergeladenen Sequenzen im Verzeichnis ./data/
. Die Struktur von ./data/
sollte wie folgt aussehen:
./
├── ...
└── data/
├── 0011_02_1_w2a/
├── images/
├── masks/
└── ...
├── 0011_02_2_w2a/
├── 0013_02_w2a/
├── 0038_04_w2a/
├── 0039_02_w2a/
└── 0041_00_w2a/
Bitte registrieren Sie sich hier und laden Sie das neutrale SMPL-Modell herunter. Legen Sie die heruntergeladenen Modelle im Ordner ./assets/
ab.
Um einen effizienteren kanonischen Raum zu ermöglichen, sind SDS und OpenPose Canvas für kanonische 2D-Posen vorberechnet und können hier heruntergeladen werden. Legen Sie den heruntergeladenen Ordner im Ordner ./assets/
ab.
Um das Modell in Stufe 0 zu trainieren (optional, siehe unten), müssen wir binäre Masken für vollständige menschliche Inpaintings berechnen. Für die Segmentierung haben wir SAM-HQ genutzt. Wenn Sie die Masken selbst berechnen möchten, laden Sie bitte die vorab trainierten Gewichte sam_hq_vit_h.pth
hier herunter und legen Sie die heruntergeladenen Gewichte im Ordner ./assets/
ab.
Nach erfolgreichem Download sollte die Struktur von ./assets/
so aussehen
./
├── ...
└── assets/
├── daposesv2
├── -5.png
└── ...
├── SMPL_NEUTRAL.pkl
└── sam_hq_vit_h.pth (optional)
Wir stellen unsere vorab trainierten Modelle für alle OcMotion-Sequenzen bereit, um eine schnelle Schlussfolgerung/Bewertung zu ermöglichen. Bitte laden Sie den Ordner ocmotion/
hier herunter und legen Sie die heruntergeladenen Ordner in ./output/
ab.
Das Training von OccFusion besteht aus 4 aufeinanderfolgenden Phasen. Stufe 0 und 2 sind optional und bemalen den verdeckten Menschen mit benutzerdefinierten Modellen, Lösungen und Eingabeaufforderungen. Unterschiedliche Kombinationen können die Inpainting-Ergebnisse erheblich beeinflussen. Eine qualitativ hochwertige haltungsbedingte menschliche Generation liegt außerhalb des Rahmens dieser Arbeit. Wir stellen unseren Code bereit (siehe Stufe 0 und Stufe 2 unten), damit Benutzer es selbst ausprobieren können.
Wir stellen unsere vorberechneten Generationen (um unsere Ergebnisse in der Arbeit zu reproduzieren) hier zum Herunterladen bereit. Bitte entpacken Sie den Ordner oc_generations/
und legen Sie ihn direkt im Stammverzeichnis ab. Wenn Sie unsere Berechnungen verwenden, können die Stufen 0 und 2 übersprungen werden.
Wir empfehlen dringend, vor dem Training ein benutzerdefiniertes Verzeichnis zum Zwischenspeichern von Hugging Face-Modellen anzugeben, das bei der ersten Ausführung der Trainingsskripte automatisch heruntergeladen wird.
export HF_HOME= " YOUR_DIRECTORY "
export HF_HUB_CACHE= " YOUR_DIRECTORY "
Führen Sie Phase 0 (die Initialisierungsphase) aus, um Binärmasken für vollständige Menschen mit SAM und stabiler Diffusion zu segmentieren und einzufärben. Um Stufe 0 in einer OcMotion-Sequenz auszuführen, entkommentieren Sie die entsprechende SUBJECT
Variable und
source run_oc_stage0.sh
Die segmentierten Binärmasken werden im Verzeichnis ./oc_genertaions/$SUBJECT/gen_masks/
gespeichert.
Führen Sie Phase 1 aus, um die Optimierungsphase zu starten. Um Stufe 1 in einer OcMotion-Sequenz auszuführen, entkommentieren Sie die entsprechende SUBJECT
Variable und
source run_oc_stage1.sh
Der Prüfpunkt wird zusammen mit den Renderings in ./output/$SUBJECT/
gespeichert.
Führen Sie mit einem optimierten Modell Stufe 2 aus, um Incontext-Inpainting zu starten. Um Stufe 2 in einer OcMotion-Sequenz auszuführen, entkommentieren Sie die entsprechende SUBJECT
Variable und
source run_oc_stage2.sh
Die eingefärbten RGB-Bilder werden im Verzeichnis ./oc_genertaions/$SUBJECT/incontext_inpainted/
gespeichert.
Führen Sie abschließend mit den eingefärbten RGB-Bildern und dem optimierten Modellprüfpunkt Phase 3 aus, um die Verfeinerungsphase zu starten. Um Stufe 3 in einer OcMotion-Sequenz auszuführen, entkommentieren Sie die entsprechende SUBJECT
Variable und
source run_oc_stage1.sh
Der Prüfpunkt wird zusammen mit den Renderings in ./output/$SUBJECT/
gespeichert.
In den Stufen 1 und 3 wird nach Abschluss des Trainings automatisch ein Rendervorgang ausgelöst. Um explizit auf einem trainierten Prüfpunkt zu rendern, führen Sie Folgendes aus
source render.sh
Diese Codebasis basiert auf GauHuman. Die SDS-Anleitungen stammen von DreamGaussian.
Schauen Sie sich auch unsere früheren Arbeiten zur okkludierten menschlichen Darstellung an! OccNeRF und Wild2Avatar.
Wenn Sie dieses Repo für Ihre Arbeit oder Forschung nützlich finden, geben Sie bitte Folgendes an:
@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 }
}