GaussianDreamer进阶技巧:使用自定义数据集训练与模型微调
GaussianDreamer进阶技巧:使用自定义数据集训练与模型微调
【免费下载链接】GaussianDreamer[CVPR 2024] GaussianDreamer: Fast Generation from Text to 3D Gaussians by Bridging 2D and 3D Diffusion Models项目地址: https://gitcode.com/gh_mirrors/ga/GaussianDreamer
GaussianDreamer作为CVPR 2024的创新成果,是一款基于2D和3D扩散模型桥接技术的快速文本到3D高斯生成工具。本指南将详细介绍如何使用自定义数据集进行训练和模型微调,帮助你充分发挥GaussianDreamer的强大功能,创建高质量的3D内容。
准备工作:环境搭建与项目克隆
在开始自定义训练之前,首先需要确保你的环境已正确配置并克隆项目代码库。
克隆项目仓库
git clone https://gitcode.com/gh_mirrors/ga/GaussianDreamer cd GaussianDreamer安装依赖项目提供了环境配置文件,你可以通过以下命令创建并激活虚拟环境:
conda env create -f gaussiansplatting/environment.yml conda activate gaussiandreamer
自定义数据集准备:格式与组织
GaussianDreamer支持多种类型的自定义数据输入,正确组织数据集是成功训练的关键一步。
数据集格式要求
- 图像数据:支持常见格式如PNG、JPG,分辨率建议不低于512x512。项目示例数据可参考load/images/目录下的文件,如firekeeper.jpg(1080x1133)。
- 深度图:可选,命名格式为
<image_name>_depth.png,如load/images/firekeeper_depth.png。 - 法线图:可选,命名格式为
<image_name>_normal.png,如load/images/firekeeper_normal.png。
数据集目录结构
推荐的数据集组织方式如下:
custom_data/ ├── images/ │ ├── image1.png │ ├── image1_depth.png │ ├── image1_normal.png │ ├── image2.png │ └── ... └── prompt_library.json # 可选,包含图像对应的文本描述配置文件修改:关键参数详解
GaussianDreamer的训练参数主要通过YAML配置文件进行设置,位于configs/gaussiandreamer-sd.yaml。以下是自定义训练中需要重点调整的参数:
数据相关配置
data_type: "random-camera-datamodule" # 数据加载类型 data: load_type: ${system.load_type} # 加载类型,0: 从形状加载,1: 从SMPL模型加载 batch_size: 4 # 批次大小,根据GPU内存调整 height: 1024 # 输入图像高度 width: 1024 # 输入图像宽度 eval_camera_distance: 4.0 # 评估相机距离 camera_distance_range: [1.5, 4.0] # 相机距离范围系统与模型配置
system_type: "gaussiandreamer-system" # 系统类型 system: load_type: 0 # 加载类型,0: 从形状加载,1: 从SMPL模型加载 load_path: "./load/shapes/stand.obj" # 加载路径,当load_type=1时使用 radius: ${data.eval_camera_distance} # 半径 sh_degree: 0 # 球谐函数阶数,影响细节表现 prompt_processor: pretrained_model_name_or_path: "stabilityai/stable-diffusion-2-1-base" # 预训练模型路径 prompt: "your custom prompt here" # 自定义提示词 negative_prompt: "ugly, bad anatomy, blurry..." # 负面提示词训练参数配置
trainer: max_steps: 1200 # 最大训练步数 log_every_n_steps: 1 # 日志记录间隔 val_check_interval: 100 # 验证间隔 precision: 16-mixed # 精度,16-mixed可节省显存 loss: lambda_sds: 1. # SDS损失权重 lambda_sparsity: 1. # 稀疏性损失权重 lambda_opaque: 0.0 # 不透明度损失权重 optimizer: name: Adam # 优化器 args: lr: 0.001 # 学习率 betas: [0.9, 0.99] # Beta参数模型训练:从启动到监控
完成数据集准备和配置文件修改后,即可启动训练过程。
启动训练命令
python launch.py --config configs/gaussiandreamer-sd.yaml训练过程监控
GaussianDreamer提供了多种监控训练进度的方式:
- 日志输出:训练过程中会实时打印损失值等信息。
- 进度条:默认启用进度条,显示当前步数和预计剩余时间。
- 验证结果:每隔
val_check_interval步会保存验证结果到outputs/目录。
训练过程中,你可以观察到3D高斯模型从初始状态逐步优化的过程。下图展示了一个典型的训练时间对比,GaussianDreamer能够在短时间内生成高质量的3D模型:
GaussianDreamer训练时间对比,展示了从初始化到14分钟的模型进化过程
模型微调:提升特定场景表现
微调是优化模型在特定数据集上表现的关键步骤。以下是一些有效的微调策略:
调整学习率
对于微调,建议使用较小的学习率,如将optimizer.args.lr从0.001调整为0.0001,以避免过拟合。
增加训练步数
如果自定义数据集较大或复杂度较高,可以适当增加trainer.max_steps,如从1200增加到2000。
调整损失权重
根据数据集特点调整损失权重,例如:
- 若生成结果细节不足,可增加
lambda_sparsity - 若模型过度拟合,可减小
lambda_sds
优化提示词
精心设计的提示词对生成质量至关重要。你可以参考load/prompt_library.json创建适合自己数据集的提示词库。
结果评估:质量对比与优化
训练完成后,需要对生成结果进行评估,以确定是否需要进一步优化。
结果对比
GaussianDreamer提供了可视化工具,可以对比不同训练阶段的结果。以下是使用默认参数(左图)和优化参数(右图)训练得到的结果对比:
优化参数训练结果,细节更清晰,纹理更丰富
默认参数训练结果,存在模糊和细节丢失
常见问题与解决方案
- 结果模糊:增加
sh_degree,提高球谐函数阶数;或增加训练步数。 - 过拟合:减小学习率,增加数据多样性,或添加正则化项。
- 训练时间过长:降低
height和width,或减小batch_size。
高级技巧:加速训练与优化显存
对于大规模数据集或资源有限的情况,以下技巧可以帮助你更高效地进行训练:
使用混合精度训练
配置文件中已默认启用混合精度训练(precision: 16-mixed),这可以在不损失太多精度的情况下显著减少显存占用。
数据预处理
- 对图像进行下采样,如将1024x1024降为512x512。
- 使用数据增强,如随机旋转、裁剪,增加数据多样性。
分布式训练
如果有多个GPU,可以通过以下命令启动分布式训练:
torchrun --nproc_per_node=2 launch.py --config configs/gaussiandreamer-sd.yaml总结:打造专属3D模型
通过本指南,你已经了解了如何使用自定义数据集训练和微调GaussianDreamer模型。从数据集准备、配置文件修改到训练监控和结果优化,每一步都至关重要。随着实践的深入,你将能够根据自己的需求调整参数,生成高质量的3D高斯模型。
GaussianDreamer的强大之处在于其快速生成能力,即使是复杂的3D模型也能在短时间内完成训练。例如,下面的3D雕塑模型仅用7分钟就完成了训练:
GaussianDreamer仅用7分钟完成的3D雕塑模型训练过程
现在,是时候动手尝试使用自己的数据集了!通过不断调整和优化,你将能够充分发挥GaussianDreamer的潜力,创造出令人惊艳的3D内容。
【免费下载链接】GaussianDreamer[CVPR 2024] GaussianDreamer: Fast Generation from Text to 3D Gaussians by Bridging 2D and 3D Diffusion Models项目地址: https://gitcode.com/gh_mirrors/ga/GaussianDreamer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
