Hand Visibility Detector: Per-Keypoint Visibility Estimation for Hands
Ryosei Hara, Masashi Hatano, Rintaro Yanagi, Atsushi Hashimoto, Takuma Yagi, Mariko Isogawa
cs.CV
2026-08-12
逐关节手部可见性首次被立成独立任务:冻结 WiLoR 主干配轻量 head,HInt 上 mAP 0.931 超基线 3.4 点,加权三角化最多降 10% 重投影误差。
手部姿态估计(hand pose estimation,HPE)是 AR/VR 和机器人交互的基础能力,但现有方法大多只输出每个关节的 2D/3D 位置,不告诉你「这个位置是真的看到了,还是被遮挡后猜出来的」。在遮挡普遍存在的手部图像里(手指互相挡、被握着的物体挡、画面截断),这个区别很关键:下游任务把一个不可见关节的坐标当真,误差就会沿着整只手传播。
visibility(可见性,即某个关节在图像里是否直接可见)此前只被当作辅助信号,用来帮主模型把姿态估得更准。这篇把它拎出来当独立任务做,给每个关节单独输出一个 [0,1] 的可见性置信度,并称这是第一篇系统研究「逐关节手部可见性估计」的工作。
模型分两部分:一个冻结的 ViT backbone(来自预训练好的 HPE 模型 HaMeR 或 WiLoR),加上一个只 0.83M 参数的轻量 visibility head(占整个 631M 模型的 0.131%)。
冻结 backbone 是核心选择。判断一个被遮挡的关节,单看它那个位置没意义,得结合整只手的结构去推断。大规模预训练 HPE 模型在数百万张遮挡场景上学会了还原 3D 手型,正好提供这种结构先验。冻结保住了先验;消融显示一旦解冻 fine-tune WiLoR,mAP 从 0.931 掉到 0.622,任务专属的微调反而把特征弄坏了。
选 backbone 也讲究:手部专用模型(HaMeR、WiLoR)比通用图像模型强,连 840M 参数的 DINOv3 都被 631M 的 WiLoR 压过。visibility head 用 1×1 卷积压维,接一个 Gated Attention Unit(GAU,门控注意力单元,建模空间位置间的全局依赖),再吐到 21 个 MANO 关节通道做空间池化取 logit。去掉 GAU,mAP 从 0.931 掉到 0.887。损失就是普通的逐关节二分类交叉熵。训练只 2.5 小时、单卡 H200、约 10GB 显存。
在带逐关节可见性标注的 HInt 数据集(25,273 训练帧、5,374 评估帧)上:
| 方法 | mAP | F1 |
| Kim et al. (2021) | 0.895 | 0.858 |
| Contact4D (2026) | 0.897 | 0.860 |
| 本文 | 0.931 | 0.896 |
比最强基线高 3.4 个 mAP 点。binarization 阈值在 0.30.7 区间内 F1 都稳定在 0.88 以上,峰值在 0.5,对阈值不敏感。
下游验证是多视图三角化(multi-view triangulation):用每个关节的可见性当权重去加权三角化,在 DexYCB、HO3D、H2O 三个数据集上,重投影误差(reprojection error,把重建出的 3D 关节投回各视角算像素误差)的中位数、均值、四分位距全面低于不加权和按检测置信度加权两种方案。提升最大在 HO3D,它视图少、物体遮挡重,均值重投影误差降 10.1%。
对做手部相关应用的工程团队,这是一个即插即用的可靠性开关:姿态估计器吐出的每个关节坐标,现在可以配上一个「这个能不能信」的分数,下游可以据此降权或丢弃。批量标注 3D 手部姿态的多视图管线是这类方法最直接的受益场景,可见性加权三角化能实打实降低重建误差。代码已开源。
对纯单目、无多视图条件的场景,这篇的下游收益没有直接验证;它更大的贡献是把「可见性」从一个内部辅助量正式立成一个被独立评估的任务。
作者只承认一个:当前逐帧处理,缺时序一致性,后续要做视频输入。
读下来还有几处没说透。评估集中在 HInt 一个数据集,跨域泛化(不同相机、不同人群、不同遮挡类型)没有报告。下游 10.1% 的提升是像素级重投影误差,不是某个最终任务(抓取、手势识别)的精度提升,「误差降了 10%」离「下游更好」还隔着一步。冻结 backbone 意味着可见性估计的上限被 HaMeR/WiLoR 的姿态先验封死,换更强的 HPE 模型会怎样没测。