【新智元导读】Stability AI推出3D重建方法:2D图像秒变3D,还可以交互式实时编辑。新方法的原理、代码、权重、数据全公开,而且许可证宽松,可以商用。新方法采用点扩展模型生成稀疏点云,之后通过Transformer主干网络,同时处理生成的点云数据和输入图像生成网格。以后,人人都能轻松上手3D模型设计。
近日,Stability AI发布消息,公开3D重建新方法SPAR3D的设计原理、代码、模型权重等。
![](http://mmbiz.qpic.cn/sz_mmbiz_png/UicQ7HgWiaUb20JiafDbfYoRsicn6RxAneOG2Gy0m4usc26a4L5AHZVQibgjNdnOohH7uhxTfjA4ib7YCm44Ik43Za4Q/640?wx_fmt=png&from=appmsg)
SPAR3D可在一秒内从单张图像生成3D物体的完整结构并且可以实时编辑。- 新方法SPAR3D实现了实时编辑,在不到一秒内可从单图完成3D对象的结构生成。
- SPAR3D将点云采样与网格生成技术相结合,可以完全的控制3D对象。
- 第一阶段主要依赖扩散模型生成稀疏点云数据,第二阶段主要靠Transformer生成网格。
- 用实验证明了,新方法主要依赖输入图像重建正面,依赖点云生成背面。
- 基准测试,比SPAR3D快的没它好,比它好的没它快。
- 使用Stability AI Community License,可以免费商用。
![](http://mmbiz.qpic.cn/sz_mmbiz_png/UicQ7HgWiaUb20JiafDbfYoRsicn6RxAneOGUlBJF74xFLfccSF7e0rBUWen2V9R30y3SALbPwFuJI4XD8BDAyP4Rg/640?wx_fmt=png&from=appmsg)
论文链接:https://arxiv.org/pdf/2501.04689项目链接:https://spar3d.github.io/整个过程分为两个阶段:
图1:SPAR3D双阶段架构图
双阶段架构
新方法结合了基于回归建模的精确性与生成技术的灵活性,实现了精确的重建和全面的控制。
新方法是「既要也要」:既要享受扩散模型分布学习的好处,又要避免输出保真度低和计算效率低的问题。
第一阶段使用扩散模型生成稀疏点云。然后是网格划分阶段,将点云转化为高度精细的网格。
主要想法是将不确定性建模集中到第一阶段,在这一阶段,点云的低分辨率允许快速迭代采样。
随后的网格划分阶段,利用局部图像特征将点云转换为高输出保真度的详细网格。
利用点云降低网格划分的不确定性,进一步促进了反渲染的无监督学习,从而减少了纹理中的烘托照明。
关键设计
关键的设计选择是使用点云来连接两个阶段。
为确保快速重构,中间表示只有足够轻量级才能高效完成生成任务。但是,它也要为网格划分阶段提供足够的指导。
这是因为点云可能是计算效率最高的三维表示方法,因为所有信息比特都被用来表示曲面。
此外,缺乏连通性通常被认为是点云的缺点。现在却变成了两阶段方法进行编辑的优势。
当背面与用户预期不一致时,可以轻松地对低分辨率点云进行局部编辑,而不必担心拓扑结构(见下图)。
图2:局部编辑
将编辑后的点云送入网格划分阶段,可生成更符合用户要求的网格。比如在上图中,通过在点云中修改了人物鼻子长度,之后输出的网格后人物鼻子也变长了。
在点采样阶段,点扩散模型会根据输入图像学习点云的条件分布。
由于点云的分辨率较低,这一阶段的计算效率较高。
之后的网格划分阶段将采样点云转换为与可见表面对齐的高精细网格。
点采样的不确定性降低,有利于了在网格划分阶段以无监督方式学习材质和光照。
最后,使用稀疏点云作为中间表示,SPAR3D可以实现人工编辑。
此阶段包括:点扩散框架、去噪器设计和反照率点云。
点扩散框架
该框架基于去噪扩散概率模型。其中包括两个过程:
1)前向过程,在原始点云中添加噪声。
2)后向过程,去噪器学习如何去除噪音。
在推理(inference)阶段,使用去噪扩散隐式模型(Denoising diffusion implicit models,DDIM)生成点云样本,并使用无分类器扩散指导(Classifier-free diffusion guidance,CFDG)改进抽样的保真度。
![](http://mmbiz.qpic.cn/sz_mmbiz_png/UicQ7HgWiaUb20JiafDbfYoRsicn6RxAneOGQxV9U7rySibmmHibDzsaktNCQT26dWibaaJs6M9Aa3xxndHgfaV6sHIfQ/640?wx_fmt=png&from=appmsg)
去噪器设计
使用与Point-E类似的Transformer去噪器,将噪声点云线性映射到一组点token中。
使用DINOv2将输入图像编码为条件token。
然后将条件和点token串联起来,作为Transformer的输入,用来预测每个点上添加的噪声。
反照率点云
在网格划分阶段,新方法同时估算几何体、材质和光照。
然而,这种分解本身就很模糊,因为相同的输入图像可以被多种光照和反照率组合解释。
如果只在网格划分阶段学习,非常难这种高度不确定的分解。
因此,在点采样阶段,通过扩散模型直接生成反照率点云,减少了不确定性。
将反照率点云采样输入到后续的网格生成阶段,大大降低了反渲染的不确定性,并使分解学习稳定了下来。
网格模型的主干是一个大型三平面Transformer,它能根据图像和点云条件预测三平面特征。
在训练过程中,会将几何图形和材质输入可微分渲染器,以便应用渲染损失来监督新模型。
三平面Transformer
新方法的三平面Transformer由三个子模块组成:点云编码器、图像编码器和Transformer主干网络。Transformer编码器将点云编码为一组点token。由于点云的分辨率较低,每个点都可以直接映射为一个token。新模型的图像编码器是DINOv2,它可以生成局部图像嵌入。
三平面Transformer采用了与PointInfinity和SF3D相似的设计。
这种设计可以生成384×384高分辨率的三平面图。
表面估计
为了估计几何形状,使用浅层MLP对三平面进行查询,以生成密度值。
使用可变行进四面体(Deep marching tetrahedra,DMTet)将隐式密度场转换为显式曲面。
此外,还使用两个MLP头来预测点偏移和表面法线以及密度。
这两个属性减少了行进四面体所带来的假象,使局部表面更加平滑。
材质和光照度估算
反向渲染,与几何图形一起联合估计材质(反照率、金属和粗糙度)和光照。
利用RENI++基于学习的光照先验建立了光照估计器。
RENI++最初是一个用于HDR照明生成的无条件生成模型,因此需要学习编码器,将三平面特征映射到RENI++的潜空间中。
这样,就能估算出输入图像中的环境光照度。
反照率是通过与几何类似的三平面来估算的,其中浅层MLP可预测每个三维位置的反照率值。
对于金属和粗糙度,采用SF3D,并通过贝塔先验学习以概率方法进行估计。
并用AlphaCLIP代替SF3D的CLIP编码器,利用前景物体遮罩来缓解这一问题。
可微渲染
新方法实现了一个可微渲染器(renderer),它能根据预测的环境贴图、PB材质和几何体表面渲染图像(见图3)。
图3:可微分着色器
作者向可微网格光栅器(rasterizer)添加了可微着色器(shader)。由于使用RENI++重构环境贴图,因此需要明确整合传入的辐照度。在此,使用了蒙特卡罗积分法。
由于在训练过程中样本数较少,采用了平衡启发式的多重重要度采样(Multiple Importance Sampling,MIS),以减少整合方差。
此外,为了更好地模拟之前工作中通常忽略的自遮挡(self-occlusion)现象,利用可见度测试,更好地模拟了阴影。
作者从实时图形学中汲取灵感,将可见度测试建模为一种屏幕空间方法。图4是该测试的示意图。
图4:阴影建模
具体来说沿着MIS提出的所有采样方向,在6个步骤内进行短距离(0.25)的光线步进,并将位置投影回图像空间。如果当前光线的深度比深度图中采样到的值更远,则该光线会被标记为阴影光线。
损失函数
新模型的主要损失函数是渲染损失,它用于比较来自新视角的渲染结果与真实图像(GT)。
具体来说,渲染损失是以下几项的线性组合:1)渲染图像与GT图像之间的L2距离,2)通过LPIPS测量的渲染图像与GT图像之间的感知距离,3)渲染的透明度与GT前景遮罩(mask)之间的L2距离。
除了渲染损失外,还遵循SF3D并应用网格与着色正则化,分别对表面光滑度和逆向渲染进行正则化。
交互式编辑
两阶段设计的一个独特优势是,它自然支持对生成的网格中的不可见区域进行交互式编辑。
在大多数情况下,可见表面由输入图像决定,并保持高度精确,而未知表面主要基于采样点云,可能与用户意图不一致。
在这种情况下,可以通过改变点云来编辑网格的未知表面。
如果只考虑编辑,点云可能是最灵活的三维表示方法之一,因为没有拓扑约束。
由于点云分辨率较低,编辑点云非常高效和直观。
用户可以轻松删除、复制、拉伸或重新着色点云中的点。
高效网格模型能够在0.3秒内生成调整后的网格,因此这一过程具有相当高的交互性。
这部分包含了定量比较、定性结果、编辑效果和实验分析。文中也讨论了消融实验。
定量比较
在GSO和Omniobject3D数据集上定量比较了SPAR3D与其他基准方法。
如表1和表2所示,SPAR3D在这两个数据集的大多数指标上显著优于所有其他回归或生成基准方法。