HandFlow: Fully Generative 4D Hand Recovery with Flow Matching

Introduction

单目 4D 手部重建的目标是:给定一段普通 RGB 视频,恢复手部在每一帧中的三维形状、关节姿态和空间位置,并让这些结果沿时间形成连贯的运动轨迹。

这里的“4D”表示:

  • 3D:每一帧中的三维手部;
  • 第四维:时间;
  • 最终输出是一段连续变化的 3D 手部序列。

这一任务在 AR/VR、机器人模仿学习、第一人称交互理解和动作捕捉中都有重要作用。然而,单目视频只能提供二维投影,手部又经常出现快速运动、运动模糊、自遮挡、物体遮挡和离开画面的情况,因此同一张图像可能对应多种合理的三维姿态。

现有方法主要有两条路线:

  • 单帧回归方法:HaMeR、WiLoR、HandOS 等方法逐帧预测 MANO 参数。单帧清晰时精度较高,但连续应用到视频后容易产生抖动。
  • 时序回归方法:Deformer、HaWoR、Dyn-HaMR、HaPTIC 等方法引入相邻帧或整段视频信息,能够提升时间一致性,但通常仍然为每段输入输出一个确定结果。

确定性回归在观测清晰时较为有效。当手部被严重遮挡时,输入中并没有足够的信息确定唯一的三维姿态,模型只能在训练数据中的多种可能结果之间寻找折中,容易产生:

  • 手指姿态过度平滑;
  • 深度方向预测错误;
  • 快速运动被压平;
  • 全局轨迹漂移;
  • 遮挡帧与前后帧不连续。

HandFlow 将这个问题表述为 MANO 参数空间中的条件生成任务:模型学习视频条件下合理手部运动序列的分布,再从噪声出发生成一条符合视觉观测和运动先验的完整轨迹。

HandFlow 的核心设计可以概括为:

  1. 使用冻结的 HaMeR 提取视觉特征、二维骨架和检测置信度;
  2. 使用 Rectified Flow 从高斯噪声生成完整 MANO 参数序列;
  3. 使用 Flux 风格的双流 Transformer 联合建模条件和手部状态;
  4. 根据检测置信度连续削弱不可靠观测;
  5. 在 ODE 积分过程中融合重叠窗口的速度,处理长视频;
  6. 使用 SLAM 将相机坐标系中的手部转换到世界坐标系。

需要注意,HandFlow 的生成模型主要恢复 相机坐标系中的手部状态和轨迹。世界坐标系结果仍然需要 ViPE-SLAM 提供相机位姿。

Related Work

Single-frame Hand Reconstruction

单帧手部重建通常从一张裁剪后的手部图像中预测 MANO 参数。

代表性方法包括:

  • HaMeR:使用 ViT-Huge 和大规模训练数据,具备较强的野外图像泛化能力;
  • WiLoR:联合手部检测与三维重建,提高定位和恢复精度;
  • HandOS:将检测与重建整合到单阶段框架中。

这些方法在图像清晰时可以获得较好的单帧精度,但每一帧独立处理,缺少显式的时间约束。连续视频中较小的图像变化便可能引起较大的三维姿态变化。

Video-based 4D Hand Reconstruction

视频方法通过聚合时间信息提升稳定性:

  • Deformer:利用相邻帧的动态融合帮助当前帧预测;
  • HaWoR:将相机坐标系手部估计与 SLAM 相机轨迹结合,恢复第一人称视频中的世界坐标手部运动;
  • Dyn-HaMR:结合 SLAM、手部先验和多阶段优化,处理动态相机下的全局手部运动;
  • HaPTIC:使用跨视角与全局交叉注意力预测 4D 手部轨迹。

这类方法已经开始关注全局轨迹和时间平滑性,但主干通常仍然是确定性预测或多阶段优化流程。在模糊、遮挡和手部出画时,模型难以表达多种潜在的合理状态。

Generative Hand Reconstruction

生成模型可以利用学习到的运动分布补全缺失信息:

  • HandDiff:使用图像和点云条件,通过扩散模型估计单帧 3D 手部姿态;
  • MaskHand:在离散化的 VQ-MANO token 上进行掩码生成;
  • UniHand:将估计和生成统一为条件运动生成,并通过 VAE 压缩结构化信号;
  • FMPose3D:将 Flow Matching 用于单帧人体三维姿态估计。

