一个对于近期组合生成论文的总结
PartRM
论文题目:
PartRM: Modeling Part-Level Dynamics with Large Cross-State Reconstruction Model
CVPR2025 03.19 网页
问题
这篇论文主要的工作集中于部件级动态建模方面
1 提高了动态建模的精度和一致性:现有方法如Puppet-Master和DragAPart通常只能处理单视图图像或视频。而PartRM能够生成3D-aware的部件级运动,并且在多视角下保持一致性 ;也就是说之前的工作都是在平面上的抽屉开合,这个工作有物体的三维表示(高斯)
2 PartRM提出了PartDrag-4D数据集,该数据集提供了20,000多个部件状态的多视角图像,极大地丰富了训练数据。
3 PartRM采用了两阶段训练策略,分别处理运动学习和外观/几何学习,避免了灾难性遗忘,从而提高了模型的泛化能力。不过我感觉这个两阶段训练处处都有,不能算创新?
输入&输出
Pipeline
任务定义如下: 给定单张铰链物体的图像,一张静态的物体图像(例如微波炉的正面图) $o_t$ 和用户指定的拖拽 $a_t$(表示部件的运动方向和幅度,一个视图,像素坐标级别移动)(这个$a_t$表示从门关闭的位置到门打开的位置的运动)
输出t+N时刻(N任意) PartRM会输出门在整个过程中从关闭到打开的每个时刻的运动信息。例如,它会给出门的具体位置,门的移动幅度,以及在不同时间点的姿态,而且由于是高斯渲染,所以能保证多视角的一致性。
输入:一张包含物体(如门)的单视图图像,以及门的起始位置和终点位置的拖拽交互信息(这些位置是通过像素坐标指定的)。
输出:模型生成物体的3D表示,以及在不同时间点和视角下的物体状态和运动轨迹。
工作流

首先会利用 Zero123++ 生成输入的多视角图像,然后对输入的拖拽在用户希望移动的 Part 上进行传播。
这个part是利用SAM分割得到的
这些多视角的图像和传播后的拖拽会输入网络中,这个网络会对输入的拖拽进行多尺度的嵌入,然后将得到的嵌入拼接到重建网络的下采样层中。
因为网络可能不一定能识别到拖拽的区域。因此对拖拽进行传播到需要被拖拽部分的各个区域,使得后续网络感知到需要被拖拽的区域,为此我们设计了一个拖拽传播策略。如图所示,我们首先拿用户给定的拖拽的起始点输入进 Segment Anything 模型中得到对应的被拖拽区域的掩码,然后在这个掩码区域内采样一些点作为被传播拖拽的起始点,这些被传播的拖拽的强度和用户给定的拖拽的强度一样。
嵌入的过程如下:

在训练过程中,我们采用两阶段训练方法,第一阶段学习 Part 的运动,利用高斯库里的 3D 高斯进行 监督,第二阶段学习外观,利用数据集里的多视角图像进行监督。
数据集

文中选取了 8 种铰链物体(其中 7 种用于训练, 1 种用于测试),共 738 个 mesh。对于每个 mesh,如上图所示,文中使其中某个部件在两种极限状态(如完全闭合到完全开启)间运动至 6 个状态,同时将其他部分状态 设置为随机,从而产生共 20548 个状态,其中 20057 个用于训练,491 个用于测试。为渲染多视角图像,我们利用 Blender 为每个 mesh 渲染了 12 个视角的图像。对于两个状态之间拖拽数据的采样,我们在铰链物体运动部件的 Mesh 表面选取采样点,并将两个状态中对应的采样点投影至 2D 图像空间,即可获得对应的拖拽数据。
泛化到未知的数据

因为只指定了物体运动的启动和终点,所以在比较平滑的运动上能够取得比较好的效果,但是应该也不会太好。
还有一个比较严重的问题,就是他们训练的时候是给了blender中的模型,比如一个抽屉,那么是可以学习抽屉从关闭到打开的过程的,因为模型见过抽屉里的东西,但是泛化到未知环境的时候,怎么生成那些没见过的视图的细节呢?
而且文中只提到了一点点应用于操作上的内容,不过我没明白这种生成方式是怎么应用上去的,理论上机器人不可能和高斯交互吧。总的来说,无论是研究方法还是目标都挺无聊的。
Infinite Mobility
论文题目:
Infinite Mobility: Scalable High-Fidelity Synthesis of Articulated Objects via Procedural Generation
这篇文章要解决的问题是如何高效地生成大规模高质量的关节物体,以满足具身AI相关任务的需求。现有的方法要么是基于数据驱动的,要么是基于模拟的,这两种方法都受到训练数据规模和质量或模拟的真实性和劳动强度的限制。
核心原理
我觉得这篇文章的一个比较好的思路是: 每个刚体都描述为一个链接,每个关节是两个链接之间的连接。通过这种结构,铰接对象可以描述为树状结构,其中每个节点代表一个链接,每条边代表一个关节。 从根节点开始,通过语义规则递归添加子节点,确保必要部件生成,同时允许多样化扩展。
部分URDF截图:
定义物体:

