要獲得更多視覺效果,請查看我們的專案頁面。
詳情請參閱我們的論文。
請克隆我們的環境並安裝必要的依賴項:
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 }
}