你有没有想过,一个机器人要学会"倒杯水"这样简单的动作,需要看多少段视频?
答案可能会让你吃惊:不是几百段,是几千小时。而且不能随便拍,得知道手在三维空间里到底怎么动的,手指怎么弯的,手离摄像头多远,摄像头自己又是怎么移动的。这些信息,普通视频压根不会告诉你。
这就是这篇论文要解决的问题。研究者们给它起了个挺形象的名字,InfiniHand,意思是"无穷之手"。听起来有点炫技,但背后的诉求其实很朴素:让计算机看一段第一人称视角的视频,就能算出手在真实世界里的三维位置和动作轨迹,而且要算得快、算得准。
这件事到底难在哪
先说清楚一个概念。
第一人称视角视频:也就是佩戴摄像头的人(或者机器人)自己视角拍下的画面,比如头戴式相机、智能眼镜拍的视频,你能看到自己的手在眼前忙活,但看不到自己的脸
这种视频现在到处都是。做饭的Vlog、健身教程、手工教学,甚至Meta的智能眼镜天天在录。但问题是,这些视频里的手,位置信息全是相对的。
你需要恢复两件事:一是手本身的三维姿态,就是每根手指弯曲的角度、手掌朝向;二是摄像头自己的运动轨迹,因为人戴着摄像头走来走去,画面里手的位置变化,一部分是手自己动了,一部分是摄像头动了,这两者得分开算。
以前的做法是把这两件事拆成两个独立系统。一个专门识别手的姿态,一个专门做SLAM(同步定位与地图构建,也就是通过视频推算摄像头自己在空间中的位置和运动轨迹)来算摄像头轨迹,最后把两边的结果拼在一起。
论文里提到的HaWoR就是这么干的,它用一套手部检测追踪系统,加上专门的相机空间手部重建网络,再加上DROID-SLAM和一个叫Metric3D的深度估计模型来算摄像头运动的真实尺度。
听起来很扎实,对吧?三套系统各司其职。但现实是,这种拼接式流水线有个致命问题:每一环都可能出错,而且错误会往下传。
手部检测这一环如果稍微抖动一下(比如某一帧没检测到手),后面的姿态估计就跟着乱;SLAM追踪如果累积了一点漂移,最后算出来的手在世界里的位置就整体偏了。三个系统串在一起,误差是相乘的,不是相加的。
这就好比你去一个陌生城市,先问路人A怎么走到地铁站,再问路人B地铁到目的地要坐几站,最后自己估算从地铁口走到具体门牌号要多久。如果A说错了方向,你后面所有的判断都建立在错误的起点上,哪怕B和你自己都算得很精确,最后走到的地方还是不对。如果不拆成三段,而是让一个人全程带你走,中途还能随时纠正方向,出错的概率会小很多。
除了误差累积,还有一个更现实的问题:算得慢。
三套系统跑一遍,计算量堆起来,很难做到实时。而且现有的手部姿态估计器,比如WiLoR和HaWoR,训练时用的第一人称视频数据其实不算多,论文里给的数字是不到1000小时。这意味着遇到复杂的手部遮挡、快速摇晃的镜头,这些模型容易翻车,因为它们"没见过"足够多这样的场景。
InfiniHand想解决的,就是这三个纠缠在一起的问题:拼接系统带来的误差累积、计算效率低、训练数据不够多样。
这篇论文的一个硬核底气,是它用了大约5000小时的第一人称视频数据做预训练,是同类工作的5倍以上。这个数字背后的意义,后面会细说。
把三件事塞进一个大脑里
InfiniHand最核心的设计思路,是不再把手部姿态估计和摄像头轨迹估计当成两个独立任务,而是用一个统一的神经网络架构,同时预测手的位置、手的MANO参数(一种标准化描述手部三维形状和姿态的参数化模型,用几十个数字就能重建出逼真的手部网格)、以及摄像头的轨迹。
这个统一架构是建立在一个叫LingBot-Map的流式三维重建基础模型之上的。
流式(Streaming)处理:指视频不是一次性全部读入再统一计算,而是像水流一样一帧一帧、或者一小段一小段地送进模型,模型边接收边计算边输出结果,不需要等到整段视频结束
这种流式设计的好处显而易见:视频可以是任意长度,甚至是实时摄像头画面,模型不需要"看完全片"才能给出答案。
具体是怎么运作的呢?论文把整个流程拆成了两个阶段。
第一阶段:先学会看懂相机坐标系里的手
在这个阶段,模型的任务相对单纯:给定一帧图像,先找到左手和右手分别在哪,然后精确重建出这两只手在摄像头坐标系下的三维姿态,不涉及世界坐标系,也不涉及摄像头自己怎么动的。
这一步的关键设计是"手部定位"模块。模型会用一个叫DPT(Dense Prediction Transformer,一种能把图像特征逐步解码成像素级别预测结果的网络结构)的解码器,从骨干网络提取的全图几何特征里,预测出左右手各自的分割掩码(也就是标出哪些像素属于左手、哪些属于右手的二值图)。
有意思的是,这个解码器不是从零训练的,而是从一个预训练好的深度估计头初始化的,只是把最后输出深度值的那一层换成了预测手部掩码的层。这相当于告诉模型:"你已经会看懂空间几何结构了,现在换个任务,用同样的眼光去找手在哪。"
找到手之后,模型会把这块区域裁剪出来,同时用两路特征做融合:一路是从全图几何特征里裁出来的局部几何信息,另一路是专门用WiLoR编码器提取的、聚焦手部外观细节的视觉特征。这两路信息拼在一起,才能既保证空间位置准,又能捕捉手指细微动作这样的视觉细节。
这里藏着一个不太起眼但很关键的设计,叫LSP,最小二乘投影(Least-Squares Projection)。
模型预测手部的深度(也就是手离摄像头多远)相对靠谱,但手在左右、上下方向上的具体位置(横向平移)单靠回归预测容易不准。于是研究者的做法是:固定住预测出来的深度值不变,让手部关键点重新投影回图像后,去对齐模型另外预测出来的二维关键点位置,通过求解一个最小二乘问题反推出横向和纵向的平移量。
论文的消融实验证实了这个设计的价值:如果去掉LSP,直接用网络回归位移,2D投影误差EPE-p会从23.13毫米左右升高到26.30毫米,误差明显变大。
这就像你蒙着眼睛伸手去够桌上的一个杯子,光凭手臂的运动记忆去估计杯子的方向和距离,很容易偏。但如果你能睁一只眼瞄一眼杯子的大致轮廓,再用手臂记忆去校准最后的微调距离,命中率会高很多。LSP做的就是这件事:让二维图像里能看得准的部分(关键点投影位置)去校正三维空间里不太靠谱的那部分(横向位移)。
第二阶段:让模型一边看视频一边算出整个世界的样子
第一阶段解决的是单帧图像里手在相机坐标系下的姿态。但真正难的是第二阶段:怎么把连续视频里的每一帧手部姿态,都统一到同一个"世界坐标系"里,同时还要算出摄像头自己走过的轨迹。
这里就要提到一个核心机制,GCA,几何上下文注意力(Geometric Context Attention)。
这个机制维护了一套"流式记忆状态",里面包含三种东西:锚点特征(用来建立一个稳定的参考坐标系,相当于给整个场景钉一个坐标原点)、最近若干帧的密集特征窗口(捕捉细节和局部对应关系)、以及压缩后的轨迹记忆(保存更久远之前帧的历史上下文,即使原始的密集特征已经被丢弃了)。
论文里训练用的视频片段结构是"4+16×2",也就是4个锚点帧加两段连续的16帧窗口。这个记忆状态会在同一段视频的相邻窗口之间持续传递,但遇到新的独立片段时会重置。
有了这套记忆机制,模型就能一边流式处理新进来的帧,一边不断更新自己对整个场景空间结构的理解,而不需要每次都从头重新计算整段视频的几何关系。
这就像你走进一个陌生的大型商场找卫生间。如果你没有任何记忆机制,每走一步都要重新观察四周、重新判断方位,走十步和走一百步付出的认知努力是一样多的,效率极低。但如果你脑子里始终保留着"入口在哪、扶梯在哪个方向"这些关键锚点信息,同时对刚经过的几个店铺保持清晰记忆,稍早经过的地方只记个大概方向,你就能一边走一边持续判断自己的位置,不需要反复从零定位。GCA机制做的正是这种"锚点+近期细节+远期概要"的三层记忆分配。
拿到相机坐标系下的手部姿态和摄像头轨迹之后,最后一步很直接:用摄像头从相机坐标到世界坐标的变换矩阵,把每只手的全局朝向和位移都转换到统一的第一帧世界坐标系下。这样,不管视频拍了多久、摄像头怎么移动,所有帧里的手最终都能落在同一个连贯的三维世界里。
补一针:稀疏光束法平差
流式记忆虽然聪明,但它有个天然的局限:太久远的历史信息会被压缩甚至丢弃,模型没法回头去精细核对很早之前的观测结果,这会导致长视频里出现累积漂移。
为了解决这个问题,论文引入了一个轻量级的"稀疏光束法平差"(Bundle Adjustment,简称BA,是一种通过联合优化多帧相机姿态和场景几何来减少累积误差的经典技术)后处理模块,用的是DROID-SLAM的后端。
这里的巧思在于"稀疏"两个字。它不是对整个历史帧都做优化,而是维护一个二进制关键帧池:新来的帧先标记为"未处理"状态存进池子,一旦池子超过容量上限,就按固定间隔从最老的帧开始抽样,把这批被抽中的帧送去做BA精修,精修完之后再把它们的标记位翻转,如果原本是"未处理"就变成"已处理并保留",如果原本已经是"已处理"就直接从池子里退休移除。
消融实验的数据很能说明问题:去掉这个稀疏BA模块,相机空间的各项指标几乎没变化,但世界空间的W-MPJPE(一种衡量手部三维关节误差、不做任何对齐的严格指标)从59.21毫米直接跳到80.48毫米。这说明流式记忆本身能保证局部的准确性,但长距离的全局一致性,还是得靠这种周期性的"回头核对"来兜底。
这就像你在写一篇很长的论文,一边写一边脑子里记着刚才几段的逻辑,能保证局部段落通顺连贯。但写到第五万字的时候,你很难记清楚第一章到底论证到了哪一步。这时候你需要偶尔停下来,翻回去重新读一遍开头几章,检查前后逻辑是否还对得上。如果从来不做这种回头检查,写到最后,整篇论文很可能在大方向上已经偏离了最初的论点,即便每一段单独读起来都没问题。
数据从哪来,又是怎么被"清洗"出来的
一个模型能不能打,很大程度上取决于喂给它吃的数据够不够好。
InfiniHand的训练数据来自九个公开的第一人称手部交互数据集,包括ARCTIC、HOT3D、EgoDex、DexYCB、HO3D、H2O3D、EgoVerse、EgoLive和Xperience-10M,汇总起来大约有5000小时的视频。
这个数字值得停下来感受一下。前面提到过,现有的WiLoR和HaWoR这类模型,训练数据量普遍在1000小时以内。InfiniHand用了5倍以上的数据规模去打这场仗,这本身就是一种"用规模换泛化能力"的策略选择。
数据规模大不代表数据质量好,这中间还有一道很硬核的清洗工序。
论文提到,某些数据源的标注和视频里实际看到的手部状态对不上,尤其是EgoDex这个数据集问题比较明显。为了揪出这些"睁眼说瞎话"的标注,研究者用了一个叫Sapiens 2的模型去独立估计视频里的二维手部关键点,再拿这个估计结果去和数据集自带的标注(把三维MANO关键点投影到二维图像上得到的位置)做比对。
如果两者对不上,说明标注很可能是错的。具体做法是:先过滤掉置信度低的检测、无效的左右手对应关系,以及不符合人体解剖学常理的姿态;然后针对每只手,把关节级别的像素误差按边界框大小归一化,逐帧取平均,再用整段视频的第90百分位误差作为最终判断标准;只要有一只手的误差超过阈值,整段视频就被扔掉,模棱两可的情况留给人工复核。
这套流程最终筛掉了大约30%到40%的候选训练数据。
这个比例说明什么?说明公开数据集里真的存在相当比例的"脏数据",如果不做这一步清洗,直接拿去训练,模型很可能学到一堆错误的手部姿态先验,反而拖累整体表现。这就好比你想学做菜,找了一百本菜谱,但其中三四十本的步骤和最终成品图对不上号,如果照着错的菜谱一路学下去,做出来的菜自然是不对的,甚至可能把错误的调味比例当成常识记下来。宁可先花时间把菜谱筛一遍,剩下六七十本虽然数量少了,但至少每一本都靠谱。
清洗完的数据被组织成两批:第一阶段用所有有效的相机空间手部标注,第二阶段则只用那些同时带有摄像头轨迹标注的子集,用来做世界空间的联合监督训练。
结果说话:准确率和速度双双拿下
理论说了一大堆,最终还是要看数字。
在相机空间的评测上,研究者选了四个基准数据集:ARCTIC、HOT3D、EgoDex和HOI4D,对比了包括InterWild、HaMeR、Hamba、WildHands、OmniHands、WiLoR、Dyn-HaMR、HaWoR、ViDiHand在内的一众现有方法。
InfiniHand的核心指标PA-p(也就是经过Procrustes对齐后的三维关节误差,数值越低越准)在全部四个数据集上都拿到了最优。相比此前表现最好的ViDiHand,在ARCTIC上误差从9.82毫米降到7.72毫米,降幅达21.4%;在EgoDex上更夸张,从17.22毫米降到7.29毫米,降幅高达57.7%。
在世界空间的评测上,对比对象换成了HaWoR、Dyn-HaMR,以及一个叫WiLoR-SLAM的组合方案(把WiLoR的手部预测结果,用DROID-SLAM算出的摄像头轨迹、再乘以Metric3D v2估计的真实尺度,转换到世界坐标系)。
关键指标W-MPJPE(不做任何对齐的世界空间关节误差,最能反映真实定位精度)上,InfiniHand在ARCTIC上比WiLoR-SLAM降低了10.1%,在EgoDex上比Dyn-HaMR降低了63.3%,从78.41毫米降到28.77毫米。
除了准确率,效率也是这篇论文反复强调的卖点。InfiniHand的推理速度达到11.19帧每秒,对比WiLoR-SLAM的8.53帧每秒、HaWoR的5.48帧每秒、Dyn-HaMR的0.81帧每秒,是HaWoR的两倍多。
这个速度提升不是靠简单的模型瘦身,而是靠一套流水线式的并行调度实现的:一个worker负责处理即将到来的16帧窗口的特征提取,另一个worker同时在解码上一个窗口的手部和摄像头预测结果,两者并行推进,减少了特征提取和结果解码之间的空闲等待时间。如果需要做稀疏BA精修,还会有第三个worker在后台单独跑,只在关键帧池超过容量阈值时才触发,不阻塞主流程。
拆开来看每个部件的贡献
论文在ARCTIC的34个测试场景上做了一整套消融实验,逐个拆掉某个组件,看看指标会掉多少。这个过程挺有意思,相当于把整台机器拆开检查每个零件到底在起什么作用。
去掉WiLoR外观特征,只留下几何特征,相机空间的MP-p误差(根关节相对三维误差)直接从17.09毫米翻倍到33.31毫米。说明单靠几何结构信息是不够的,手指的细节纹理、光影变化这些外观信息对精细重建至关重要。
替换掉LSP,改用网络直接回归平移量,EPE-p投影误差从23.13毫米升到26.30毫米,前面已经提过。
去掉稀疏BA,世界空间的W-MPJPE从59.21毫米跳到80.48毫米,但相机空间指标几乎不变,说明BA专门负责修正长程漂移,不影响单帧的局部精度。
去掉整个第二阶段训练(也就是不做联合手部和摄像头的流式训练),世界空间误差直接爆炸,W-MPJPE从59.21毫米飙升到185.76毫米,WA-MPJPE从43.59毫米升到111.05毫米,但相机空间指标变化很小。这个结果特别说明问题:只学会在单帧图像里把手重建准是不够的,如果不让模型学会同时协调摄像头运动和手部动作之间的关系,世界坐标系里的整体定位会完全跑偏。
用HaWoR现成的手部掩码替换掉自己训练的定位掩码头,检测指标暴跌,PA-p从7.72毫米飙升到25.50毫米。这说明精准的手部定位是后续一切重建工作的地基,地基不稳,上面盖得再精细也没用。
这些消融结果拼在一起,勾勒出InfiniHand设计里每个部件各自不可替代的作用:定位负责找准手在哪,外观特征负责重建细节,LSP负责校正平移,联合训练负责协调手和摄像头的关系,BA负责修正长程漂移。少了任何一环,某个特定维度的表现都会显著下滑。
还没解决的问题
论文自己也坦承了几个局限,这一点挺难得的。
第一个问题是尺度恢复。InfiniHand底层依赖的LingBot-Map框架本身不具备真实的度量尺度感知能力,需要额外的后处理对齐模型来补足,而这个辅助模型自身的估计误差,会不可避免地传导到最终预测的手部位置和运动轨迹上。
第二个问题是数据覆盖不够。现有的高质量第一人称数据集里,涉及复杂大幅度双手交互、剧烈摄像头运动的场景仍然比较稀缺,这限制了模型在快速视角切换、严重遮挡、手时隐时现这类极端野外场景下的泛化能力。
第三个问题更隐蔽一些,涉及监督信号本身的质量。很多单目重建流程生成的标注,天然带有随时间变化的尺度漂移,这会造成训练目标在时间维度上不一致,即便做了全局尺度对齐,长序列的轨迹精度和时间平滑性依然会受影响。
这几个问题说明,即便5000小时的数据规模已经相当可观,"数据够不够多"和"数据够不够干净、够不够多样"仍然是两个不完全重合的问题,规模解决不了所有的坑。
写在后面
读完这篇论文,最触动我的其实不是那些漂亮的数字对比,而是那个30%到40%的数据清洗淘汰率。
这个数字很诚实地揭示了一个行业现状:公开数据集的标注质量远没有我们想象的那么可靠,尤其是那些依赖自动化流程(比如从关键点拟合MANO参数)生成的标注,本身就带着系统性偏差。这提醒我一件事,做AI这行,很多时候拼的不是谁的模型架构更花哨,而是谁愿意花笨功夫把数据质量的地基打扎实。
另一个让我反复琢磨的地方,是"流式记忆+稀疏BA"这个组合本身透露出的一种设计哲学:纯粹的端到端学习和传统的显式几何优化,并不是非此即彼的选择。InfiniHand没有完全抛弃SLAM那套光束法平差的思路,而是把它压缩成一个轻量级、按需触发的补丁,只在长程漂移积累到一定程度时才介入。这种"能学习的地方尽量学习,学不好的地方留一个显式优化的后门"的思路,或许比一味追求"纯粹端到端"更实际。
论文提到的应用场景也让我想了挺久:把这些第一人称视频转换成结构化的三维手部动作数据,最终是为了给机器人训练提供更丰富的示范数据,也就是所谓的"人到机器人的动作迁移"。这意味着,你今天随手拍的一段做饭、组装家具的Vlog,理论上未来都可能成为某个家务机器人学习"怎么拧瓶盖"的教材。这个链条挺长的,从一段普通视频,到精确的三维手部轨迹,再到机器人的模仿学习,每一环都需要像InfiniHand这样的工作去把"看得懂"这件事做扎实。
下次你戴上智能眼镜或者拿起手机拍视频时,也许可以想一想:如果有一天,你随手记录的每一个动作,都能被精确地拆解成三维空间里的坐标和轨迹,那些原本转瞬即逝的生活片段,会不会真的变成教会机器理解这个世界的一课?
Q&A
Q1:InfiniHand是什么?
A:InfiniHand是一个能从第一人称视频中直接估计手部三维姿态和摄像头运动轨迹的流式端到端模型,它用统一架构同时预测手部位置、MANO参数和相机轨迹,摆脱了传统方法依赖多个独立系统拼接的做法。
Q2:InfiniHand相比HaWoR等方法有什么优势?
A:InfiniHand在准确率上大幅领先,比如在ARCTIC数据集上PA-p误差降低21.4%,同时推理速度达到11.19帧每秒,是HaWoR的两倍以上,还用了约5000小时的第一人称视频做预训练,规模是同类方法的5倍以上。
Q3:InfiniHand训练用的数据是怎么处理的?
A:研究者汇总了ARCTIC、HOT3D、EgoDex等九个公开数据集共约5000小时视频,并用Sapiens 2模型交叉验证标注质量,最终清洗掉了30%到40%质量不合格的数据,才用于两阶段训练。