生成物体之间的连接:

部分物理属性(如摩擦、阻尼)尚未自动化生成,而且底层的部分还是有限的(blender api + 本地库),并非生成得到,但是这个用trellis3D之类的会非常好生成,因为只需要mesh和mtl了
结果

不过对于lay out布局来说,目前还是手动指定的,比如下图就是作者在论文中给出的

而且这篇论文生成的物体可能不能拆卸或组装吧?
Two by Two
论文题目:
Two by Two : Learning Multi-Task Pairwise Objects Assembly for Generalizable Robot Manipulation
CVPR2025 04.06 网页
让机器人成功完成装配之类的任务需要对对象对之间的空间关系进行精确推理。机器人需要准确估计每个物体的 6D 姿态,包括它们在空间中的方向和位置。 所以这篇论文的主要创新之处就在于考虑了物体之间的空间关系吧。
2BY2数据集: 规模与多样性:第一个大型组装数据集,包含517对物体、1034个实例,覆盖18个细粒度任务(如插头插入、鲜花插瓶、面包放入烤面包机等)。
标注信息:提供6D姿态(平移+旋转)和对称性标注,模拟真实场景中的物理约束。
任务分类:分为三大类(Lid Covering, Inserting and High Precision Placing),每类进一步细分为具体任务(如钥匙开锁、硬币存钱罐)。
工作流

具体实现方法
解决的问题是日常成对物体组装任务中的6D姿态估计问题,即在三维空间中对两个物体进行精确的相对位姿(位置+旋转)预测,使其能够完成功能性组装(如插头插入插座、盖子盖在瓶子上等)。
先对之前的数据集作了一个处理,分成两部分,物体 B 是底座或接收组件,例如螺母、花瓶、邮筒。物体 A 是配件组件,例如螺栓、花朵、邮件。
输入:
两个物体的点云 $P_{A}$ 插入物体,如插头)和$P_{A}$(基础物体,如插座),每个点云为1024个点的坐标集合。
输出:
两个SE(3)变换矩阵 ($T_{B}, R_{B}$) 和 ($T_{A}, R_{A}$),然后分别将$P_{A}$和$P_{B}$变换到预定义的规范空间(Canonical Space),使其在规范空间内完成正确组装。
规范空间:根据任务类型定义的基础坐标系。例如: 放置类任务(如花瓶):物体稳定放置在XY平面,Z轴垂直向上。 插入类任务(如插座):基础物体固定在XZ平面(模拟墙面),插入方向沿Y轴
方法:
网络分为两个分支,模仿人类分步组装逻辑(如先固定插座,再插入插头)
Branch B(基础物体预测)
两尺度Vector Neuron DGCNN:提取$SE(3)$等变特征(旋转/平移时特征同步变换)。
MLP预测头:从特征中直接预测旋转矩阵$R_B$和平移向量$T_B$
Branch A
基于Object B的预测位姿,预测Object A(如插头)的位姿
将Object B的SO(3)不变特征(与旋转无关)与Object A的SE(3)等变特征点乘融合,保留几何对齐信息。
MLP预测头:输出$R_A$和$T_A$
训练策略
分步独立训练
Branch B训练:使用Object B的规范位姿真值(无需考虑Object A)。
Branch A训练:固定Branch B,使用Object B的真值位姿(避免预测误差传递)。
推理阶段:先预测Object B位姿,再基于此预测Object A位姿。
loss 分两个,一个是平移loss,$\mathcal{L}_{\mathrm{trans}}=\|T_{\mathrm{pred}}-T_{\mathrm{gt}}\|_1$,另一个是旋转loss,$\mathcal{L}_{\mathrm{rot}}=\arccos\left(\frac{\mathrm{tr}(R_{\mathrm{gt}}R_{\mathrm{pred}}^T)-1}{2}\right)$
跨物体特征融合:通过点乘显式建模功能关系(如孔-轴匹配)