【手部姿态估计】【论文精读】InterHand2.6M

本文提出InterHand2.6M,一个包含2.65万个标定的单手和交互手势图片的大型3D手部姿态数据集,以及用于单图像3D交互手势姿态估计的InterNet模型。数据集在多视角摄影棚拍摄,采用半自动标注方法提高效率。InterNet可估计左右手2.5D姿态及相对深度,以解决交互手势姿态估计的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Abstract】

双手交互是理解人类行为得到重要操作,然而,许多研究者集中于孤立的单手场景。因此我们首先提出了①大规模数据集:InterHand 2.6M ②baseline network,InterNet用于从Single image中估计3D交互手势,我们提出的InterHand包含2.。65万个标定的单手和交互手势图片。
(该论文所提出的创新点十分清晰,该论文是为了解决双手交互情境下手部姿态估计不准确的问题。基于此,本文提出了基础的baseline以及包含标注的双手交互数据集)

【Introduction】

之前的3D手部姿态估计方法都是针对单手姿态,主要方法多是给定一个裁剪后的手部图像,模型会估计手部关键点的3D位置。然而单手场景是有一定限制的,并不能涵盖所有的人类手部姿态,人类的动作主要是交互型的。为了解决这个问题,我们创建了一个大型数据集:InterHand 2.6M以及一个baseline InterNet。InterNet用于3D交互手势姿态估计。

InterHand2.6M是一个大规模RGB 3D手部姿态数据集,每一个手部序列包含单手和交互的左右手图像。InterHand是在一个精确准确的多视角摄影棚终拍摄的,该摄影棚配有80到140个高分辨率摄像机。至于3D关键点数据标注,使用了一个半自动方法:包括人工标注和自动标注。这种标注方法比纯手工标注效率更高,但标注精度与手工标注相当。

该论文所提出的InterNet网络可以估计从single image的3D单手以及交互手部姿态。我们设计的InterNet可以预测左右手,2.5D的左右手姿态以及相对右手的深度。左右手可以判断所输入的图像中的手是左手还是右手。因此,InterN

### 关于 InterHand2.6M 的 Verts 数据生成 InterHand2.6M 是一个大规模的手部交互姿态估计数据集,提供了丰富的手部三维信息。其中 `verts` 表示的是手部网格顶点坐标的数据结构。要生成这些 `verts` 数据,通常需要以下几个方面的支持: #### 1. **加载 InterHand2.6M 数据** 首先,需要通过官方提供的 API 或者自定义脚本加载 InterHand2.6M 数据集中的关键参数。该数据集中包含了相机参数、关节位置(joints)、以及可能的 SMPL-X 手模型参数。 ```python import numpy as np from interhand_data_loader import load_interhand_annotations annotations = load_interhand_annotations(data_path="path_to_dataset") # 加载注解文件[^3] ``` #### 2. **提取手部模型参数** 在 InterHand2.6M 中,手部的姿态可以通过 MANO 模型来表示。MANO 提供了一种基于线性混合蒙皮的方法,可以将骨骼姿态转换为具体的三角网格顶点坐标(即 `verts`)。因此,第一步是从注解中获取 MANO 参数。 ```python mano_params_left = annotations['mano']['left'] # 左手的 MANO 参数 mano_params_right = annotations['mano']['right'] # 右手的 MANO 参数 ``` #### 3. **使用 MANO 模型重建 verts** 接下来,利用 MANO 模型及其对应的 Python 实现库(如 PyTorch 版本的 MANO),输入上述参数即可得到 `verts` 数据。 ```python from manopth.manolayer import ManoLayer mano_layer = ManoLayer( side='right', # 'left' or 'right' center_idx=None, use_pca=True, root_rot_mode='axisang', flat_hand_mean=False ) betas = torch.tensor(mano_params_right['betas'], dtype=torch.float32).unsqueeze(0) # 形状参数 hand_pose = torch.tensor(mano_params_right['pose'], dtype=torch.float32).unsqueeze(0) # 姿态参数 vertices, joints = mano_layer(hand_pose, betas=betas) # 输出顶点和关节 verts = vertices.detach().cpu().numpy()[0] # 转换为 NumPy 数组 ``` 上述代码片段展示了如何从 MANO 参数生成 `verts` 数据[^4]。 #### 4. **可视化 verts 数据** 如果需要验证生成的 `verts` 是否正确,可以借助 Open3D 或 Matplotlib 进行简单的可视化操作。 ```python import open3d as o3d mesh = o3d.geometry.TriangleMesh() mesh.vertices = o3d.utility.Vector3dVector(verts) mesh.compute_vertex_normals() o3d.visualization.draw_geometries([mesh]) ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值