跳转至

3D Hand Pose Estimation in Everyday Egocentric Images

会议: ECCV 2024
arXiv: 2312.06583
代码: https://github.com/ap229997/wild-hands (有)
领域: 3D视觉 / 手部姿态估计
关键词: 3D手部姿态, 第一人称视觉, 透视畸变, 辅助监督, 零样本泛化

一句话总结

通过系统研究裁剪输入、相机内参感知位置编码(KPE)、辅助监督(手部分割+抓握标签)和多数据集联合训练这四个实践,提出WildHands系统,在仅用ResNet50和少量数据的条件下,实现了对野外第一人称图像中3D手部姿态的鲁棒估计,零样本泛化超过FrankMocap全部指标且与10倍大的HaMeR竞争。

背景与动机

3D手部姿态估计在AR/VR、机器人操作等场景中至关重要。现有方法大多在实验室可控环境下表现尚可,但迁移到日常第一人称图像时面临三大挑战:(1)视觉信号差——手与物体交互导致严重遮挡,加上低分辨率和运动模糊;(2)透视畸变大——第一人称视角下手靠近相机,形变显著;(3)缺少野外3D标注——实验室外几乎不可能获得3D手部标注。已有方法(如FrankMocap、HaMeR)主要在外视角或实验室环境训练,直接用于第一人称场景效果不佳。第一人称视角的特殊性(手在视野不同位置的透视变形不同、手的位置本身蕴含姿态信息)尚未被系统性地研究和利用。

核心问题

如何在缺少野外3D手部标注的条件下,训练出能够应对第一人称图像中大透视畸变和严重遮挡的3D手部姿态估计模型?核心挑战是:(1)手在第一人称图像不同位置产生的投影变形是相机参数相关的,必须建模这种关系;(2)实验室数据多样性不足,但野外数据缺少3D标注,需要设计有效的替代监督信号。

方法详解

整体框架

WildHands基于ArcticNet-SF改造而来:输入为手部裁剪图(224×224)及对应相机内参,经ResNet50编码得到7×7×2048特征图,融合KPE(相机内参感知位置编码)后经卷积层压缩,再送入HMR风格的迭代解码器预测MANO参数(形状β、局部关节角θ_local、全局姿态θ_global)和弱透视相机参数。通过MANO层得到手部mesh和3D关键点,用可微渲染生成手部分割mask,用抓握分类头预测抓握类型。训练时在实验室数据(ARCTIC, AssemblyHands)上用3D监督,在野外数据(Epic-Kitchens, Ego4D)上用分割mask和抓握标签作辅助监督。

关键设计

  1. KPE (Intrinsics-aware Positional Encoding): 核心创新。第一人称视角下手在图像不同位置的透视变形不同,同一3D手姿态在不同位置产生不同2D外观。KPE将像素坐标转换为相机视场角坐标(θ_x, θ_y),通过正弦编码注入到特征图中,使网络知道裁剪区域在相机视场中的位置。采用稀疏版本(只编码四角+中心)效果最好,拼接到7×7特征图后经3层卷积融合,不使用BatchNorm以保留空间信息。KPE比CamConv、透视校正、PCL等替代方案更有效。

  2. 辅助监督策略: 针对野外数据无3D标注的问题,利用两种2D监督信号——(a)手部分割mask:通过可微渲染(SoftRasterizer)将预测的3D手投影为mask,与VISOR标注或off-the-shelf模型预测的mask计算BCE损失,实现了3D参数的端到端梯度反传;(b)抓握类型标签:训练一个4层MLP分类头,输入为预测的MANO参数,输出8类抓握概率,利用抓握类型与手部姿态的内在关联提供额外约束。

  3. 多数据集联合训练: 混合实验室和野外数据训练,批次内包含来自不同数据集的图像,不同数据集使用不同的损失权重组合。实验表明更多数据集持续带来性能提升。

损失函数 / 训练策略

总损失为多项加权和:MANO参数损失(L_θ, L_β)、3D关键点损失(L_kp3d)、2D投影关键点损失(L_kp2d)、相机参数损失(L_cam)、mask损失(L_mask)、抓握分类损失(L_grasp)。实验室数据使用3D相关损失(λ_θ=10, λ_kp3d=5, λ_kp2d=5, λ_cam=1),野外数据仅使用辅助损失(λ_mask=10, λ_grasp=0.1)。训练100 epochs, lr=1e-5, Adam优化器, batch size 144, 2张A40 GPU。

实验关键数据

