要获得更多视觉效果,请查看我们的项目页面。
详情请参阅我们的论文。
请克隆我们的环境并安装必要的依赖项:
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 和稳定扩散来分割和修复完整人体的二进制掩模。要在 OcMotion 序列上运行阶段 0,请取消注释相应的SUBJECT
变量并
source run_oc_stage0.sh
分段的二进制掩码将保存在./oc_genertaions/$SUBJECT/gen_masks/
目录中。
运行阶段 1 以启动优化阶段。要在 OcMotion 序列上运行阶段 1,请取消注释相应的SUBJECT
变量并
source run_oc_stage1.sh
检查点和渲染将保存在./output/$SUBJECT/
中。
使用优化的模型,运行第 2 阶段以启动上下文修复。要在 OcMotion 序列上运行阶段 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 }
}