HandFlow 的区别主要体现在:

  • 直接生成一段时序 MANO 参数;
  • 不通过 VAE 压缩 MANO 状态;
  • 同时生成关节姿态、全局平移和共享手型;
  • 使用 Rectified Flow 将推理压缩到少量 ODE 步;
  • 对完整时间窗口进行双向注意力建模。

Method

Overview

HandFlow 的完整流程分为三个阶段:

  1. Condition Extraction

    HaMeR 从每一帧中提取:

    • 手部裁剪图像;
    • ViT-Huge patch 特征;
    • 21 个二维手部关键点;
    • 手部检测置信度。
  2. Flow-Matching Denoising

    模型从标准高斯噪声出发,通过双流 Transformer 预测速度场,并利用 ODE 积分逐步生成 MANO 参数序列。

  3. Long-video Inference

    长视频被划分为重叠窗口。多个窗口对同一帧预测出的速度在 ODE 积分期间进行融合,从而减少窗口边界处的运动突变。


MANO Sequence Representation

设视频窗口长度为 TT。HandFlow 中的一段手部状态由三部分组成:

  • 手型参数:βR10\beta\in\mathbb{R}^{10}
  • 每帧姿态:θiR48\theta_i\in\mathbb{R}^{48}
  • 每帧平移:τiR3\tau_i\in\mathbb{R}^{3}

其中:

  • β\beta 描述手掌宽度、手指长度等个体形状,在整个窗口中共享;
  • θi\theta_i 包含 3 维全局轴角旋转和 45 维关节轴角旋转;
  • τi\tau_i 表示手部在相机坐标系中的三维平移。

整个窗口可以写为:

x=[β,θ1,τ1,θ2,τ2,,θT,τT]x= \left[ \beta,\theta_1,\tau_1,\theta_2,\tau_2,\ldots,\theta_T,\tau_T \right]

由于姿态、手型和平移的数值范围不同,模型首先按维度进行标准化:

xˉ=xμσ\bar{x}=\frac{x-\mu}{\sigma}

Flow Matching 在标准化空间中进行;几何损失和 MANO 前向运动学则在反标准化后的真实参数空间中计算。

官方推理配置使用:

  • 窗口长度:T=16T=16
  • 重叠帧数:2;
  • ODE 积分步数:3。

Rectified Flow

基本思想

扩散模型通常通过多步去噪,从高斯噪声逐渐恢复数据。Rectified Flow 将噪声和真实数据之间的路径构造为近似直线,并训练模型预测沿这条路径移动的速度。

设:

  • x0N(0,I)x_0\sim\mathcal{N}(0,I) 为随机噪声;
  • x1x_1 为真实 MANO 参数序列;
  • t[0,1]t\in[0,1] 为流动时间。

中间状态为:

xt=(1t)x0+tx1x_t=(1-t)x_0+t x_1

t=0t=0 时,xtx_t 是纯噪声;当 t=1t=1 时,xtx_t 到达真实手部序列。

这条直线路径的目标速度为:

v=x1x0v^*=x_1-x_0

网络接收 xtx_t、时间 tt 和视频条件 cc,预测速度:

vϕ(xt,t,c)v_\phi(x_t,t,c)

Flow Matching 损失为:

LFM=E[vϕ(xt,t,c)(x1x0)22]\mathcal{L}_{FM} = \mathbb{E} \left[ \left| v_\phi(x_t,t,c)-(x_1-x_0) \right|_2^2 \right]

直观上,网络学习回答:

当前 MANO 序列还带有多少噪声,下一步应该朝哪个方向移动,才能形成符合视频观测的合理手部运动?

推理时从随机噪声开始求解:

dxtdt=vϕ(xt,t,c)\frac{dx_t}{dt}=v_\phi(x_t,t,c)

HandFlow 使用 Euler 方法,只执行 3 个 ODE 步。论文的步数实验显示,1 步会产生明显积分误差,MPJPE 约为 43 mm;2 步后下降到约 27 mm,并进入相对稳定的平台区间。作者选择 3 步,为分布变化保留一定安全余量。


Visual Condition

对于每个手部裁剪区域,冻结的 HaMeR ViT-Huge 输出:

FiR192×1280F_i\in\mathbb{R}^{192\times1280}

192 对应 16×1216\times12 个图像 patch,每个 patch 为 1280 维。

