File size: 30,149 Bytes
8aabba6 8d93a57 8aabba6 84afe80 8aabba6 84afe80 8aabba6 8d93a57 8aabba6 8d93a57 8aabba6 8d93a57 8aabba6 1a36f9f 8aabba6 1a36f9f 8aabba6 1a36f9f 8aabba6 1a36f9f 8aabba6 1a36f9f 8aabba6 1a36f9f 8aabba6 1a36f9f 8aabba6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 | #!/usr/bin/env python3
"""生成 data/datasets.json。改数据集信息就改这个文件,然后重新运行:
python tools/make_data.py
"""
import json
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
TEAM = "https://yangzijing-nine-source-hand-data-browser.static.hf.space"
T_WILOR = {"label": "团队图册:WiLoR 14 源 + 合成数据", "url": f"{TEAM}/hand_dataset_browser_20261013/index.html"}
T_EGO = {"label": "团队图册:第一人称具身数据集", "url": f"{TEAM}/egocentric_embodied_datasets_20261020/index.html"}
T_2D = {"label": "团队图册:2D 数据集", "url": f"{TEAM}/hand_2d_dataset_browser_20261013/index.html"}
T_VID = {"label": "团队视频:九源 MANO GT 叠加(20s)", "url": "https://huggingface.co/datasets/yangzijing/nine-source-hand-data-review-videos-20s/tree/main"}
def arxiv(i, label="论文"):
return {"label": f"{label} arXiv:{i}", "url": f"https://arxiv.org/abs/{i}"}
meta = {
"title": "SOMA 手部数据图谱",
"updated": "2026-11-02",
"goal": "从单目 RGB 恢复 SOMA hand 的 shape 与 pose:按数据来源和标注方法整理可用的手部数据集。",
"sources": [
{"id": "ego", "name": "第一视角", "desc": "头戴或胸前相机拍的真实视频"},
{"id": "egoexo", "name": "第一视角 + 外视角", "desc": "同步的头戴相机和固定相机"},
{"id": "exo", "name": "外视角多相机", "desc": "棚内固定多相机,没有头戴视角"},
{"id": "scan", "name": "扫描仪", "desc": "静态手势的多相机三维扫描"},
{"id": "wild", "name": "野外图像 / 视频", "desc": "网络或日常拍摄,没有标定装置"},
{"id": "synth", "name": "合成渲染", "desc": "渲染或重光照生成的图像"},
{"id": "norgb", "name": "无 RGB", "desc": "只有动捕、事件相机或黑白相机"},
],
"methods": [
{"id": "scan", "name": "三维扫描配准", "short": "扫描",
"steps": ["多相机扫描仪拍静态手势", "重建亚毫米级网格", "关键点三角化", "配准 MANO"],
"trust": "最高。直接测得手的表面,是目前最可靠的 shape 真值。",
"issues": "只有静态手势,没有手物交互,也没有第一视角。",
"route": "R6"},
{"id": "marker", "name": "光学 marker 动捕 + 拟合", "short": "光学动捕",
"steps": ["手上贴反光 marker", "Vicon / OptiTrack 跟踪", "逐人标定 shape", "拟合 MANO 或 SMPL-X"],
"trust": "高。shape 逐人标定,pose 不受相机遮挡影响。",
"issues": "marker 会出现在 RGB 里;人数通常很少;重遮挡时 marker 丢失。",
"route": "R1"},
{"id": "rgbd", "name": "多视角 RGB-D 拟合", "short": "RGB-D 拟合",
"steps": ["多台 RGB-D 同步拍摄", "2D 关键点(人工或模型)+ 深度", "多视角联合优化", "拟合 MANO,人工核验"],
"trust": "中。受深度噪声和 2D 精度限制,shape 可用但偏粗。",
"issues": "物体遮挡时手指误差大;HOnnotate 一类方法依赖初始化。",
"route": "R1"},
{"id": "mvkp", "name": "多视角关键点三角化", "short": "关键点三角化",
"steps": ["多相机 RGB", "2D 关键点(人工或模型)", "三角化得到 3D 关键点", "可选:拟合 MANO"],
"trust": "中低。shape 只由关键点约束;只给关键点时没有 shape。",
"issues": "模型预标注会带入 HaMeR 等方法的偏差。",
"route": "R1 / R3"},
{"id": "device", "name": "设备追踪", "short": "设备追踪",
"steps": ["头显、手套或 IMU", "设备内置手部追踪", "输出关节或设备自带手模型"],
"trust": "低。精度依赖设备,通常没有公开误差。",
"issues": "关节定义因设备而异,需要逐个对齐。",
"route": "R3"},
{"id": "synth", "name": "合成渲染", "short": "合成",
"steps": ["参数化手 + 动作库", "渲染(光照、材质、相机)", "直接导出真值"],
"trust": "真值精确,但 shape 分布取决于采样方式。",
"issues": "外观和光照与真实图像有域差。",
"route": "R1 / R2"},
{"id": "manual2d", "name": "人工 2D 标注", "short": "人工 2D",
"steps": ["图像", "模型预标注(可选)", "人工标注或修正 2D 关键点"],
"trust": "没有 3D 信息,只提供 2D 监督。",
"issues": "遮挡点的标注口径不一。",
"route": "R4"},
{"id": "pseudo", "name": "单目模型伪标签", "short": "伪标签",
"steps": ["单目视频", "HaMeR 或自研管线预测 MANO", "可选:修复与筛选"],
"trust": "最低。不能当 shape 真值,只适合弱监督或预训练。",
"issues": "继承预测模型自身的系统偏差。",
"route": "R7"},
],
"tiers": [
{"id": "S1", "name": "扫描配准", "desc": "直接测得表面"},
{"id": "S2", "name": "动捕逐人标定", "desc": "marker 约束的逐人 shape"},
{"id": "S3", "name": "RGB-D 拟合", "desc": "深度约束,偏粗"},
{"id": "S4", "name": "关键点拟合", "desc": "只靠关键点约束"},
{"id": "S5", "name": "伪标签", "desc": "不可作为 shape 真值"},
{"id": "SY", "name": "合成精确", "desc": "精确,但分布看采样"},
{"id": "-", "name": "无 shape", "desc": "只有关节或 2D"},
],
"statuses": [
{"id": "used", "name": "已在使用", "desc": "九源、WiLoR 14 源或基准中已经用到"},
{"id": "surveyed", "name": "团队已调研", "desc": "已在团队图册中,尚未进训练"},
{"id": "retired", "name": "不再使用", "desc": "当前不再使用"},
{"id": "p0", "name": "P0 新增", "desc": "建议优先接入"},
{"id": "p1", "name": "P1 新增", "desc": "P0 之后接入"},
{"id": "p2", "name": "P2 新增", "desc": "有余力时接入"},
{"id": "own", "name": "自采", "desc": "我们自己的采集"},
{"id": "no", "name": "不建议", "desc": "不满足真实 RGB 或真值条件"},
],
"routes": [
{"id": "R0", "name": "原生 SOMA", "from": "SOMA 拟合结果", "how": "直接使用。", "shape": True},
{"id": "R1", "name": "MANO → SOMA", "from": "MANO 参数或网格",
"how": "用 SOMAHandLayer 的 MANO 后端映射到 SOMA 拓扑,再重拟合 SOMA 原生 20 维 identity 和 pose;按数据集统计顶点残差,残差大的帧不监督 shape。",
"shape": True},
{"id": "R2", "name": "SMPL-X → SOMA", "from": "SMPL-X / SMPL-H",
"how": "取手部 MANO 部分走 R1;或用 SOMA-X 的 SMPL-X 身体后端整体转换。手型跟随身体 shape,分布偏窄。",
"shape": True},
{"id": "R3", "name": "3D 关键点 → SOMA pose", "from": "21 / 25 点 3D 关节",
"how": "先定 MANO 21 点(指尖为网格顶点)与 SOMA 关节的对应,只拟合 pose;shape 固定,不参与监督。",
"shape": False},
{"id": "R4", "name": "2D 关键点", "from": "2D 关键点",
"how": "不转换。训练时用重投影损失监督。",
"shape": False},
{"id": "R5", "name": "MHR → SOMA", "from": "MHR 参数",
"how": "SOMAHandLayer 原生支持 MHR 后端,可直接映射。SAM 3D Body 输出 MHR,可当野外图像的伪标签教师。",
"shape": True},
{"id": "R6", "name": "扫描 → SOMA", "from": "扫描网格",
"how": "直接把 SOMA 原生 shape + pose 拟合到扫描网格,是最好的 shape 监督和评测来源。",
"shape": True},
{"id": "R7", "name": "伪标签", "from": "预测的 MANO",
"how": "可走 R1 转换,但只作弱监督或预训练,不监督 shape。",
"shape": False},
],
"teamLinks": [T_WILOR, T_EGO, T_2D, T_VID],
}
D = []
def add(**kw):
kw.setdefault("tags", [])
kw.setdefault("links", [])
kw.setdefault("team", [])
kw.setdefault("risk", "")
kw.setdefault("subjects", "")
kw.setdefault("scale", "")
kw.setdefault("year", "")
kw.setdefault("rig", {})
D.append(kw)
# ---------- 已在使用 ----------
add(id="arctic", name="ARCTIC", year="CVPR 2023", status="used", tags=["九源", "WiLoR 14 源", "基准"],
source="egoexo", method="marker", gt="MANO + SMPL-X", tier="S2", route="R1",
camera="8 个固定 RGB + 1 个第一视角 RGB", rig={"ego": True, "exo": 8},
subjects="10 人", scale="约 210 万张图,339 个序列",
fills="双手操作铰接物体,带第一视角和光学真值。",
risk="人数少,shape 分布窄。",
links=[arxiv("2204.13662")], team=[T_WILOR, T_VID])
add(id="hot3d", name="HOT3D", year="CVPR 2025", status="used", tags=["九源", "WiLoR 14 源", "基准"],
source="ego", method="marker", gt="MANO / UmeTrack", tier="S2", route="R1",
camera="Aria RGB 鱼眼 + Quest 3 黑白", rig={"ego": True, "fisheye": True},
subjects="19 人", scale="370 万张以上,约 833 分钟",
fills="真实第一视角鱼眼数据,光学动捕真值。",
risk="我们的模型在这里 RR 偏差大,先核对裁剪和去畸变与相机模型是否一致。",
links=[{"label": "项目主页", "url": "https://facebookresearch.github.io/hot3d/"}], team=[T_WILOR, T_VID])
add(id="h2o", name="H2O", year="ICCV 2021", status="used", tags=["九源", "基准"],
source="egoexo", method="rgbd", gt="MANO", tier="S3", route="R1",
camera="5 台 Azure Kinect RGB-D,其中 1 台头戴", rig={"ego": True, "exo": 4, "depth": True},
subjects="4 人", scale="571,645 张图,184 个序列",
fills="头戴相机与 Femto Bolt 同一传感器族,相机域最接近我们的采集。",
risk="人数很少。",
links=[arxiv("2104.11181")], team=[T_VID])
add(id="hoi4d", name="HOI4D", year="CVPR 2022", status="retired", tags=["九源"],
source="ego", method="rgbd", gt="MANO", tier="S3", route="R1",
camera="头戴 RGB-D", rig={"ego": True, "depth": True},
subjects="9 人", scale="约 240 万帧,4,000 个序列",
fills="第一视角的类别级手物交互。",
risk="右手偏置明显,左手只占约 10%。",
links=[arxiv("2203.01577")], team=[T_VID])
add(id="dexycb", name="DexYCB", year="CVPR 2021", status="used", tags=["九源", "WiLoR 14 源"],
source="exo", method="rgbd", gt="MANO", tier="S3", route="R1",
camera="8 台 RGB-D", rig={"exo": 8, "depth": True},
subjects="10 人", scale="约 58.2 万张图,1,000 个序列",
fills="抓取 YCB 物体,人工多视角 2D 加深度拟合。",
links=[arxiv("2104.04631")], team=[T_WILOR, T_VID])
add(id="ho3d", name="HO3D v3", year="CVPR 2020", status="used", tags=["九源", "WiLoR 14 源"],
source="exo", method="rgbd", gt="MANO", tier="S3", route="R1",
camera="1 到 5 台 RGB-D", rig={"exo": 5, "depth": True},
subjects="10 人", scale="103,462 张图",
fills="单手与物体交互,HOnnotate 联合拟合。",
links=[arxiv("1907.01481")], team=[T_WILOR, T_VID])
add(id="h2o3d", name="H2O3D", year="2022", status="used", tags=["WiLoR 14 源"],
source="exo", method="rgbd", gt="MANO", tier="S3", route="R1",
camera="5 台 RGB-D", rig={"exo": 5, "depth": True},
subjects="待核", scale="76,340 张图,85 个序列",
fills="双手与物体交互。",
team=[T_WILOR])
add(id="interhand", name="InterHand2.6M", year="ECCV 2020", status="used", tags=["WiLoR 14 源"],
source="exo", method="mvkp", gt="MANO", tier="S4", route="R1",
camera="棚内多相机 RGB", rig={"exo": 12},
subjects="待核", scale="5 fps 版 2,590,347 张",
fills="双手交互和丰富的手指姿态。",
links=[arxiv("2008.09309")], team=[T_WILOR])
add(id="reinterhand", name="Re:InterHand", year="NeurIPS 2023", status="used", tags=["WiLoR 14 源"],
source="synth", method="mvkp", gt="MANO", tier="S4", route="R1",
camera="真实动作重光照渲染,含第一视角", rig={"synth": True, "ego": True},
scale="1,526,795 张图,有效 147,745 帧",
fills="真实双手动作配多样光照,含第一视角渲染。",
team=[T_WILOR])
add(id="freihand", name="FreiHAND", year="ICCV 2019", status="used", tags=["WiLoR 14 源"],
source="exo", method="mvkp", gt="MANO", tier="S4", route="R1",
camera="棚内多相机,绿幕换背景", rig={"exo": 8},
subjects="32 人", scale="训练 130,240 张,测试 3,960 张",
fills="单手姿态与 shape 的经典基准。",
links=[arxiv("1909.04349")], team=[T_WILOR])
add(id="mtc", name="MTC", year="CVPR 2019", status="used", tags=["WiLoR 14 源"],
source="exo", method="mvkp", gt="3D 关键点", tier="-", route="R3",
camera="Panoptic 棚内多相机", rig={"exo": 12},
subjects="40 人", scale="清洗后约 11.1 万个手样本",
fills="全身动作中的手,视角多样。",
links=[arxiv("1812.01598")], team=[T_WILOR])
add(id="bedlam", name="BEDLAM", year="CVPR 2023", status="used", tags=["WiLoR 14 源"],
source="synth", method="synth", gt="SMPL-X", tier="SY", route="R2",
camera="合成渲染,非第一视角", rig={"synth": True},
scale="10,450 个序列,约 160 万张,约 15 小时",
fills="全身场景中的手,背景与光照多样。",
risk="手型跟随 SMPL-X 身体 shape,分布偏窄。",
links=[arxiv("2306.16940")], team=[T_WILOR])
add(id="rhd", name="RHD", year="ICCV 2017", status="used", tags=["WiLoR 14 源"],
source="synth", method="synth", gt="3D 关键点", tier="-", route="R3",
camera="合成渲染", rig={"synth": True},
scale="训练 41,258 张,测试 2,728 张",
fills="早期合成手部关键点数据。",
links=[arxiv("1705.01389")], team=[T_WILOR])
add(id="egorenderer", name="EgoRenderer V005 / V006", year="2026", status="used", tags=["自有合成"],
source="synth", method="synth", gt="原生手部参数;拟合 MANO / SOMA 为非 GT 辅助标注", tier="SY", route="R1",
camera="第一视角合成渲染", rig={"synth": True, "ego": True},
scale="V005:1,314 源组 / 2,425 历史包;V006 ARCTIC:301 源动作,每条只生产 1 份",
fills="可控的第一视角合成数据。",
risk="V005 参数附件更新沿用原 RGB;V006 渲染使用原生手,不使用拟合参数生成像素。当前只保留每动作一份生产目标,历史额外变体不计入目标。辅助拟合与训练资格另行登记。",
team=[T_WILOR])
add(id="cocowb", name="COCO-WholeBody", year="ECCV 2020", status="used", tags=["WiLoR 14 源"],
source="wild", method="manual2d", gt="2D 关键点", tier="-", route="R4",
camera="网络图像", rig={"wild": True},
scale="约 20 万张图",
fills="野外图像的 2D 监督。",
links=[arxiv("2007.11858")], team=[T_WILOR])
add(id="halpe", name="Halpe", year="2020", status="used", tags=["WiLoR 14 源"],
source="wild", method="manual2d", gt="2D 关键点", tier="-", route="R4",
camera="网络图像", rig={"wild": True},
scale="约 4 万张训练图",
fills="野外图像的 2D 监督。",
team=[T_WILOR])
add(id="mpiinzsl", name="MPII + NZSL", year="CVPR 2017", status="used", tags=["WiLoR 14 源"],
source="wild", method="manual2d", gt="2D 关键点", tier="-", route="R4",
camera="网络图像与手语视频", rig={"wild": True},
scale="2,800 只人工标注的手",
fills="人工 2D 手部关键点。",
links=[arxiv("1704.07809")], team=[T_WILOR])
add(id="ego4d", name="Ego4D(P3R3 伪标签)", year="CVPR 2022", status="used", tags=["九源(伪标签)"],
source="wild", method="pseudo", gt="预测 MANO", tier="S5", route="R7",
camera="多种头戴相机", rig={"ego": True, "wild": True},
fills="海量真实第一视角外观。",
risk="P3R3 管线预测的 MANO,不是训练真值。",
team=[T_VID])
add(id="epic", name="EPIC-KITCHENS(P3R3 伪标签)", year="2018 / 2022", status="used", tags=["九源(伪标签)"],
source="wild", method="pseudo", gt="预测 MANO", tier="S5", route="R7",
camera="头戴 GoPro", rig={"ego": True, "wild": True},
fills="厨房场景的真实第一视角。",
risk="P3R3 管线预测的 MANO,不是训练真值。",
team=[T_VID])
add(id="egodex", name="EgoDex", year="2025", status="used", tags=["九源(伪标签)", "第一人称图册"],
source="ego", method="device", gt="25 个 3D 关节(ARKit)", tier="-", route="R3",
camera="Apple Vision Pro", rig={"ego": True},
scale="约 829 小时",
fills="大规模第一视角灵巧操作,带设备追踪的关节。",
risk="关节来自设备追踪,团队另有 P3R3 预测 MANO,都不能监督 shape。",
links=[arxiv("2505.11709")], team=[T_EGO, T_VID])
# ---------- 团队已调研(第一人称图册中带手部 3D 的条目) ----------
add(id="egopressure", name="EgoPressure", year="CVPR 2025", status="surveyed", tags=["第一人称图册"],
source="egoexo", method="rgbd", gt="MANO", tier="S3", route="R1",
camera="头戴相机 + 多台外视角 RGB-D", rig={"ego": True, "exo": 7, "depth": True},
fills="手与表面接触的压力,带第一视角。",
risk="HaMeR 初始化后用多视角 RGB-D、分割、压力和时序约束拟合 MANO,手上没有 marker。",
links=[arxiv("2409.02224")], team=[T_EGO])
add(id="egoemg", name="EgoEMG", year="2026", status="surveyed", tags=["第一人称图册"],
source="ego", method="marker", gt="MANO(光捕 marker 经 markers2mano 拟合)", tier="S2", route="R1",
camera="头戴 GoPro 60 FPS + 26 相机光学动捕", rig={"ego": True},
fills="第一视角与肌电同步,光学动捕真值。",
links=[arxiv("2605.05712")], team=[T_EGO])
add(id="hocap", name="HO-Cap", year="2024", status="surveyed", tags=["第一人称图册"],
source="egoexo", method="rgbd", gt="MANO", tier="S3", route="R1",
camera="多台 RGB-D + HoloLens 第一视角 RGB", rig={"ego": True, "exo": 8, "depth": True},
fills="手物交互,含第一视角。",
risk="多视角 RGB-D 与关键点约束拟合 MANO,不使用光捕。",
team=[T_EGO])
add(id="taco", name="TACO", year="CVPR 2024", status="surveyed", tags=["第一人称图册"],
source="egoexo", method="mvkp", gt="MANO", tier="S4", route="R1",
camera="多台外视角 + 1 个第一视角", rig={"ego": True, "exo": 12},
fills="双手使用工具的交互。",
risk="多视角 MMPose 三角化后做 MANO 接触与时序拟合,手上没有光捕。",
team=[T_EGO])
add(id="aceda0", name="ACE-Data-0", year="2026", status="surveyed", tags=["第一人称图册"],
source="egoexo", method="marker", gt="手部动捕(格式待核)", tier="S2", route="R1",
camera="环境多相机 + 第一视角", rig={"ego": True, "exo": 6},
fills="身体与物体用 OptiTrack,手部附带动捕数据。",
risk="官方叠加样例未逐帧配对;全量发布目标 150 小时,目前为快照。",
team=[T_EGO])
add(id="xperience", name="Xperience-10M", year="2026", status="surveyed", tags=["第一人称图册"],
source="ego", method="device", gt="手部动捕(类型待核)", tier="-", route="R3",
camera="第一视角", rig={"ego": True},
scale="约 1 万小时",
fills="规模极大的第一视角数据。",
risk="手部真值的采集方式和精度待核。",
team=[T_EGO])
add(id="feel", name="FEEL", year="2026", status="surveyed", tags=["第一人称图册"],
source="ego", method="device", gt="Aria MPS 手部追踪", tier="-", route="R3",
camera="Aria", rig={"ego": True, "fisheye": True},
fills="Aria 第一视角的设备追踪手部。",
team=[T_EGO])
add(id="openaoe", name="Open-AoE", year="2026", status="surveyed", tags=["第一人称图册"],
source="ego", method="pseudo", gt="自动重建 MANO", tier="S5", route="R7",
camera="第一视角", rig={"ego": True},
fills="第一视角操作,自动 MANO 重建。",
team=[T_EGO])
add(id="genhumanego", name="Gen-HumanEgo", year="2026", status="surveyed", tags=["第一人称图册"],
source="ego", method="pseudo", gt="DFM HandTrack 预测", tier="S5", route="R7",
camera="第一视角", rig={"ego": True},
fills="第一视角,模型预测的手部。",
team=[T_EGO])
add(id="egolive", name="EgoLive", year="2026", status="surveyed", tags=["第一人称图册"],
source="ego", method="pseudo", gt="HaMeR 预测 MANO", tier="S5", route="R7",
camera="第一视角", rig={"ego": True},
fills="第一视角,HaMeR 伪标签。",
team=[T_EGO])
add(id="egoverse", name="EgoVerse", year="2026", status="surveyed", tags=["第一人称图册"],
source="ego", method="device", gt="21 个 3D 关节", tier="-", route="R3",
camera="第一视角", rig={"ego": True},
fills="多地采集的第一视角人类示范。",
risk="关节来源待核。",
links=[arxiv("2604.07607")], team=[T_EGO])
add(id="ipnhands", name="IPN HandS", year="2020", status="surveyed", tags=["2D 图册"],
source="exo", method="manual2d", gt="2D 关键点(21 点)", tier="-", route="R4",
camera="单相机", rig={"exo": 1},
scale="200 段视频,约 80 万帧",
fills="MediaPipe 预标后人工修正的连续 2D。",
risk="GT 配对和元数据校验未完成。",
team=[T_2D])
# ---------- 新增建议 ----------
add(id="hograspnet", name="HOGraspNet", year="ECCV 2024", status="p0", tags=["新增"],
source="exo", method="rgbd", gt="MANO + HALO", tier="S3", route="R1",
camera="4 台 Azure Kinect RGB-D,其中 1 台在身后眼睛高度模拟第一视角", rig={"exo": 4, "depth": True, "pseudoEgo": True},
subjects="99 人,10 到 74 岁", scale="1,489,112 帧,28 类抓取,30 个物体",
fills="shape 多样性:作者的 t-SNE 显示比 HO3D、DexYCB、OakInk 更分散。相机与 Femto Bolt 同一传感器族。",
risk="手上没有 marker,MANO 来自 MediaPipe 三角化加 RGB-D 拟合。",
links=[{"label": "项目主页", "url": "https://hograspnet2024.github.io/"}, arxiv("2409.04033")])
add(id="palm", name="PALM", year="2025", status="p0", tags=["新增"],
source="scan", method="scan", gt="扫描网格 + MANO 配准", tier="S1", route="R6",
camera="3dMD 扫描仪:7 台 RGB + 14 台黑白", rig={"scanner": True},
subjects="263 人,男女各半,21 到 70 岁", scale="约 9 万张多视角 RGB,1.3 万次扫描,约 50 种右手手势",
fills="目前能找到的最可靠 shape 真值,可做 shape 先验和 shape 评测集。",
risk="作者称发表后公开;Voxel51 上有 1000 样本子集,完整版获取方式待确认。只有右手静态手势。",
links=[arxiv("2511.05403"), {"label": "Voxel51 子集", "url": "https://docs.voxel51.com/dataset_zoo/datasets_hf/palm.html"}])
add(id="egoexo4d", name="Ego-Exo4D 手部姿态", year="CVPR 2024", status="p0", tags=["新增"],
source="egoexo", method="mvkp", gt="21 个 3D 关键点", tier="-", route="R3",
camera="Aria RGB(110° 视场,卷帘快门)+ 外视角相机", rig={"ego": True, "fisheye": True, "exo": 5},
scale="约 6.8 万人工 2D、34 万人工 3D;自动 3D 约 2100 万",
fills="真实场景的宽视场第一视角,对应 HOT3D 上暴露的相机域问题。",
risk="没有 MANO,只能监督 pose。",
links=[arxiv("2311.18259")])
add(id="gigahands", name="GigaHands", year="CVPR 2025", status="p1", tags=["新增"],
source="exo", method="mvkp", gt="MANO", tier="S4", route="R1",
camera="51 台 RGB,只有外视角", rig={"exo": 51},
subjects="56 人", scale="34 小时,1.83 亿帧,8.4 万条文本描述",
fills="双手动作的多样性。",
risk="YOLO + HaMeR + ViTPose 初始化后三角化,再用 EasyMoCap 拟合,可能继承 HaMeR 的偏差,建议先抽检。",
links=[{"label": "项目主页", "url": "https://ivl.cs.brown.edu/research/gigahands.html"}, arxiv("2412.04244")])
add(id="oakink2", name="OakInk2", year="CVPR 2024", status="p1", tags=["新增"],
source="egoexo", method="marker", gt="SMPL-X → MANO", tier="S2", route="R2",
camera="1 个第一视角 + 3 个外视角 RGB,848×480", rig={"ego": True, "exo": 3},
subjects="9 人", scale="627 个序列,401 万帧",
fills="第一视角加光学真值的双手复杂任务。",
risk="团队 10.8 只用了它的动作分布,图像未入清单。画面中可能看得到 marker,需检查。分辨率低。",
links=[{"label": "项目主页", "url": "https://oakink.net/v2"}, arxiv("2403.19417")])
add(id="hint", name="HInt", year="CVPR 2024", status="p1", tags=["新增"],
source="wild", method="manual2d", gt="21 点 2D + 逐点遮挡标签", tier="-", route="R4",
camera="Ego4D、EPIC VISOR、Hands23、NewDays 图像", rig={"wild": True, "ego": True},
fills="野外第一视角的 2D 监督,以及按遮挡分层的评测。",
risk="Ego4D 帧需单独申请许可。",
links=[{"label": "GitHub(MIT)", "url": "https://github.com/ddshan/hint"}])
add(id="blurhand", name="BlurHand", year="CVPR 2023", status="p1", tags=["新增"],
source="exo", method="mvkp", gt="首、中、尾三帧 3D 真值", tier="S4", route="R1",
camera="由 InterHand2.6M 插帧合成运动模糊", rig={"exo": 12},
scale="训练 121,839 张,测试 34,057 张",
fills="运动模糊,对应 V7 台本里的快速动作。",
links=[{"label": "GitHub", "url": "https://github.com/JaehaKim97/BlurHand_RELEASE"}, arxiv("2303.15417")])
add(id="dartset", name="DARTset", year="NeurIPS 2022", status="p1", tags=["新增"],
source="synth", method="synth", gt="MANO 扩展(DART)", tier="SY", route="R1",
camera="合成渲染", rig={"synth": True},
scale="约 80 万张,50 种饰品,325 种皮肤纹理",
fills="外观多样性:戒指、手表、美甲、纹身。",
links=[{"label": "NeurIPS 论文", "url": "https://proceedings.neurips.cc/paper_files/paper/2022/hash/f06d5ebd4ff40b40dd97e30cee632123-Abstract-Datasets_and_Benchmarks.html"}])
add(id="humbi", name="HUMBI Hand", year="CVPR 2020", status="p2", tags=["新增"],
source="exo", method="mvkp", gt="MANO", tier="S4", route="R1",
camera="手部 68 个视角", rig={"exo": 68},
subjects="全集 772 人,性别均衡,多种肤色",
fills="shape 分布广。",
risk="每人 shape 取关键点拟合结果的时间中值,只能当弱监督。",
links=[{"label": "项目主页", "url": "http://humbi-data.net"}, arxiv("2110.00119")])
# ---------- 自采 ----------
add(id="ourcapture", name="单人手部采集(V6 / V7)", year="2026", status="own", tags=["自采"],
source="egoexo", method="marker", gt="SOMA(目标)", tier="S2", route="R0",
camera="Femto Bolt 头戴 RGB(带 marker)+ 光学动捕", rig={"ego": True, "exo": 6},
subjects="3 人(计划增加)", scale="V6 152 条 + V7 新增 51 条",
fills="极端抓取、手内换抓、手手接触、注视与速度变化。",
risk="手上 marker 出现在 RGB 中,需按已知位置做 inpainting。")
# ---------- 不建议 ----------
add(id="assemblyhands", name="AssemblyHands", year="CVPR 2023", status="no", tags=["不建议"],
source="norgb", method="mvkp", gt="21 个 3D 关键点", tier="-", route="R3",
camera="第一视角为黑白鱼眼;外视角为 RGB", rig={"ego": True, "fisheye": True, "mono": True, "exo": 8},
subjects="34 人", scale="约 300 万张,其中第一视角约 49 万张",
fills="只有外视角 RGB 可用。",
risk="第一视角不是真实 RGB,与排除 SHOW3D 的理由相同。",
links=[arxiv("2304.12301")])
add(id="show3d", name="SHOW3D", year="2026", status="no", tags=["不建议", "第一人称图册"],
source="norgb", method="mvkp", gt="UmeTrack(另提供 MANO / MHR 转换)", tier="S4", route="R1",
camera="黑白鱼眼", rig={"ego": True, "fisheye": True, "mono": True},
fills="团队已排除。",
risk="无标记多视角自动拟合,人工核验子集不具代表性;黑白鱼眼不满足真实 RGB 条件。",
team=[T_EGO])
add(id="hiphi", name="HiPHI", year="2026", status="no", tags=["不建议"],
source="norgb", method="marker", gt="BVH 骨架", tier="-", route="R3",
camera="无 RGB", rig={"none": True},
subjects="132 人", scale="617.5 小时(含镜像),约 2 亿帧",
fills="大规模全身与物体交互动捕,可作动作先验。",
risk="没有图像,手部细节未说明。",
links=[arxiv("2608.16222")])
add(id="eventegohands", name="EventEgoHands++(EEH-R)", year="2026", status="no", tags=["不建议"],
source="norgb", method="device", gt="MANO(手套关节拟合)", tier="S4", route="R1",
camera="DAVIS346 事件相机", rig={"ego": True, "none": True},
subjects="8 人", scale="1,019,716 帧,约 2.36 小时",
fills="暗光与事件相机。",
risk="没有 RGB,公开情况未说明。",
links=[{"label": "alphaXiv", "url": "https://www.alphaxiv.org/abs/2609.17189"}])
out = {"meta": meta, "datasets": D}
(ROOT / "data").mkdir(exist_ok=True)
(ROOT / "data" / "datasets.json").write_text(json.dumps(out, ensure_ascii=False, indent=1), encoding="utf-8")
prev = ROOT / "data" / "previews.json"
if not prev.exists():
prev.write_text("{}\n", encoding="utf-8")
# 校验
ids = [d["id"] for d in D]
assert len(ids) == len(set(ids)), "id 重复"
src = {s["id"] for s in meta["sources"]}
mth = {m["id"] for m in meta["methods"]}
tr = {t["id"] for t in meta["tiers"]}
st = {s["id"] for s in meta["statuses"]}
rt = {r["id"] for r in meta["routes"]}
for d in D:
assert d["source"] in src, d["id"]
assert d["method"] in mth, d["id"]
assert d["tier"] in tr, d["id"]
assert d["status"] in st, d["id"]
assert d["route"] in rt, d["id"]
print(f"写出 {len(D)} 个数据集")
|