Decomposed Vector-Quantized Variational Autoencoder for Human Grasp Generation¶
会议: ECCV 2024 arXiv: 2407.14062 代码: GitHub 领域: 人体理解 关键词: 抓取生成, VQ-VAE, 分解架构, 双阶段解码, 手物交互
一句话总结¶
提出 Decomposed VQ-VAE (DVQ-VAE),通过将手部分解为六个部分分别编码到独立码本,并设计双阶段解码策略(先姿态后位置),在四个基准数据集上质量指标相对提升约14.1%。
研究背景与动机¶
生成逼真的人手抓取姿态在机器人、人机交互和增强现实中至关重要。现有方法面临两大挑战:
- 整体编码的局限性:现有方法将手作为整体表示进行编码,难以精细控制每根手指与物体的交互,导致生成的抓取更像"触碰"而非真正的"抓握"
- 连续潜空间的缺陷:基于 CVAE 和 GAN 的方法使用连续潜空间来建模所有抓取类型,无法反映真实手部动作的离散和分类本质,导致多样性不足和不合理的抓取
- 泛化能力不足:现有方法在面对未见过的物体时需要耗时的测试时自适应(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)
亮点与洞察¶
- 离散化建模的合理性:抓取类型本质上是离散的,VQ-VAE的离散码本比CVAE的连续高斯分布更适合建模
- 分解编码的直觉:手指位置固定,不像图像像素可复用同一码本,因此为不同手部部件建立独立码本是自然选择
- 先姿态后位置的合理设计:姿态参数多(55维)且更基础,位置参数少(6维)且依赖姿态,序贯生成符合直觉
- 提出质量指标 Quality Index:平衡穿透和位移,避免单一指标的误导性
局限性 / 可改进方向¶
- 对几何形状复杂的物体(如不规则造型)可能生成接触不充分的抓取
- 可考虑使用 SDF (Signed Distance Field) 增强物体表示
- 当前仅支持单手抓取,未考虑双手协作场景
- 码本大小固定,可探索动态码本或层次化码本
相关工作与启发¶
- VQ-VAE 在动作生成的成功:受 Pi et al. 将人体分为5部分编码生成动作的启发,扩展到手部的6部分编码
- MANO 参数化手模型:提供了将手部表示为可微参数的基础
- ContactNet 的测试时自适应:虽然有效但耗时,双阶段策略避免了推理时的优化
评分¶
- 新颖性: ⭐⭐⭐⭐ — VQ-VAE+分解架构在抓取生成中首次提出
- 技术深度: ⭐⭐⭐⭐ — 多个组件设计合理且有充分消融验证
- 实验充分度: ⭐⭐⭐⭐⭐ — 4个数据集+人类评估+鲁棒性测试+详细消融
- 写作质量: ⭐⭐⭐⭐ — 结构清晰,图表丰富