直接将所有 patch 输入时序 Transformer 会产生较大的 token 数量。HandFlow 使用一个包含 8 层 Cross-Attention Pooling 的 Frame Compressor,将每一帧的 patch 特征压缩为一个图像 token:

FiciimgR512F_i\longrightarrow c_i^{img}\in\mathbb{R}^{512}

因此,视觉分支为每一帧提供一个包含手部外观、遮挡关系和局部纹理信息的紧凑表示。消融实验显示,移除图像特征后,PA-MPJPE 从 4.75 mm 上升到 8.47 mm,F@5 从 66.63% 降至 13.42%,说明视觉特征是主要的姿态信息来源。


Skeletal Condition

HaMeR 同时预测 21 个二维关键点。

普通二维坐标只表示关键点在图像上的位置,难以直接表达相机投影几何。HandFlow 根据裁剪区域对应的相机内参,将二维关键点反投影为相机归一化三维射线。

对于图像坐标 (u,v)(u,v) 和内参 (fx,fy,cx,cy)(f_x,f_y,c_x,c_y),可以写为:

r=[ucxfx,vcyfy,1]r= \left[ \frac{u-c_x}{f_x}, \frac{v-c_y}{f_y}, 1 \right]

这条射线表示:三维关键点应当位于从相机中心穿过该像素的空间方向上,具体深度仍然未知。

所有关键点射线经过位置编码和投影后,被压缩为每帧一个骨架 token:

ciskelR512c_i^{skel}\in\mathbb{R}^{512}

骨架条件主要提供:

  • 手部在图像中的位置;
  • 手指关节的二维结构;
  • 与相机投影相关的方向信息;
  • 对全局平移的几何约束。

移除骨架条件后,模型性能下降幅度小于移除视觉特征,但 MPJPE 从 18.73 mm 增加到 22.86 mm,说明骨架 token 更接近一种几何锚点。


Confidence-aware Continuous Masking

动机

HaMeR 在以下情况中会输出较低置信度:

  • 手部被物体遮挡;
  • 自遮挡严重;
  • 快速运动造成模糊;
  • 手部只剩一部分位于画面中;
  • 手部完全离开画面。

这些帧的视觉特征和二维关键点都可能包含错误信息。如果模型始终强制使用观测条件,错误的二维位置可能进一步破坏三维平移和整段轨迹。

HandFlow 为图像和骨架模态分别学习一个 mask token。设原始条件 token 为 cic_i,HaMeR 置信度为 si[0,1]s_i\in[0,1],可学习 mask token 为 mm,连续掩码可以写为:

c~i=sici+(1si)m\tilde{c}_i=s_i c_i+(1-s_i)m

当置信度较高时:

si1,c~icis_i\approx1,\qquad \tilde{c}_i\approx c_i

模型主要依赖当前帧观测。

当置信度较低时:

si0,c~ims_i\approx0,\qquad \tilde{c}_i\approx m

当前帧条件逐渐退化为一个“信息缺失”标记,模型更多利用前后帧和学习到的手部运动先验完成预测。

这种连续插值比硬阈值更平滑,置信度从 0.8 降到 0.4 时,条件信息也会逐渐减弱。

训练期间,模型还会随机遮挡约 20% 的帧,迫使网络学习从时间上下文中恢复缺失状态。将随机遮挡率从 0 提升到 0.2 后,单帧 MPJPE 仅增加约 0.36 mm,而加速度误差降低约 33%,W-MPJPE 降低 2.28 mm。关闭推理阶段的置信度加权后,MPJPE 增加约 86%,PA-MPJPE 基本不变,说明连续掩码主要改善全局位置和时间稳定性。


Dual-Stream Transformer

HandFlow 使用受 Flux 启发的双流结构,分别维护:

  • z-stream:待生成的 MANO 参数;
  • c-stream:从视频中提取的图像和骨架条件。

Tokenization

对于 16 帧窗口,z-stream 包含:

  • 1 个共享 shape token;
  • 16 个 pose token;
  • 16 个 translation token。

总计:

1+16+16=331+16+16=33

个 MANO token。

c-stream 包含:

  • 16 个 image token;
  • 16 个 skeleton token。

总计:

16+16=3216+16=32

个条件 token。

各类参数拥有独立的输入投影层,因为 10 维手型、48 维姿态和 3 维平移具有不同语义和数值结构。

