跳转至

Decomposed Vector-Quantized Variational Autoencoder for Human Grasp Generation

会议: ECCV 2024 arXiv: 2407.14062 代码: GitHub 领域: 人体理解 关键词: 抓取生成, VQ-VAE, 分解架构, 双阶段解码, 手物交互

一句话总结

提出 Decomposed VQ-VAE (DVQ-VAE),通过将手部分解为六个部分分别编码到独立码本,并设计双阶段解码策略(先姿态后位置),在四个基准数据集上质量指标相对提升约14.1%。

研究背景与动机

生成逼真的人手抓取姿态在机器人、人机交互和增强现实中至关重要。现有方法面临两大挑战:

  1. 整体编码的局限性:现有方法将手作为整体表示进行编码,难以精细控制每根手指与物体的交互,导致生成的抓取更像"触碰"而非真正的"抓握"
  2. 连续潜空间的缺陷:基于 CVAE 和 GAN 的方法使用连续潜空间来建模所有抓取类型,无法反映真实手部动作的离散和分类本质,导致多样性不足和不合理的抓取
  3. 泛化能力不足:现有方法在面对未见过的物体时需要耗时的测试时自适应(test-time adaptation),大幅增加推理成本

作者观察到 VQ-VAE 的离散码本天然适合建模抓取类型的离散性质,且手指位置固定的特点使得分解编码成为合理的设计选择。

方法详解

整体框架

DVQ-VAE 基于编码器-解码器范式,核心创新在于: - 训练时:输入物体点云和手部顶点,将手分解为6个部分(五指+掌心)分别编码到独立码本,通过双阶段解码器生成 MANO 参数 - 推理时:仅输入物体点云,通过自回归模型(PixelCNN)从物体码本索引预测手部各部分的码本索引,再解码生成手部网格

编码器使用 PointNet 处理点云,解码器为 MLP,共维护7个码本(1个物体 + 6个手部部分)。

关键设计

1. 部件感知分解架构 (Part-Aware Decomposed Architecture)

传统 VQ-VAE 使用单一码本,适用于图像(同一码本索引可出现在不同位置)。但手的各手指位置固定,因此将 VQ-VAE 扩展为分解架构:

  • 手部顶点(778个)分为6段:拇指、食指、中指、无名指、小指和掌心
  • 每段独立编码到专属码本 \(Z = \{Z_o, Z_1, ..., Z_N\}\)
  • 物体特征 \(z_t\) 仅作为自回归的条件,物体码本通过无监督学习训练
  • 推理时以物体码本索引为起始,自回归生成手部各部分的码本索引

2. 双对象编码器 (Two Object Encoders)

不同于先前方法使用单一物体编码器,本文设计了: - Type Encoder:提取 \(z_t\),用于学习物体码本中的抓取类型聚类 - Pose Encoder:提取 \(z_p\),辅助解码抓取位置,确定手与物体的接触位置

3. 双阶段解码策略 (Dual-Stage Decoding Strategy)

将 MANO 参数分为姿态和位置两部分,序贯生成:

第一阶段 — 姿态生成:将手部码本特征 \(\hat{z}_f\)\(z_t\) 拼接,通过 Posture Decoder 输出 \(\hat{M}_{posture}\)(shape 参数 \(M_\alpha \in \mathbb{R}^{10}\) + 关节旋转 \(M_\beta \in \mathbb{R}^{45}\)),并引入骨骼物理约束: - 从重建手部提取关节点 \(J\),计算相邻关节角度 \(\theta_i\) - 通过门控网络 \(G(\theta)\) 和 Transformer 层 \(T(\cdot)\) 生成修正值

