LT3SD: 3D场景生成最佳实践教程
1. 项目介绍
LT3SD(Latent Trees for 3D Scene Diffusion)是一个开源项目,旨在通过潜树表示和扩散模型实现大规模、高质量的3D场景生成。该项目利用潜树结构有效编码3D场景的低频几何和高频细节,通过粗到细的层次结构,实现了一个生成扩散过程,可以在不同的分辨率级别对场景的潜成分进行建模。
2. 项目快速启动
克隆仓库
首先,您需要克隆LT3SD的GitHub仓库:
git clone --recursive https://github.com/quan-meng/lt3sd.git
创建虚拟环境
接着,创建一个conda虚拟环境,并激活它:
conda create --name lt3sd python=3.10
conda activate lt3sd
安装依赖
然后,在虚拟环境中安装所需的依赖:
pip install -r requirements.txt
数据处理
在开始训练之前,需要准备数据集。您需要申请3D-FUTURE数据集,并解压相应的文件。之后,修改configs/dataset
中的输出目录,然后运行以下命令来导出场景网格和计算TUDF体素栅格:
python data/export_mesh.py export_houses --output_semantic_bbox --add_floor
cd third_parties/sdf-gen
mkdir build && cd build
cmake ..
make
cp -r bin/sdf_gen ../../../tools
python data/export_volume.py --voxel_size 0.022 --num_level 4 --with_bbox
请注意,一些场景中不正确的家具比例可能会导致内存溢出错误,这些场景会自动被跳过。
训练
分为两个阶段的训练:
第一阶段
python first_stage.py --slurm.slurm_job_name 'train_1st_stage' --slurm.gpus_per_node 1 --slurm.slurm_constraint '[rtx_a6000]' --slurm.nodes 2 --levels 'tudf_0p088_0p176' 'tudf_0p022_0p088'
确保在configs/opt
中指定训练日志路径。
第二阶段
python second_stage.py --slurm.slurm_job_name 'train_2nd_stage' --slurm.gpus_per_node 1 --slurm.slurm_constraint '[rtx_a6000]' --slurm.nodes 2 --first_stage_dir <FIRST-STAGE-DIR> --levels 'tudf_0p088_0p176' 'tudf_0p022_0p088' --batch_size 8 --model.chunk_shape 32 16 32 --model.start_level 'tudf_0p088_0p176' model.first-stage-config:ae
将<FIRST-STAGE-DIR>
替换为第一阶段日志目录。
3. 应用案例和最佳实践
- 数据预处理:确保在训练之前对数据集进行了正确的预处理,包括网格导出和体素栅格计算。
- 训练细节:在训练过程中,注意GPU内存的使用,避免内存溢出。适当调整批次大小以适应不同的硬件配置。
- 模型评估:定期评估模型性能,使用验证集来监控模型的质量和发散情况。
4. 典型生态项目
LT3SD项目基于以下开源项目构建:
- LDMs:用于3D场景生成的先潜扩散模型。
- MultiDiffusion:多尺度扩散模型。
- SDFusion:基于体素栅格的3D场景融合技术。
通过这些项目的结合,LT3SD实现了高效的3D场景生成。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考