Dual-stream Block

在双流模块中,z-stream 和 c-stream 分别计算 Query、Key、Value:

Qz,Kz,Vz,Qc,Kc,VcQ_z,K_z,V_z,\qquad Q_c,K_c,V_c

随后将两条流的 QKV 拼接,执行联合注意力:

Q=[Qz;Qc],K=[Kz;Kc],V=[Vz;Vc]Q=[Q_z;Q_c],\qquad K=[K_z;K_c],\qquad V=[V_z;V_c]

Attention(Q,K,V)=Softmax(QKd)V\operatorname{Attention}(Q,K,V) = \operatorname{Softmax} \left( \frac{QK^\top}{\sqrt d} \right)V

因此:

  • MANO token 可以读取图像和骨架条件;
  • 条件 token 也能根据当前生成状态重新组织信息;
  • 不同帧的 pose 和 translation token 可以直接交互;
  • 一个被遮挡帧可以从前后帧获得信息。

联合注意力结束后,输出重新拆分为两条流,并分别经过各自的前馈网络。

消融实验中,使用单向 Naive Cross-Attention 后,MPJPE 从 18.73 mm 增加到 22.04 mm,加速度误差从 4.08 增加到 6.12 m/s2\mathrm{m/s^2}。这说明条件到状态的单向读取不足以实现稳定融合,双向 token 交互是主要增益来源。

Single-stream Block

经过 8 层双流模块后,z-token 和 c-token 被拼接,再经过 16 层 DiT 风格的单流自注意力模块。

完整配置为:

模块 配置
Hidden Size 512
Attention Heads 16
Dual-stream Blocks 8
Single-stream Blocks 16
MLP Ratio 4
Dropout 0.1

时间步 tt 使用正弦编码,并通过 MLP 生成 Adaptive LayerNorm 的调制参数。RoPE 根据帧编号编码时间位置,同一帧的 pose、translation、image 和 skeleton token 使用相同位置编号,使模型知道它们属于同一时刻。


Training Objectives

仅使用 Flow Matching 损失可以让网络学习数据分布,但三维手部重建还需要满足几何精度和时间连续性。

HandFlow 使用组合损失:

L=LFM+λβLshape+λvLvelocity+λaLacceleration+λ2DL2D+λ3DL3D\mathcal{L} = \mathcal{L}*{FM} + \lambda*\beta\mathcal{L}*{shape} + \lambda_v\mathcal{L}*{velocity} + \lambda_a\mathcal{L}*{acceleration} + \lambda*{2D}\mathcal{L}*{2D} + \lambda*{3D}\mathcal{L}_{3D}

其中:

Shape Loss

约束预测手型与真实手型一致:

Lshape=β^β22\mathcal{L}_{shape} = |\hat{\beta}-\beta|_2^2

Velocity Loss

约束相邻帧 MANO 参数的一阶差分:

Lvelocity=i(x^i+1x^i)(xi+1xi)2\mathcal{L}_{velocity} = \sum_i | (\hat{x}_{i+1}-\hat{x}_i) - (x_{i+1}-x_i) |_2

它要求预测序列具有正确的移动方向和速度。

Acceleration Loss

约束二阶时间差分:

Lacceleration=i(x^i+12x^i+x^i1)(xi+12xi+xi1)2\mathcal{L}_{acceleration} = \sum_i | (\hat{x}_{i+1}-2\hat{x}*i+\hat{x}*{i-1}) - (x_{i+1}-2x_i+x_{i-1}) |_2

它用于减少不自然的帧间抖动,同时保留真实快速运动。

2D Reprojection Loss

将预测 MANO 关节投影回裁剪图像,约束其与二维关键点一致:

L2D=i,jπ(J^i,j)π(Ji,j)2\mathcal{L}_{2D} = \sum_{i,j} | \pi(\hat{J}*{i,j})-\pi(J*{i,j}) |_2

Absolute 3D Joint Loss

直接约束相机坐标系中的三维关节位置:

L3D=i,jJ^i,jJi,j2\mathcal{L}_{3D} = \sum_{i,j} | \hat{J}*{i,j}-J*{i,j} |_2

这些辅助损失作用于根据当前速度估计得到的一步干净预测,并根据采样时间进行缩放。


Velocity-blended Overlapping Windows

为什么需要重叠窗口