第二阶段 — 位置生成:对姿态编码结果 \(z_h\) 做梯度截断(stop gradient),与 \(z_p\) 拼接,通过 Position Decoder 输出 \(\hat{M}_{position}\)(平移 \(M_\gamma \in \mathbb{R}^3\) + 旋转 \(M_\delta \in \mathbb{R}^3\)

损失函数 / 训练策略

总损失由三部分组成:\(\mathcal{L} = \mathcal{L}_R + \mathcal{L}_E + \mathcal{L}_{contact}\)

1. 码本嵌入损失 \(\mathcal{L}_E\):标准 VQ-VAE 损失,包含承诺损失(commitment loss, \(\beta=0.25\)),分别约束手部和物体的编码器输出逼近码本向量

2. 重建损失 \(\mathcal{L}_R\): - 姿态损失 \(\mathcal{L}_{posture}\):L2距离 - 位置损失 \(\mathcal{L}_{position}\):L2距离 - 顶点损失 \(\mathcal{L}_v\):重建手部顶点与GT的L2距离

3. 接触损失 \(\mathcal{L}_{contact}\): - 物体中心接触损失 \(\mathcal{L}_c\):手与物体接触点距离 - 接触图一致性损失 \(\mathcal{L}_m\):预测与GT接触图的交集比 - 穿透损失 \(\mathcal{L}_p\):惩罚穿入物体内部的手部点

训练细节:Adam优化器,初始学习率1e-4,200 epochs,在Obman数据集上训练,单张RTX 3090。

实验关键数据

主实验

在Obman上训练,测试四个数据集(HO-3D、FPHA、GRAB、Obman),其中HO-3D/FPHA/GRAB的物体在训练集中从未见过。

数据集 方法 接触率↑ 穿透体积↓ 抓取位移↓ 时间(s)↓ 质量指标↓
HO-3D GraspCVAE 99.60% 7.23 2.78 0.004 4.12
HO-3D GraspTTA 100% 9.00 2.65 19.67 4.56
HO-3D DVQ-VAE 99.50% 5.36 2.75 0.14 3.54
FPHA GraspCVAE 98.98% 7.46 2.97 0.004 4.32
FPHA DVQ-VAE 97.96% 4.58 3.35 0.14 3.72
GRAB GraspCVAE 97.10% 3.54 2.02 0.004 2.48
GRAB DVQ-VAE 98.60% 3.18 2.13 0.15 2.45

推理速度相比 ContactGen 降低99.8%,相比 GraspTTA 降低99.3%。

消融实验

变体 穿透体积↓ 抓取位移↓ 质量指标↓
VQ-VAE(基线) 6.67 7.21 7.05
DVQ-VAE(仅分解架构) 10.88 4.98 6.76
VQ-VAE + 双阶段 4.44 3.61 3.86
DVQ-VAE + 双阶段(单编码器) 11.20 4.57 6.57
DVQ-VAE + 双阶段(反序) 7.56 2.93 4.32
DVQ-VAE + 双阶段(完整) 5.36 2.75 3.54

关键发现

  • 分解架构使聚类大小提升151%,显著增加抓取多样性
  • 双阶段策略使质量指标相对提升45.2%(DVQ-VAE)和47.6%(VQ-VAE)
  • 物体在码本中被聚类为21个抓取类型,食指和无名指的自由度更高
  • 即使物体点云被遮挡50%或90%,模型仍能生成合理抓取
  • 人类评估中获得最高平均分3.36(vs ContactGen 3.25, GraspTTA 3.23)

亮点与洞察

  1. 离散化建模的合理性:抓取类型本质上是离散的,VQ-VAE的离散码本比CVAE的连续高斯分布更适合建模
  2. 分解编码的直觉:手指位置固定,不像图像像素可复用同一码本,因此为不同手部部件建立独立码本是自然选择
  3. 先姿态后位置的合理设计:姿态参数多(55维)且更基础,位置参数少(6维)且依赖姿态,序贯生成符合直觉
  4. 提出质量指标 Quality Index:平衡穿透和位移,避免单一指标的误导性

局限性 / 可改进方向

  • 对几何形状复杂的物体(如不规则造型)可能生成接触不充分的抓取
  • 可考虑使用 SDF (Signed Distance Field) 增强物体表示
  • 当前仅支持单手抓取,未考虑双手协作场景
  • 码本大小固定,可探索动态码本或层次化码本

相关工作与启发

  • VQ-VAE 在动作生成的成功:受 Pi et al. 将人体分为5部分编码生成动作的启发,扩展到手部的6部分编码
  • MANO 参数化手模型:提供了将手部表示为可微参数的基础
  • ContactNet 的测试时自适应:虽然有效但耗时,双阶段策略避免了推理时的优化

评分

  • 新颖性: ⭐⭐⭐⭐ — VQ-VAE+分解架构在抓取生成中首次提出
  • 技术深度: ⭐⭐⭐⭐ — 多个组件设计合理且有充分消融验证
  • 实验充分度: ⭐⭐⭐⭐⭐ — 4个数据集+人类评估+鲁棒性测试+详细消融
  • 写作质量: ⭐⭐⭐⭐ — 结构清晰,图表丰富