นี่คือการดำเนินการอย่างเป็นทางการของรายงาน NeurIPS 2023: การสังเคราะห์ฉากที่ขับเคลื่อนด้วยภาษาโดยใช้โมเดลการแพร่กระจายแบบหลายเงื่อนไข
เราขอแนะนำอย่างยิ่งให้คุณสร้างสภาพแวดล้อม Conda เพื่อจัดการแพ็คเกจ Python ทั้งหมดที่จำเป็นได้ดียิ่งขึ้น
conda create -n lsdm python=3.8
conda activate lsdm
หลังจากที่คุณสร้างสภาพแวดล้อมแล้ว โปรดติดตั้ง pytorch ด้วย CUDA คุณสามารถทำได้ด้วยการวิ่ง
conda install pytorch pytorch-cuda=11.6 -c pytorch -c nvidia
การขึ้นต่อกันอื่นๆ ที่จำเป็นสำหรับงานนี้แสดงอยู่ใน Requirements.txt เราขอแนะนำคำสั่งต่อไปนี้เพื่อติดตั้งการอ้างอิง:
pip install git+https://github.com/openai/CLIP.git
pip install transformers
conda install -c pytorch3d -c conda-forge pytorch3d=0.7.3
pip install -r requirements.txt
PRO-teXt เป็นส่วนขยายของ PROXD โปรดเยี่ยมชมเว็บไซต์เพื่อรับชุดข้อมูล PROXD ก่อน เราจัดเตรียมส่วนขยายของ PRO-teXt ไว้ตามลิงค์ คุณต้องได้รับ HUMANISE ผ่านหน้าโครงการด้วย ลำดับชั้นของชุดข้อมูลควรเป็นไปตามเทมเพลตนี้:
|- data/
|- protext
|- mesh_ds
|- objs
|- proxd_test
|- proxd_test_edit
|- proxd_train
|- proxd_valid
|- scenes
|- supp
|- proxd_train
|- proxd_valid
จุดตรวจโมเดลทั้งหมดที่ใช้ในการวัดประสิทธิภาพในรายงานมีอยู่ที่ลิงก์นี้
สำหรับส่วนการแสดงภาพ เราใช้ชุดย่อยของชุดข้อมูล 3D-Future สามารถดาวน์โหลดชุดย่อยได้ที่ลิงค์โดยให้เครดิตผู้เขียน
หากต้องการฝึกพื้นฐาน ให้ใช้คำสั่งต่อไปนี้:
python -m run.train_ < baseline >
--train_data_dir data/protext/proxd_train
--valid_data_dir data/protext/proxd_valid
--fix_ori
--epochs 1000
--out_dir training
--experiment < baseline >
ตัวอย่างเช่น หากคุณต้องการฝึก LSDM ให้ใช้คำสั่งต่อไปนี้:
python -m run.train_sdm
--train_data_dir data/protext/proxd_train
--valid_data_dir data/protext/proxd_valid
--fix_ori
--epochs 1000
--out_dir training
--experiment sdm
หากต้องการทดสอบพื้นฐาน ให้ใช้คำสั่งต่อไปนี้:
python -m run.test_ < baseline > data/protext/proxd_test/
--load_model training/ < baseline > /model_ckpt/best_model_cfd.pt
--model_name < baseline >
--fix_ori --test_on_valid_set
--output_dir training/ < baseline > /output
ตัวอย่างเช่น คุณสามารถใช้:
python -m run.test_sdm data/protext/proxd_test/
--load_model training/sdm/model_ckpt/best_model_cfd.pt
--model_name sdm
--fix_ori
--test_on_valid_set
--output_dir training/sdm/output
เพื่อทดสอบจุดตรวจ LSDM โปรดทราบว่าคุณยังสามารถฝึกชุดข้อมูล HUMANISE ได้อีกด้วย เพียงแทนที่เส้นทางของ data/protext/proxd_train
ด้วย data/humanise/train
หากต้องการสร้างลำดับวิดีโอเช่นเดียวกับในรายงานของเรา คุณสามารถดำเนินการต่อได้โดยใช้ขั้นตอนต่อไปนี้:
python fit_custom_obj.py
--sequence_name < sequence_name >
--vertices_path data/supp/proxd_valid/vertices/ < sequence_name > _verts.npy
--contact_labels_path data/supp/proxd_valid/semantics/ < sequence_name > _cfs.npy
--output_dir fitting_results/ < baseline >
--label < num_label >
--file_name training/sdm/output/predictions/ < interaction_name > .npy
โดยที่ sequence_name
เป็นชื่อของ การเคลื่อนไหวของมนุษย์ และ interaction_name
เป็นชื่อของ human_pose โปรดทราบว่าเราตั้งชื่อท่าทางของมนุษย์ว่าใกล้เคียงกับการเคลื่อนไหวของมนุษย์มาก นอกจากนี้ num_label
ยังสามารถพบได้ใน fild mpcat40.tsv
ตัวอย่างเช่น คุณสามารถใช้คำสั่งต่อไปนี้:
python vis_fitting_results.py
--fitting_results_path fitting_results/ < baseline > / < sequence_name > /
--vertices_path data/supp/proxd_valid/vertices/ < sequence_name > _verts.npy
ตัวอย่างเช่น,
python vis_fitting_results.py
--fitting_results_path fitting_results/sdm/N0Sofa_00034_02/
--vertices_path data/supp/proxd_valid/vertices/N0Sofa_00034_02_verts.npy
สคริปต์ที่รันด้านบนจะบันทึกเฟรมที่แสดงผลใน fitting_results/N0Sofa_00034_02/rendering
โปรดทราบว่าคุณต้องมีหน้าจอเพื่อรันคำสั่งนี้ ในกรณีที่คุณกำลังทดสอบโปรเจ็กต์บนเซิร์ฟเวอร์ที่ไม่มีบริการแสดงผล คุณยังคงสามารถโหลดอ็อบเจ็กต์และเมชที่บันทึกไว้ และใช้วิธีการอื่นเพื่อแสดงภาพได้ หากต้องการรับ Human Mesh คุณยังสามารถรันคำสั่งด้านบนและรอจนกว่าโปรแกรมจะออกโดยอัตโนมัติ สคริปต์จะบันทึก Human Mesh ของลำดับการเคลื่อนไหวที่คุณระบุใน fitting_results/<sequence name>/human/mesh
ออบเจ็กต์ที่เหมาะสมที่สุดจะถูกจัดเก็บไว้ใน fitting_results/<sequence name>/fit_best_obj/<object category>/<object index>/<best_obj_id>/opt_best.obj
ตามที่กล่าวไว้ก่อนหน้านี้ คุณสามารถรับ <best_obj_id>
ใน fitting_results/<sequence name>/fit_best_obj/<object category>/<object index>/best_obj_id.json
ส่วนหนึ่งของโค้ดเบสของเราอิงจาก Ye et al. หากคุณพบว่างานนี้มีประโยชน์ โปรดพิจารณาการอ้างอิง:
@article{vuong2023language,
title={Language-driven Scene Synthesis using Multi-conditional Diffusion Model},
author={Vuong, An Dinh and Vu, Minh Nhat and Nguyen, Toan and Huang, Baoru and Nguyen, Dzung and Vo, Thieu and Nguyen, Anh},
journal={arXiv preprint arXiv:2310.15948},
year={2023}
}