模型一次处理 16 帧。对于更长视频,需要切分为多个窗口。

直接使用无重叠窗口时,每个窗口边缘的帧只能看到单侧上下文:

  • 第一个窗口末帧看不到后续运动;
  • 第二个窗口首帧看不到更早运动;
  • 两段预测容易在边界处产生速度跳变。

一种简单方法是分别生成每个窗口,然后对重叠帧的最终 MANO 参数求平均。问题在于,各窗口从不同噪声状态独立求解 ODE,最终状态可能位于不同生成轨迹上。直接平均终点会产生缺乏物理意义的中间状态。

ODE 内速度融合

HandFlow 在每一个 ODE 步中融合速度。

设全局帧 ii 同时出现在多个窗口中,第 kk 个窗口对该帧预测速度为 vi(k)v_i^{(k)}。根据该帧到窗口中心的距离分配权重 wi(k)w_i^{(k)}

vˉi=kwi(k)vi(k)kwi(k)\bar v_i = \frac{ \sum_k w_i^{(k)}v_i^{(k)} }{ \sum_k w_i^{(k)} }

靠近窗口中心的帧拥有更完整的前后文,因此权重更大。

共享状态随后只更新一次:

xi(n+1)=xi(n)+Δt,vˉix_i^{(n+1)} = x_i^{(n)} + \Delta t,\bar v_i

所有窗口始终从同一个全局帧状态计算速度,因此整段视频沿一条共享 ODE 轨迹演化。

实验中:

  • 无重叠窗口的加速度误差为 4.49;
  • 后处理平均会在重叠边界产生更高误差;
  • 使用 2 帧重叠和速度融合后,加速度误差降至 4.26;
  • 更大的 4 帧重叠可降至 4.18,但需要处理更多窗口。

官方配置选择 2 帧重叠,在计算成本和轨迹连续性之间取得平衡。

Experiment

Dataset

DexYCB

DexYCB 包含多视角手部抓取物体数据,HandFlow 使用标准 s0 协议:

  • 训练使用 10 名参与者和 8 个相机视角中的训练序列;
  • s0 测试序列从训练中排除;
  • 主要评估相机坐标系姿态精度和遮挡鲁棒性。

HOT3D

HOT3D 包含第一人称多视角手部与物体交互,具有:

  • 动态头戴相机;
  • 频繁自遮挡和物体遮挡;
  • 快速手部运动;
  • 世界坐标轨迹标注。

由于官方验证集的真值尚未公开,作者在官方训练集中自行划分验证集:

  • 1,347 个 clip 用于训练;
  • 169 个 clip 用于验证;
  • 所有重新运行的对比方法使用相同划分。

Metrics

MPJPE

Mean Per-Joint Position Error,直接计算预测关节和真实关节之间的平均三维距离:

MPJPE=1TJi,jJ^i,jJi,j2\operatorname{MPJPE} = \frac{1}{TJ} \sum_{i,j} | \hat J_{i,j}-J_{i,j} |_2

它同时受到姿态、旋转和平移误差影响。

PA-MPJPE

先通过 Procrustes Alignment 对齐平移、旋转和尺度,再计算 MPJPE。

该指标主要反映手指关节相对结构是否准确,弱化全局位置误差。

RA-MPJPE

只对齐根节点方向,再计算 MPJPE,对全局位置和深度误差更加敏感。

W-MPJPE

只使用序列前两帧进行对齐,其余帧不再重新对齐,因此后续轨迹漂移会持续累积。

该指标主要衡量世界坐标系轨迹是否准确。

WA-MPJPE

将整段序列视为一个整体点云,执行一次 Procrustes 对齐,再计算误差。

它弱化整体刚体偏移,更关注整段运动的形状和相对轨迹。

Acceleration Error

比较预测关节加速度与真实加速度:

Eacc=1(T2)Ji,ja^i,jai,j2E_{acc} = \frac{1}{(T-2)J} \sum_{i,j} | \hat a_{i,j}-a_{i,j} |_2

加速度误差较低通常意味着轨迹平滑,但单独降低该指标可能导致真实快速运动被过度平滑,因此需要与世界坐标误差一起分析。


DexYCB Camera-space Results

Method RA-MPJPE ↓ PA-MPJPE ↓ 75%–100% 遮挡 PA-MPJPE ↓
Deformer 13.64 5.22 6.34
HaWoR 14.22 4.76 5.07
UniHand 4.08 4.26
HandFlow 8.12 3.88 4.85

