PolarNet
本文提出了 PolarNet,一种基于点云的语言引导机器人操作网络,基于 PointNext 架构 [17],以高效编码点云输入。通过多模态 Transformer,在中间层将编码后的点云与语言指令融合,预测 7-DoF 的 action。
目标是学习一个视觉策略 π(at∣Ot),其中 at 是动作,Ot 是 t 时间的观察空间,包括:
- 语言指令 (x1,⋯,xNx),xi 是 token 化的单词
- K 个摄像头的 RGB 图像 {Irgbk∈RH×W×3}k=1K
- 对齐的深度图像 {Idepk∈RH×W}k=1K
将深度图像中的每个像素投影到 3D 世界坐标系中,每个像素的 RGB 颜色可以附加到对应的 3D 点上,为每个摄像头生成一个点云 Vtk∈RH×W×6,每个点由 XYZ 坐标和 RGB 颜色组成。
将它们合并为一个统一的点云。为了减少冗余,使用 Open3D [52] 对合并后的点云进行均匀下采样,每个体素保留一个点。同时定义了一个覆盖桌面上方工作空间的 3D 边界框,用于裁剪点云,仅保留物体和机器人手臂的点。最终得到的点云 Vt
实验证明,下面 4 种输入特征均有助于性能提升,其中颜色尤为重要:
- XYZ 坐标
- RGB 颜色
- 法向量:已被证明在避障任务中有效 [45]。
- 相对于操作桌面的高度
Model Architecture
采用 CLIP 模型 [8] 的语言编码器对语言指令进行标记化和编码。冻结 CLIP 的参数,并添加一个线性层以生成语言嵌入。
X^=(x^1,⋯,x^Nx)=WxCLIP([x1,⋯,xNx])
使用 PointNext 编码器 [17] 对点云 Vt 进行编码,PointNext 编码器由 Le 个 Set Abstraction (SA) 模块组成,用于分层抽象点云特征。每个 SA 模块包含以下步骤
- 子采样层:用 FPS 采样 Nvl 个点
- 分组层:为每个采样点找到邻居点,即距离 rl 之内的点
- MLP
- Max Pooling
假设查询点 i 在第 l 层的坐标为 pil,输入特征 vil,则
vil+1=MaxPoolj:(i,j)∈N{MLP([vjl;(pjl−pil)/rl])}
每个 SA 模块将点的数量减少一半,同时将特征维度增加一倍。我们将编码后的点云表示为 VtLe。
用多层 Transformer 架构 [53] 将点云特征与语言嵌入融合。首先为点云特征添加位置编码和正弦位置嵌入。
v^i0=WvviLe+WppiLe+Es(t)
然后在每一层 Transformer 中,依次执行:
- Self-Attention
- 点云到语言的 Cross-Attention
- Feedforward Network
Attn(Q,K,V)=Softmax(dWQQ(WKK)T)WVVV^l′=Attn(V^l,V^l,V^l),V^l′′=Attn(V^l′,X^,X^)V^l+1=LayerNorm(W2GeLU(W1V^l′′))
对于位置预测,由于是连续值,直接回归可能导致训练困难且性能不佳 [54],故使用 PointNext 生成点云上的热图 H∈RNv×1 和 每个点的偏移量 RNv×3,最终预测位置为:
a^txyz=i=1∑NvHi(pi+Δi)
对于旋转和开合状态,由于其离散性,直接通过以下公式预测:
a^tq,a^to=MLP([MaxPool(VtLe);MaxPool(V^tL)])
最终损失函数为:
L=∣NT∣1τ∈D∑[t=1∑TMSE(a^txyz,atxyz)+MSE(a^tq,atq)+BCE(a^to,ato)]