หากต้องการผลลัพธ์ที่เป็นภาพเพิ่มเติม โปรดไปที่หน้าโครงการของเรา
สำหรับรายละเอียด โปรดดูเอกสารของเรา
โปรดโคลนสภาพแวดล้อมของเราและติดตั้งการขึ้นต่อกันที่จำเป็น:
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
เราจัดเตรียมโค้ดการฝึกอบรม/การเรนเดอร์สำหรับลำดับ 6 OcMotion ที่สุ่มตัวอย่างโดย Wild2Avatar หากคุณพบว่าลำดับที่ประมวลผลล่วงหน้ามีประโยชน์ โปรดพิจารณาอ้างอิง 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 ของ Canonical Space ที่มีประสิทธิภาพมากขึ้น OpenPose Canvas สำหรับท่า Canonical 2D จะได้รับการคำนวณล่วงหน้าและสามารถดาวน์โหลดได้ที่นี่ ใส่โฟลเดอร์ที่ดาวน์โหลดมาลงในโฟลเดอร์: ./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 "
เรียกใช้ Stage 0 (ระยะเริ่มต้น) เพื่อแบ่งส่วนและทาสีไบนารีมาสก์สำหรับมนุษย์โดยสมบูรณ์ด้วย SAM และ Stable Diffusion หากต้องการรัน Stage 0 บนลำดับ OcMotion ให้ยกเลิกหมายเหตุตัวแปร SUBJECT
ที่เกี่ยวข้องและ
source run_oc_stage0.sh
ไบนารีมาสก์ที่แบ่งเซ็กเมนต์จะถูกบันทึกไว้ในไดเร็กทอรี . ./oc_genertaions/$SUBJECT/gen_masks/
SUBJECT/gen_masks/
เรียกใช้ระยะที่ 1 เพื่อเริ่มระยะการปรับให้เหมาะสม หากต้องการรันสเตจ 1 บนลำดับ OcMotion ให้ยกเลิกหมายเหตุตัวแปร SUBJECT
ที่เกี่ยวข้อง และ
source run_oc_stage1.sh
จุดตรวจสอบพร้อมกับการเรนเดอร์จะถูกบันทึกไว้ใน ./output/$SUBJECT/
/
ด้วยโมเดลที่ปรับให้เหมาะสมแล้ว ให้รันขั้นที่ 2 เพื่อเริ่มการลงสีแบบไม่บริบท หากต้องการรันสเตจ 2 บนลำดับ OcMotion ให้ยกเลิกหมายเหตุตัวแปร SUBJECT
ที่เกี่ยวข้องและ
source run_oc_stage2.sh
รูปภาพ RGB ที่ทาสีจะถูกบันทึกไว้ในไดเร็กทอรี . ./oc_genertaions/$SUBJECT/incontext_inpainted/
SUBJECT/incontext_inpaint/
สุดท้ายนี้ ด้วยภาพ RGB ที่ลงสีและจุดตรวจสอบโมเดลที่ได้รับการปรับปรุงแล้ว ให้รันขั้นตอนที่ 3 เพื่อเริ่มขั้นตอนการปรับแต่ง หากต้องการรันสเตจ 3 บนลำดับ OcMotion ให้ยกเลิกหมายเหตุตัวแปร SUBJECT
ที่เกี่ยวข้องและ
source run_oc_stage1.sh
จุดตรวจสอบพร้อมกับการเรนเดอร์จะถูกบันทึกใน ./output/$SUBJECT/
/
ในขั้นตอนที่ 1 และ 3 กระบวนการเรนเดอร์จะถูกกระตุ้นโดยอัตโนมัติหลังจากการฝึกอบรมเสร็จสิ้น หากต้องการแสดงผลอย่างชัดเจนบนจุดตรวจที่ผ่านการฝึกอบรม ให้เรียกใช้
source render.sh
ฐานโค้ดนี้สร้างขึ้นจาก GauHuman คำแนะนำ SDS ยืมมาจาก DreamGaussian
ตรวจสอบผลงานก่อนหน้าของเราเกี่ยวกับการเรนเดอร์มนุษย์แบบ occluded! 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 }
}