数据集 指标 WildHands FrankMocap HaMeR(ViT-H) 改善
H2O MPJPE(mm)↓ 31.08 58.51 23.82 vs FM -46.9%
H2O MRRPE(mm)↓ 49.49 - 147.87 vs HaMeR -66.5%
AssemblyHands MPJPE(mm)↓ 80.40 97.59 45.49 vs FM -17.6%
Epic-HandKps L2 Error(px)↓ 7.20 13.33 4.56 vs FM -46.0%
ARCTIC(排行榜) MPJPE(mm)↓ 15.72 - - 排行榜第一

消融实验要点

  • 裁剪 vs 全图:使用手部裁剪比全图输入在MPJPE上提升27.7%,MRRPE提升29.7%,因为裁剪聚焦了细粒度视觉信息
  • KPE贡献最大:仅加入KPE即可在MPJPE上提升20.5%,MRRPE提升56.4%,2D指标提升65.1%——证明建模透视畸变是关键
  • KPE变体:稀疏KPE > 密集KPE > 无内参KPE > 与输入层融合 > 无KPE;KPE显著优于CamConv、透视校正、PCL
  • 辅助监督:mask监督(MPJPE -8.5%, MRRPE -21.5%, 2D -55.5%) > 抓握监督(MPJPE -2.5%, MRRPE -7.3%);两者结合效果最佳
  • Transformer也受益:KPE在HandOccNet和HaMeR(ViT)上同样有效,分别带来21.5%和21%的MPJPE提升
  • 数据规模:从单一ARCTIC扩展到ARCTIC+Assembly+Ego4D持续带来一致的3D和2D指标提升

亮点

  • KPE的设计非常巧妙:通过将图像裁剪位置转换为相机视场角并用正弦编码表示,以极低代价解决了第一人称视角透视畸变问题,且不依赖特定backbone(CNN和Transformer都受益)
  • 辅助监督的思路极具实用价值:利用可微渲染将3D估计与2D mask监督打通,以及利用抓握类型与手部姿态的关联性,巧妙地从2D标注中获取3D约束
  • "小而美"的系统设计:仅用ResNet50 + 3个数据集就能与用ViT-H + 10个数据集的HaMeR竞争,说明正确的设计选择比暴力扩大模型和数据更高效
  • 零样本评估策略:在4个从未见过的数据集上评估,很好地验证了泛化能力

局限性 / 可改进方向

  • 依赖相机内参:KPE需要已知相机内参,野外场景中并非每次都能获取;虽然论文指出EXIF元数据通常包含内参信息,但这限制了通用性
  • 手动损失权重:不同数据集和不同监督信号的损失权重全靠手动调节,可考虑不确定性加权等自动化方案
  • 极端场景仍然困难:手指几乎不可见(如揉面团)或极端抓握姿态时所有模型都失败
  • 未利用时序信息:目前是单帧估计,第一人称视频中的时序一致性和运动先验未被利用
  • 辅助监督可拓展:可考虑引入深度基础模型(如DepthAnything)、接触先验等更丰富的辅助信号

与相关工作的对比

  • vs FrankMocap:同为ResNet50 backbone,但FrankMocap未考虑透视畸变和野外辅助监督,WildHands在所有指标上全面超越
  • vs HaMeR:HaMeR使用ViT-H(大10倍)和10+数据集(多5倍),在MPJPE上更强,但在MRRPE(绝对位姿)上WildHands大幅领先(49.49 vs 147.87 on H2O),说明KPE对绝对位姿估计帮助极大
  • vs EgoPoseFormer:EgoPoseFormer依赖双目输入,WildHands仅用单目RGB,适用范围更广且方法互补

启发与关联

  • KPE的思路可迁移到其他第一人称3D理解任务(3D物体姿态估计、场景重建等),任何涉及裁剪图像做3D预测的场景都可能受益
  • 辅助监督范式(可微渲染+2D标注→3D约束)可扩展到手-物交互重建、人体姿态估计等任务
  • 多数据集训练中不同监督信号的权重自动学习是一个值得深入的方向

评分

  • 新颖性: ⭐⭐⭐⭐ 系统性研究+KPE引入手部姿态领域,但核心组件多为已有技术的组合应用
  • 实验充分度: ⭐⭐⭐⭐⭐ 消融非常全面,4个数据集零样本评估,每个设计选择都有对照实验
  • 写作质量: ⭐⭐⭐⭐ 结构清晰,实验设置公平严谨,但部分符号较密需要仔细阅读
  • 价值: ⭐⭐⭐⭐ 对第一人称手部姿态估计领域有实际推动,KPE和辅助监督思路可复用