【3D视觉】基于零件库增强的形状重建最新方法

来源:投稿 作者:橡皮
编辑:学姐

[paper] https://arxiv.org/pdf/2303.01999.pdf

0.背景:

将3D形状紧凑地表示为基元的组合的能力在多个领域中具有应用。在计算机视觉中,将形状自动分解为多个部分的能力可以帮助机器感知物体的3D结构,这反过来又可以帮助自主代理计划操作这些物体。

在计算机图形学中,基元的组合可以用作压缩的几何表示,通过允许用户更改底层基元库来抽象、风格化或编辑3D形状。理想情况下,执行这种形状分解的系统应该能够在没有基本事实分解形式的监督的情况下进行,因为这样的数据很少在规模上可用。

过去在视觉和图形领域的研究已经研究了这种无监督的形状分解问题。

最初,研究人员寻求将3D形状分解为简单参数基元集的方法,生成干净的参数化几何体作为输出,并且基本体类型的选择允许用户对分解进行少量控制。然而,参数基元仅产生输入形状的粗略近似,这可能不是所有应用都希望的。

最近的工作研究了将形状无监督分解为任意形状的基元,其几何形状由神经网络确定。然而,这些基元的几何形状可能包含伪影(例如,凸起、斑点)。

1.主要贡献:

在本文中,我们提出了一种使用用户定义的零件库进行三维形状无监督分解的方法。从大型零件库中找到最能重建输入形状的零件子集是一个大规模的组合搜索问题。

为了使这个问题易于处理,我们通过训练零件自动编码器来表示连续流形上的零件库。零件库的这种连续表示允许我们共同优化重建输入形状的零件的身份和姿态。为了避免这种优化环境中的许多最坏局部最优,该算法周期性地使用其当前预测的部分集来分割输入形状;然后将这些片段重新编码到零件特征流形中,以产生最佳重构输入形状的零件的新估计。

使用PartNet数据集中的零件,通过使用它从点云重建形状来评估算法。与最近的 Neural Parts 无监督分解方法进行了比较,并表明算法在质量上产生了更理想的分解,也实现了更高的重建精度。展示了如何使用另一只猫的零件从一只猫身上重建形状(例如,用灯零件制作椅子)。这也适用于3D图形内容创建,通过使用模块化3D资产库中的零件重建目标形状来演示。

2.方法介绍:

系统以目标三维体积点云 T 和零件库 B 为输入,并从零件库中输出一组近似 T 的变换零件 P 。它首先预训练变分自动编码器(VAE),将所有零件投影到连续的潜在空间中。这使能够将组合零件检索问题转化为连续优化问题,该问题分三个阶段进行:①零件优化,②零件转换和③零件借用。 阶段①直接优化零件latent code e、平移 t 和旋转 r ,以重建目标形状。阶段②使用来自阶段①的优化零件来分割输入目标形状,并将它们重新投影回潜在空间。阶段③是一个可选阶段,它借鉴了其他重建良好的类似形状的良好零件分解。当优化收敛时,从零件库中检索实际零件。注意:下图显示了具有对称约束的示例,因此每个零件都有一个反射的副本。

3.1方法细节:Part VAE

为了将零件检索的组合搜索问题转化为连续优化问题,通过在输入库中的所有零件上训练变分自动编码器(VAE)来构建零件几何的连续潜在空间。零件网格首先通过使用512个点对其内部进行采样来转换为体积点云。

使用4层 PointNet 作为编码器网络、64维潜在空间和3层MLP解码器,该解码器产生具有512个点的点云。使用切角距离重建损失和标准KL发散潜在空间正则化损失的组合来训练VAE。一旦经过训练,编码器和解码器的权重对于所有后续过程都是固定的。

3.2方法细节:迭代零件优化

在给定部分潜在空间的情况下,系统试图优化一组部分P=Pii∈{1…k}的潜在码 e_i和姿态(t_i,r_i),使得潜在码在解码和姿态时重建目标形状。这种优化分三个阶段进行,以嵌套循环的形式组织。

阶段Ⅰ:零件优化

目标重建损失:\pounds _{recon}

