EgoNetDatasetResearch / tools /make_data.py
DarthSoluke's picture
Use one production per source and distinguish historical extra variants
8d93a57 verified
Raw History Blame Contribute Delete
30.1 kB
#!/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)} 个数据集")