Download tools/make_data.py from DarthSoluke/EgoNetDatasetResearch: direct link, hf CLI and curl.
- Browser
- Download file 30.1 kB
-
https://huggingface.co/spaces/DarthSoluke/EgoNetDatasetResearch/resolve/main/tools/make_data.py
- Command line
-
hf download hf://spaces/DarthSoluke/EgoNetDatasetResearch/tools/make_data.py
-
curl -L -o make_data.py https://huggingface.co/spaces/DarthSoluke/EgoNetDatasetResearch/resolve/main/tools/make_data.py
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)} 个数据集") | |