为了近似输入形状,解码部分体积点云的集合

应该与目标形状T的体积点云相匹配。我们使用这两个体积点云之间的倒角距离来测量这种匹配:

零件重叠惩罚损失:\pounds _{overlap}

优化后的零件不仅应覆盖目标形状;它们也不应该彼此重叠。由于解码部分可能具有复杂的几何结构,因此为它们计算边界代理以进行可微碰撞检查将是不平凡且耗时的。因此,我们设计了一个基于体积点云表示的碰撞惩罚项。两个解码部分D_a 和  D_b之间的碰撞惩罚是通过对这些部分中的所有点之间的点对点成对距离求和来计算的。如果一对点pi∈Da,pj∈Db之间的距离||pi−pj||2低于阈值τ=0.1,则添加重叠惩罚作为τ−|| pi−pj ||2,否则惩罚为零。最后的重叠惩罚是所有点对的平均惩罚。

阶段Ⅱ:零件转换

第一阶段解决的优化问题是非凸的,具有许多局部极小值。特别是,它可能对零件潜在代码和姿态的不同初始化很敏感。这些局部极小值表现为目标形状的被任何部分覆盖的区域。该算法的第二阶段旨在帮助优化避开这种局部最优。

它通过将优化的部分Di从阶段I转移到目标周围以捕获目标形状中的更多区域来实现这一点。给定解码和摆出的零件{Di}(第2列),该算法基于每个点最靠近哪个部分(第4列)来分割目标点云(第1列)T。然后,它会丢弃一些非常靠近其指定部分的点(第5列),然后为每个线段只保留一个连接的分量——以距离任何其他线段最远的为准(第6列)。这些片段最终被重新编码到部分潜在空间中,以产生下一轮阶段I优化的输入(第7列显示了解码时这些部分的样子)。当整个优化过程收敛时,该过程的输出段将与原始段(最后一列)相同。紫色方框表示解码的部分点云;橙色框表示使用那些解码部分对目标点云进行分割。

阶段Ⅲ:零件借用

如果给系统一组目标形状T作为输入,这就有可能使用目标形状之间的相似性来进一步改进零件分解并摆脱局部最优。在该可选阶段中,系统识别当前未被很好地重建的所有目标形状T,并将它们的优化变量{(ei,ti,ri)}设置为从被很好重建的其他几何相似目标形状复制的优化变量的值。该算法对重建误差在所有目标形状T中最差的60%的目标形状T_{bad}的子集执行该更新。为了快速识别几何相似的目标,我们预先计算了一个目标到目标的距离矩阵M,其中M_{ij}是目标形状T_iT_j之间的倒角距离。对于每个T∈T_{bad},该算法根据距离矩阵M迭代T/T_{bad}中T的M=5个最近邻,并使用它们的当前优化变量{(ei,Ti,ri)}来重建T。如果得到的重建误差在T上重建误差的最佳10%以内,则这些变量值成为优化阶段I的下一次迭代的T的新值。否则,T的变量被重新初始化为随机状态。

3.3方法细节:最终零件检索

上述三个阶段的输出是解码和摆出的部分体积点云{D_i}。为了将这些点云转换为我们零件库中的实际零件,该算法首先将目标形状T分割为

段,其中Ui由来自T的所有点组成,这些点比任何其他解码零件更接近D_i(如在阶段II中)。对于每个段Ui,然后通过倒角距离来考虑零件库B中Ui的q个最近邻居。

我们可以使用我们预先训练的部分潜在空间,使用标准欧几里得近似最近邻居方法来加速这种最近邻居搜索。然而,为了与不建立这种潜在空间的方法进行更公平的比较,在我们的实验中,我们设置q=|B|,即在整个零件库中进行线性扫描。然后,该算法为这q个候选零件中的每一个优化姿态(t,r),并将在零件和目标形状段之间实现最小体积倒角距离的零件作为最终检索的零件。

实验结果:

关注下方《学姐带你玩AI》🚀🚀🚀

回复“CVPR”免费领取500+篇顶会论文合集

码字不易,欢迎大家点赞评论收藏!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值