来自张标大佬的文章,将三维形状表示成向量集合,然后使用扩散模型实现多种条件控制生成
这种表示是在全局隐向量,规则隐向量和不规则隐向量的表示的基础上发展而来,利用到了径向基函数,交叉注意力,自注意力等设计了几种基于transformer的处理方式。对于条件生成任务,采用两阶段的训练策略,第一阶段是自动编码器(变分自动编码器),将三维形状编码到潜在空间中。第二阶段是在学习到的潜在空间中训练一个扩散模型。
一个合适的学习到的神经场表示,必须在压缩和重建质量之间提供一个良好的权衡。这种设计通常需要三个组成部分:用于存储潜在信息的空间数据结构、空间插值方法和神经网络架构。文献中提出的备选方案有多种,如图2所示。早期的方法使用单个全局隐向量结合MLP网络。这个概念简单但通常很难重建高质量的形状。通过使用latent grid 3D规则网格,结合三线性插值和MLP,可以获得更好的形状细节。然而,这样的表示对于生成式模型来说太大了,只能使用极低分辨率的(例如, 8 × 8 × 8)的网格。通过引入稀疏性,latents排列在不规则的网格中。虽然在很大程度上减少了潜在的尺寸,但在3DShape2VecSet的设计中,我们仍有很大的改进空间。
受transformer中交叉注意力的启发,使用固定大小的隐向量集合作为形状的隐向量表示。我们认为有两个主要原因促成了表征的成功。首先,该表示非常适合与基于transformer的网络使用。由于基于transformer的网络往往优于当前的备选方案,因此我们可以更好地从这种网络架构中受益。与仅使用MLPs处理潜在信息不同,我们使用了线性层和交叉注意力。其次,该表征不再使用明确设计的位置特征,而仅赋予网络以其认为合适的任何形式编码位置信息的选择权,这符合我们的设计原则,即学习到的表示优于手工设计的表示。所提出的潜在表示见图2e )。
归纳起来,作者的贡献如下:( 1 )提出了一种新的三维形状表示方法。任何形状都可以用固定长度的隐层数组来表示,并使用交叉注意力和线性层来处理,以产生一个神经场。( 2 )我们提出了一种新的网络架构来处理所提出的表示中的形状,包括一个构建块来使用交叉注意力从大的点云中聚合信息。( 3 )我们改进了3D形状自编码的研究现状,以获得包含局部细节的高保真重建。( 4 )提出了一种latent set diffusion。我们改进了FID、KID、FPD和KPD在3D形状生成方面的研究现状。( 5 )展示了类别条件生成、文本条件生成、点云补全和图像条件生成的3D形状扩散。
1、形状表示
径向基函数
一个连续函数可以用3D中的一组加权点用RBFs表示:
这里 是径向基函数radial basis function (RBF) 通常表示两个输入之间的相似性(或相异性),
给定xi的真值占有率occupancies,λi的值可以通过求解一个线性方程组得到。这样,我们可以将连续函数O ( · )表示为M个点的集合以及它们对应的权重。
然而,为了保留三维形状的细节,往往需要非常多的点数(如文献[ Carr et al.2001 ]中M = 80000)。这种表示并没有从表示学习的最新进展中获益,也无法与更紧凑的学习表示竞争。因此,我们想对表征进行修改,使其变成一个神经场。
神经场的表示
有两种解决方案:一种是将每个形状表示为一个单独的神经网络(使得固定大小网络的网络权值成为形状的表示),并将一个扩散过程训练为超网络。(将形状表示成网络,使用超网络表示不同形状)第二种方法是为所有形状建立一个共享的编码器-解码器网络,并将每个形状表示为编码器计算的一个潜在形状(将形状表示成不同的latents)。第二种方法表示更紧凑,因为它是由数据集中的所有形状共同学习的,而网络权重本身并不计算到潜在的表示。这样的神经场以坐标x和C维隐形f的元组作为输入,输出占有率。
因此很多方法来表示f,如图2。第一种方法是使用单个全局隐变量f,但是一个主要的限制是编码形状细节的能力。后续的一些工作研究了将传统的数据结构如规则网格与神经场概念相结合的坐标依赖隐层。将隐向量排列成空间数据结构,然后插值(三线性)得到坐标依赖的隐向量fx。最近的一项工作3DILG也是张标大神的cvpr文章 [ Zhang et al . 2022]提出了一种3D形状的稀疏表示方法,使用在点位置xi的不规则网格中排列的隐元fi。然后通过核回归估计最终的坐标依赖潜变量fx。
其中 是一个归一化因子,因此,三维形状的表示可以写为
,在此之后一个MLP 应用于将近似特征 投影到占有率,
提出的表示方法
我们初步探索了基于不规则和规则网格irregular and regular grids以及三平面tri-planes、频率组成frequency compositions,和其他分解表示的三维形状表示的多种变体。最终,我们无法对现有的不规则网格进行改进。然而,我们能够实现一个显著的改善与以下的策略。我们的目标是保持不规则网格和插值的结构,但是没有显式地表示实际的空间位置。我们让网络对空间信息进行编码。我们保持了插值的结构,但减少了显式的点坐标,并从公式中集成了交叉注意力。他的结果是下面的可学习函数逼近器,
最后通过一个fc层得到占有率
与3DILG和其他所有基于坐标隐变量的方法相比,我们降低了对坐标集合的依赖,新的表示只包含一组隐变量, 另一个观点是将其看作查询点x和一组潜变量之间的交叉注意力。
2、形状表示方法
该结构由三个部分组成:3D形状编码器、KL正则化模块和3D形状解码器。
形状编码
为了将三维形状表示为一组向量,首先的挑战是如果将较多的点云信息聚合到一个较小的向量集合中,解决这个问题的一个流行的方法是将大的点云划分为更小的块集合,并在每个块中学习一个潜在向量。虽然这在许多网络中是一个非常有研究和标准的组件,但我们发现了一种更成功的方法来从大的点云中聚合特征,该方法与transformer架构更好地兼容。我们考虑了两种选择。一种是定义一个查询集合,这个集合是可以学习的,另一种是使用点云自身,首先使用最远点采样得到更小的点击,然后进行位置嵌入通过交叉注意力得到position。如图4所示。数量M影响重构性能:M越大,重构效果越好。但由于transformer架构的原因,M对训练时间影响较大,不宜过大。在我们的最终模型中,将隐层节点数M设置为512,通道数C设置为512,以在重建质量和训练时间之间进行权衡。
正则化
我们将VAE的设计思想应用于我们的3D形状表示,并利用KL散度对特征进行正则化。需要注意的是,KL正则化是可选的,只对第二阶段的扩散模型训练是必要的。如果我们只想从点云中重建表面,就不需要KL正则化。
首先通过两个网络分支分别对均值和方差进行线性投影:
其中 and 是两个线性映射层,我们使用了不同大小的输出通道C0,其中C0<<C,这样的压缩使得我们可以在更小的潜在总大小M上训练扩散模型 . 这样可以写成VAE的形式
这里,KL正则化可以写作
在实际应用中,我们将KL损失的权重设置为0.001,并实验了不同C0值的性能。我们推荐的设置是C0 = 32
形状解码
为了增加网络的表达能力,我们在两部分之间加入了一个潜在学习网络(latent learning network)。因为我们的隐层是一组向量,所以在这里使用transformer网络是很自然的。因此,这里提出的网络是一系列自注意块,形状编码后的latents 输入到self-att块中,对于一个查询x,使用交叉注意力获得相对应的latent,然后通过全连接层获得占用率。
损失
使用交叉熵损失训练,我们在分辨率为的网格中采样查询点。利用Marching Cubes对最终曲面进行重构
3、形状生成
我们提出的扩散模型结合了潜在扩散(压缩潜在空间的思想)、EDM (大部分训练细节),和我们的形状表示设计(该架构基于注意力和自注意力而不是卷积)。 扩散模型在kl正则化后的潜在空间训练
该网络可以很容易地通过自注意力transformer进行建模。每层由两个注意力块组成。第一个自注意力块是对潜在集进行专注学习的自我关注。第二个注入条件信息C (图7 ( b )) )。对于类别等简单信息,C是一个可学习的嵌入向量(例如,对于55个类别,有55个不同的嵌入向量)。对于单视角图像,我们使用ResNet - 18作为上下文编码器来提取一个全局特征向量作为条件C。对于文本条件,我们使用BERT来学习一个全局特征向量作为C。对于部分点云,我们使用本文的形状编码方法得到一组潜在嵌入作为C。在无条件生成的情况下,交叉注意力退化为自注意力(图7 ( a )) )。
实验设置
数据集
我们使用ShapeNet - v2数据集作为基准,包含55类人造物体。我们使用[ Zhang et al . 2022]中的training / val拆分。我们像在[Mescheder et al 2019]中一样对形状进行预处理。每个形状首先转换为水密网格,然后归一化到其包围盒,从中进一步采样尺寸为50,000的稠密表面点云。为了学习神经场,我们在三维空间中随机采样50,000个有占位的点,在近表面区域随机采样50,000个有占位的点。对于单视点物体重建,我们使用3D - R2N2 提供的2D渲染数据集,其中每个形状从24个随机视点渲染成大小为224 × 224的RGB图像。对于文本驱动的形状生成,我们使用Shape Glot的文本提示。对于形状补全训练的数据预处理,我们通过采样点云面片来创建部分点云。
形状自动编码结果
对于形状自编码器,我们使用大小为2048的点云作为输入。在每次迭代中,我们分别从格点中抽取1024个查询点和从近表面区域中抽取1024个查询点进行占有率预测。形状自编码器在8 A100上训练,对于T = 1,600个epoch,批处理大小为512。学习速率在前t0 = 80个epochs线性增加到lrmax = 5e-5,然后使用余弦衰减规则逐渐减小,until reaching the minimum value of 1𝑒 − 6. 扩散模型在4 A100上进行训练,批次大小为256,T = 8000epochs.。在前t0 = 800个历元中,学习速率线性增加到lrmax = 1e-4,然后使用上述衰减规律逐渐减小,直到达到1e - 6。我们对EDM [ Karras et al 2022]的超参数使用默认设置。在采样过程中,我们仅通过18个去噪步骤就得到了最终的潜在集。
可以说相当炸裂,平均iou达到96.5%效果相当好,他这里说训练了1600轮,不知道怎么训练的,单个椅子类别70多G的数据,8张3090 24G显存需要1天训练,全部数据有500G,不知道要训练多久。可能要一周。而且使用给出的数据和代码在单类椅子上训练的iou只有91%,暂不明确问题出来哪里,可能是单个类别导致的?
使用下采样作为latents的方法都优于可学习查询。因此,我们在后面的实验中使用了下采样点云,
latents数量M是网络中使用的潜在向量的数量。直观上,M越大,重建效果越好。我们在表中给出了M的结果。4 .因此,在我们的所有实验中,M都设置为512。对于M较大的情况,计算成本更高。
此外,kl正则化将确定性形状编码变为变分自编码器。引入的超参数为C0。较小的C0导致较高的压缩率。C0的选择在表5中给出。显然,更大的C0给出了更好的结果。C0 = 8,16,32,64的重建结果非常接近。然而,在第二阶段,它们之间存在显著差异,因为更大的潜在规模会使扩散模型的训练更加困难。它表明在KL块中大大增加压缩并不会过多地降低重建性能。我们还可以看到,通过减少C0来压缩KL块比使用更少的隐向量M来压缩要好得多。
无条件形状生成
我们用表6中提出的度量来评估无条件形状生成任务我们还将我们的方法与[ Zhang et al . 2022]中提出的基线方法进行了比较。该方法称为Grid - 83,因为隐层网格大小为83,与Auto SDF [ Mittal et al 2022]中完全相同。表中还给出了不同C0的结果。当C0 = 32时,我们的结果在所有度量中都是最好的。当C0 = 64时,结果变差。这也符合我们的猜想,即更大的潜在规模使得训练更加困难。
类别条件生成
文本驱动的条件生成
由于该模型是一个概率模型,我们可以在给定文本提示的情况下对形状进行采样。结果非常令人鼓舞,它们构成了使用扩散模型的文本条件3D形状生成的第一个演示。据我们所知,在提交这项工作的时候,还没有公开发表的竞争方法。
形状补全
我们还通过使用部分点云作为条件输入扩展了我们的扩散模型用于概率形状补全。与ShapeFormer [ Yan et al . 2022]的对比结果如图12所示。可见,我们的潜在集扩散可以预测更准确的完工,我们也有能力实现更多样的世代。
图像条件生成
生成的新颖度
3、limitation
虽然我们的方法在各种任务上展示了令人信服的结果,但我们的设计选择也有我们想要讨论的缺点。例如,我们需要一个两阶段的训练策略。虽然这导致在生成质量方面的性能提高,但训练第一阶段比依赖手工设计的特征如小波[ Hui et al . 2022]更耗时。此外,如果考虑的形状数据发生变化,第一阶段可能需要重新训练,而对于第二阶段- -我们的扩散架构的核心- -训练时间也相对较高。总的来说,我们认为未来的研究途径有很大的潜力来加快培训,特别是在扩散模型的背景下。