主要结论:

  • HandFlow 的 RA-MPJPE 为 8.12 mm,相比第二名 Deformer 的 13.64 mm 降低约 41%;
  • 在完整测试集和轻度遮挡中,HandFlow 获得最佳结果;
  • 在 50% 以上严重遮挡中,UniHand 的 PA-MPJPE 略低;
  • HandFlow 和 UniHand 在 75%–100% 遮挡中均保持在 5 mm 以下,而单帧回归方法的误差上升更明显。

该结果支持生成式运动先验对于遮挡恢复的价值,同时也说明 HandFlow 在极端遮挡下并未全面超过所有生成式基线。


HOT3D World-space Results

HandFlow 在 HOT3D 上的关键结果包括:

Metric HandFlow 代表性对比
W-MPJPE ↓ 43.00 mm UniHand:63.97 mm
WA-MPJPE ↓ 16.17 mm UniHand:25.24 mm
HaWoR:27.37 mm
Dyn-HaMR:31.01 mm
Acceleration ↓ 4.18 m/s2\mathrm{m/s^2} Dyn-HaMR:4.77
RTE ↓ 2.32% 第二名:2.44%

UniHand 的单帧 PA-MPJPE 为 4.76 mm,低于 HandFlow,但其 W-MPJPE 和 WA-MPJPE 明显更高。

这说明:

单帧手指姿态更准确,并不必然产生更准确的全局轨迹。

世界坐标结果还会受到以下因素共同影响:

  • 相机坐标系中的三维平移;
  • 连续帧之间的速度一致性;
  • 长时间轨迹漂移;
  • SLAM 相机位姿误差。

HandFlow 的优势主要集中在全局轨迹和时间连贯性,而非所有单帧对齐指标。


Computational Efficiency

论文在单张 NVIDIA H100 80 GB 上测试 150 帧 HOT3D 序列:

Method Reconstruction SLAM Total Peak VRAM
Dyn-HaMR 288.58 s 16.21 s 304.79 s 1.1 GB
HaWoR 38.13 s 15.78 s 53.91 s 6.9 GB
HandFlow 3.19 s 16.21 s 19.40 s 13.1 GB

HandFlow 的核心重建速度约为:

1503.1947 FPS\frac{150}{3.19}\approx47\ \mathrm{FPS}

相比 HaWoR 的核心重建过程快约 12 倍。

不过,47 FPS 只计算 Flow Matching 重建部分。加入 SLAM 后,总耗时为 19.40 秒,其中约 84% 时间用于相机位姿估计。

HandFlow 的显存占用达到 13.1 GB,原因是多个时间窗口被并行送入网络以获得最大吞吐量。降低窗口并行度可以减少显存占用,但会牺牲运行速度。

Ablation Study

Condition Modalities

Setting MPJPE ↓ PA-MPJPE ↓ Accel ↓ F@5 ↑
Full 18.73 4.75 4.08 66.63
Image Only 22.86 4.82 4.61 65.67
Skeleton Only 26.66 8.47 7.08 13.42

视觉特征承担主要的姿态恢复任务,骨架条件补充全局位置和投影几何信息。

Denoiser Architecture

Setting MPJPE ↓ PA-MPJPE ↓ Accel ↓
Full Dual + Single Stream 18.73 4.75 4.08
Naive Cross-Attention 22.04 6.03 6.12
Only Dual-Stream 21.12 5.09 5.54
Only Single-Stream 19.80 4.92 4.69

Only Single-Stream 已经能够完成较强的双向 token 融合,完整模型进一步提升性能。Naive Cross-Attention 的下降最明显,说明真正关键的是条件 token 与 MANO token 之间充分的联合建模。

Initial Noise Sensitivity

HandFlow 从随机噪声开始生成,因此一个自然问题是:不同随机种子会不会产生明显不同的重建结果?

作者使用 10 个不同随机种子测试:

Metric Mean Range CV
PA-MPJPE 4.76 mm 0.025 mm 0.16%
RA-MPJPE 10.30 mm 0.104 mm 0.31%
W-MPJPE 38.02 mm 0.779 mm 0.82%
Acceleration 3.98 0.148 1.12%

