Magic3D 采用 coarse-to-fine(由粗到细)的两阶段策略完成文本到3D内容的生成,第一阶段输出低分辨率的几何雏形,第二阶段在稀疏加速的神经渲染器上精修细节。两个阶段的参数配置直接决定了最终模型的质量与训练耗时,理解每个参数背后的作用机制,比机械地照搬默认值更重要。本文将拆解粗优化与细优化阶段的核心参数,并给出实际调参时的判断依据。

粗优化阶段的作用与核心参数
粗优化阶段使用 Instant-NGP 风格的神经场表示几何,配合低分辨率的扩散先验(通常是 64x64 分辨率的隐式扩散模型),目标是快速收敛出一个形状正确、结构完整的粗模型。这个阶段不追求细节,只追求“形体对”,因此所有参数都围绕快速迭代与稳定收敛来设计。
首先是分辨率参数。粗阶段的渲染分辨率一般设置为 64,对应的相机视场角(FOV)建议保持在 49.1 度左右,与扩散先验训练时的分布保持一致。如果视场角偏差过大,SDS 损失的梯度方向会出现系统性偏差,导致生成结果变形或出现多余的悬浮物。其次是迭代次数,粗阶段通常设置为 1500 到 3000 步,步数过少会导致形体不完整,过多则浪费时间,因为细节的打磨本来就是细阶段的工作。
学习率的设置同样重要。粗阶段几何表示的学习率一般取 0.01 到 0.05 的区间,密度调节参数(如 lambdas)用于控制点云密度的增长速度。下面的配置片段展示了典型的粗阶段参数组合:
# 粗优化阶段典型配置
train-coarse:
max-iter: 2000 # 粗阶段迭代次数
lambdas:
density: 1.0 # 密度正则权重,控制点云增长
sdf: 0.0
bg-lambda: 0.01
mesh-rgb-lambda: 0.0
guidance-scale: 100.0 # SDS损失的整体缩放
grad-text: False
lambda-sharpness: 0.0
其中 guidance-scale 控制 SDS 梯度回传的强度,取值过小会收敛缓慢,取值过大则容易产生过饱和的颜色与噪声纹理。实践建议是先固定其他参数,从默认值 100 开始,观察训练日志中的 SDS 损失曲线再做微调。此外,文本提示词的 CFG(classifier-free guidance)权重在粗阶段建议取 7.5 左右,这是 Stable Diffusion 的常用区间,保证语义引导强度适中。
细优化阶段:稀疏加速渲染下的精修参数
细优化阶段将粗阶段的输出转换为带符号距离场约束的网格表示,并使用 Magic3D 提出的稀疏加速神经渲染器进行高分辨率渲染(通常 512x512),同时换成零样本图像扩散先验来约束纹理细节。这个阶段的参数重点从“收敛速度”转向“细节质量”。
渲染分辨率的提升是细阶段的核心变化,从 64 提升到 512 带来了约 8 倍的线性分辨率增益,但得益于稀疏加速结构,内存与计算开销并没有线性爆炸。需要注意的是,细阶段应继承粗阶段的相机分布设置,避免两阶段视场角不一致引起的几何塌陷。迭代次数方面,细阶段通常需要 6000 到 10000 步,因为纹理细节的收敛明显慢于几何形体。
球谐函数(SH)阶数在这个阶段开始发挥作用。粗阶段可以用低阶 SH 甚至只用 RGB 直接预测颜色,细阶段则建议将 sh-degree 提升到 3 或 4,以表达视角相关的高光效果。不过 SH 阶数过高也可能带来高频噪声,需要配合正则项抑制。另一个关键参数是纹理平滑正则的权重:
# 细优化阶段典型配置
train-fine:
max-iter: 8000 # 细阶段迭代次数,明显高于粗阶段
train-res: 512 # 渲染分辨率提升到512
density: 0.2
lambdas:
mesh-rgb: 1.0 # 网格颜色损失权重
normal: 0.01 # 法向平滑正则
zero-rgb: 0.02
laplacian: 0.01 # 拉普拉斯几何平滑
guidance-scale: 20.0 # 相比粗阶段明显降低
可以看到 guidance-scale 从粗阶段的 100 降到 20 左右。原因在于细阶段的几何已经基本固定,过大的梯度强度会破坏已经成型的形体,只留下纹理层面的微调需求。法向与拉普拉斯正则则用于防止网格表面在精修过程中出现锯齿与破碎面片。
两阶段协同:常见问题与调参建议
参数调优中最常见的问题是两阶段衔接不当。典型表现是细阶段训练若干步后模型轮廓发生明显改变,甚至出现形体崩坏。排查思路是首先确认几何引导损失(如 mesh-rgb 或 depth 相关损失)是否开启,其次是检查两阶段的相机采样范围是否一致。如果粗阶段用了大范围随机相机而细阶段收窄了范围,模型会在看不见的区域出现退化。
第二个常见问题是纹理过饱和或细节模糊。过饱和通常与 guidance-scale 偏高、CFG 权重过大有关,可以优先降低细阶段的 guidance-scale,或者引入随机提示词增强(prompt augmentation)来缓解。细节模糊则多半是 SH 阶数不足或渲染分辨率没有真正生效,需要检查配置中 train-res 是否确实传递到了渲染管线。
最后是显存与速度的权衡。粗阶段可以放心使用较大的 batch 和较高的分辨率先验,而细阶段的稀疏渲染器虽然高效,512 分辨率下的显存占用依然可观。如果显存受限,可以考虑将细阶段分辨率降到 256,同时适当增加迭代步数补偿细节损失。总体而言,调参的优先级建议是:先保证粗阶段形体正确,再调细阶段的纹理与正则项,最后才去动两阶段共享的相机与提示词参数。这种顺序能最大限度避免在错误形体上浪费细阶段的训练时间。