不同初始噪声最终收敛到非常接近的结果。这里的“生成式”主要体现在使用生成模型和运动分布完成条件恢复,默认配置并不会产生高度多样化的多个候选运动。

Limitations

Occlusion and Out-of-view Are Conflated

cmask 使用 HaMeR 置信度判断当前帧是否可靠,但低置信度可能来自两种完全不同的情况:

  1. 手部仍在画面中,只是被部分遮挡;
  2. 手部已经完全离开画面。

第一种情况下,前后帧和运动先验可以帮助补全姿态。第二种情况下,视频中缺少任何当前手部位置证据,模型只能根据先验猜测。

HandFlow 无法显式区分这两种情况,也不会主动标记预测失败。

Dependence on Camera Intrinsics and SLAM

二维骨架射线、三维平移和世界坐标转换都依赖相机内参。

当内参未知时,ViPE 需要同时估计内参和相机轨迹。如果视频中的相机运动较少,几何约束不足,内参估计误差可能显著降低重建质量。

此外,HandFlow 本身没有直接生成世界坐标系中的手部轨迹。其世界坐标结果仍然通过:

Viworld=Tc2w,iVicameraV_i^{world} = T_{c2w,i}V_i^{camera}

计算,其中 Tc2w,iT_{c2w,i} 来自 ViPE-SLAM。

MANO Representation Bound

模型只在 MANO 参数空间工作,因此最终几何精度受到以下因素限制:

  • MANO 手型空间的表达能力;
  • 训练数据中 MANO 拟合标注的精度;
  • MANO 难以表达的局部皮肤形变;
  • 与物体接触时的细粒度表面变形。

HandFlow 没有直接生成高密度表面、接触场或隐式几何。

Dataset Generalization

模型在 DexYCB 和 HOT3D 的训练划分上训练,并在相同数据集的保留序列上测试。

现有实验能够验证:

  • 未见序列上的重建;
  • 不同遮挡比例下的鲁棒性;
  • 相机坐标和世界坐标精度。

现有实验尚未充分验证:

  • 完全跨数据集泛化;
  • 新相机内参和新成像域;
  • 长时间完全出画后的轨迹恢复;
  • 双手交互;
  • 新型机器人或可穿戴设备视角。

Engineering Constraints

当前官方配置还存在一些工程限制:

  • 模型在右手数据上训练,左手视频需要先镜像;
  • 最大吞吐配置需要约 13.1 GB 显存;
  • H100 上测得的速度不能直接等同于消费级显卡速度;
  • 当前 V1 开源仓库只包含推理和可视化代码;
  • 训练、数据预处理和评估代码仍列在后续发布计划中。

Conclusion

HandFlow 将单目 4D 手部重建表述为 MANO 参数空间中的条件生成问题。

其主要贡献包括:

  1. Rectified Flow Sequence Generation

    从高斯噪声直接生成完整 MANO 参数窗口,只需 3 个 ODE 步即可获得稳定结果。

  2. Visual-Skeletal Dual Conditioning

    密集图像特征提供姿态和外观信息,二维骨架射线提供位置和投影几何约束。

  3. Confidence-aware Continuous Masking

    根据检测置信度连续调整观测条件的强度,使低质量帧更多依赖时间上下文和运动先验。

  4. Flux-style Dual-stream Transformer

    在完整时间窗口内联合建模 MANO token 和条件 token,避免逐帧或自回归预测带来的误差累积。

  5. Velocity-blended Window Inference

    在 ODE 积分阶段融合重叠窗口速度,使长视频沿共享轨迹连续演化。

实验显示,HandFlow 在 DexYCB 上显著降低相机空间姿态误差,在 HOT3D 上进一步提升世界坐标轨迹精度和时间平滑性,并将 150 帧序列的核心重建耗时降低到 3.19 秒。

从方法层面看,HandFlow 最重要的启发是:

4D 手部重建的核心不只在于提高每一帧的姿态精度,还需要学习合理的手部运动分布,并让局部观测、时间先验和全局轨迹在同一个生成过程中共同约束结果。

同时,HandFlow 仍然依赖单帧 HaMeR 前端和外部 SLAM。未来若要构建真正端到端的世界坐标手部生成模型,还需要进一步联合建模:

  • 相机运动;
  • 手部全局运动;
  • 双手关系;
  • 手物接触;
  • 观测可见性;
  • 多假设轨迹及其置信度。


电波交流