原路径:/SSD2/yangzijing/egoview-v9-foundationhand-s9l10-20260901/docs/V9_P3R1_HANDOFF_20260913_ZH.md
SHA256:337aa60aedd01aff10c5028047760d6da49b081d033502b94f26c17a09313736
1 # V9-P3R1 流程与新对话交接 2 3 更新时间:2026-09-13。以实际代码及运行回执为准,不把历史 V9 的全部能力视为当前分支已验证。 4 5 ## 1. 工作目录与版本边界 6 7 - 代码:`/SSD2/yangzijing/egoview-v9-foundationhand-s9l10-20260901` 8 - 最新 HF 输入批次运行目录:`/home/yangzijing/v9_p3r1_hf_20260912` 9 - 本文描述:该批次实际使用的 **V9-P3R1 / repaired** 配置。 10 - 普通 `python -m v9_fusion` 仍可能走历史融合入口,不能用它代替当前 P3R1 批次。 11 - 原 V9 是 HaWoR + FoundationHand;P3 是纯 FoundationHand 三维来源 + 掌面初始化 + 整段拟合;P3R1 在 P3 上加强观测、侧别跟踪、mask/深度约束及 Z 联合估计。 12 - `20260907-171916_V9_S9L10_palm_fixed.mp4` 对应 **P3**,运行标识 `20260907-171916_V9_S9L10_palm_turn_fixed_v3`,不是本轮 P3R1 的全部实现。 13 - 工作树有大量未提交文件,不能用 HEAD 代替实际运行版本;不可 reset、覆盖用户更改。 14 - 不访问 `/SSD2/yangzijing/egoview-cleanup`。不修改 Jiasen 模型源码或权重;冻结 `egoview/`、`pipeline/`、`scripts/`、`releases/`、`pipeline_manifest.json`。 15 - `V9_BOOTSTRAP_PROMPT.md` 是历史起点;后续用户明确授权纯基模、无 DA3、stereo/模态兼容等变更,不得因此恢复旧融合方案。 16 17 ## 2. 流程图 18 19 ```mermaid 20 flowchart TD 21 A[输入清单:RGB、时间戳、标定及可选深度/轨迹] --> B[核验 revision、文件哈希、序列身份与 frame-map] 22 B --> C[相机数据准备:图像空间、K、深度配准与有效性] 23 B --> P{相机轨迹来源} 24 P --> P1[0828/0907:核验已有 EGO 轨迹] 25 P --> P2[0910:双目标定验证 → SLAM → 时间与世界系验证] 26 P2 --> G[当前阻塞:旧标定在 0910 图像上未通过] 27 P1 --> D 28 P2 --> D[准备统一 RGB/K/depth/相机轨迹输入] 29 C --> D 30 D --> E[FoundationHand-S9L10:T=8、stride=4、center stitching] 31 D --> F[SAM3 逐帧分割] 32 D --> H[YOLO 四旋转检测] 33 F --> I[融合候选框 → MMPose 四旋转 2D 关键点] 34 H --> I 35 I --> J[观测质量判定、RGB 跟踪及左右手身份关联] 36 J --> K[同帧 mask + 可靠局部深度约束] 37 C --> K 38 E --> L[掌面 PnP 初始化 + 整段 MANO 几何优化] 39 J --> L 40 K --> L 41 L --> M[相机系关节/mesh/MANO + 每帧每侧有效性] 42 M --> N[按同帧 T_world_from_camera 转到米制世界系] 43 D --> N 44 M --> O[原 RGB 上渲染 solid MANO overlay] 45 N --> Q[压缩 NPZ、mesh、manifest、README] 46 O --> Q 47 Q --> R[数组/时间/坐标检查、实际抽帧审阅、发布] 48 ``` 49 50 这是实际依赖图,不是宣称各分支均已运行;0910 尚未进入 SLAM/手部重建。 51 当前批次交付的 `overlay.mp4` 是原视频叠手 mesh;历史左右双面板 dense scene demo 是另一渲染入口,不能混称为同一成品。 52 53 ## 3. 模型与组成 54 55 | 环节 | 实际作用 | 关键实现 | 56 |---|---|---| 57 | 输入与模态准备 | 固定 HF revision、绑定 RGB/时间/相机、配准可用深度 | `v9_benchmark/hf_capture_batch.py`、`hf_capture_depth.py`、`hf_capture_stereo.py` | 58 | 唯一学习式 3D 来源 | 全画面双手 FoundationHand-S9L10 (1e-6) | `hf_capture_worker.py::raw_infer/s9_worker` | 59 | 手检测 | 既有 YOLO 权重,0/90/180/270° 检测后还原图像坐标 | `p3r_rgb_worker.py` | 60 | 分割 | SAM3 对全部帧执行;候选、存在性与轮廓证据 | `p3r_batch.py::sam_worker` | 61 | 2D 观测 | MMPose 四旋转预测及观测融合 | `p3r_rgb_worker.py` | 62 | 侧别与存在性 | 结合同帧证据与整轨 RGB 信息关联物理左右手 | `p3r_rgb_worker.py` 及其调用的 tracking 函数 | 63 | 拟合 | 基模初始化/先验 + RGB、mask、深度、时序项 | `p3r_fit_worker.py`、`v9_fusion/s9_sequence_fit.py`、`hand_surface.py` | 64 | 世界系/交付 | 同帧刚体变换、有效性、说明与 mesh/overlay | `hf_capture_export.py`、`p3_delivery.py`、`hand_overlay.py` | 65 66 Checkpoint: 67 `/SSD2/jiasen/foundation_hand/world_adapter_artifacts/world_trajectory_v1_20260829/parent/step_0405000_final.pt` 68 69 SHA256:`29018790a9c72454dd41b088d910ecd7488f4eaa85b9675e67d16f6ef139bf24` 70 71 身份:`S9L10_J25_full`、`last2_1e6`;显示名必须是 **FoundationHand-S9L10 (1e-6)**。 72 输入 letterbox 到 H=512/W=896,离线窗口 T=8、stride=4、center stitching;模型常驻、按序列执行,不逐帧重新加载。 73 输入构造含 RGB、K、可用深度及其有效性标志、相机轨迹与可用性标志。不要凭“字段传入”推断网络各内部模块如何利用,深入问题应继续核对模型源码。 74 YOLO/MMPose/SAM3 仍是学习模型,但不输出最终三维手。代码中沿用的 HaWoR 命名或 runtime helper 不等于执行 HaWoR 三维重建。 75 76 ## 4. 到底做了什么后处理 77 78 **不是网络直出:模型后有整段几何优化。没有最终 mesh/轨迹输出之后新增的平滑滤波。** 79 80 1. RGB 层:旋转增强、候选融合、观测门限和物理左右手跟踪;SAM3 逐帧参与,不能沿用旧文档“只在快速漏检时调用 SAM3”的描述。 81 2. 掌面初始化:利用可靠 wrist/MCP 2D 观测与标定 K 提出 PnP 掌面旋转初始化,处理大的掌心翻转。 82 3. 整段优化:联合估计全局手朝向、手指姿态、root XY、**腕部 Z**、共享主体 shape,使用基模先验、RGB 重投影、mask 包含/覆盖及合格深度观测。 83 4. 时序约束:对整段变量加入运动连续性/二阶差分项,包括关节、掌心坐标下手指关节、root 与深度;仅在相应连续有效片段起作用。这里的“global”指整段联合求解,不代表先在世界坐标系优化。 84 5. 有效性:来自观测支持,并检查最终关节有限且位于相机前方;不跨无效区间补造有效手,输出 `interpolated` 为 false。 85 6. 相机→世界变换:用同帧真实/已验证估计轨迹变换一次。它不是新的手部滤波器。 86 87 P3R1 `repaired_config`:`optimize_wrist_depth=True`;有基模接受深度帧时姿态/手指时序权重 .8,否则 2.0;depth temporal 权重 200;root temporal .015。它与旧 P3 固定基模 Z 的原视频模式不同。 88 这是几何测试时优化,不是继续训练基模,也不应宣传为完全无后处理。 89 90 ## 5. 深度、SLAM 与坐标 91 92 - 不使用 DA3。 93 - 已发布共享 stereo 深度:核验输入身份和图像空间后引用,不重新生成、不冒称采用新配置。 94 - 自生成 FastFoundationStereo:本地实际 policy 为 max disparity **416**(旧 192 不适近景)、8 iterations、原尺度、左右一致性、0.1–4 m;详见 `v9_fusion/fastfs_runner.py`。旧 `docs/V9_STEREO_SLAMA.md` 的 192 文字已过时。 95 - iPhone:本批可用对齐 PNG 深度,按 RGB 实际源帧映射配准;不能将未配准 TIFF 直接当 RGB 深度。 96 - 整幅深度覆盖不足 50% 时,基模走缺深度分支;局部手掌深度通过质量检查后仍可给几何拟合。两者需分别统计。 97 - 局部深度:同帧 SAM mask、关键点分数、5×5 patch、至少 9 个有效样本、MAD 等;不时间补洞。 98 - 外参缺失不等于总能直接运行现成 SLAM。SLAMA 接口存在,但当前 0910 尚未通过标定/IMU/运行链验证;当前 egoview Python 未安装 spectacularAI,后续还需核对或准备独立 runtime,不能声称所有依赖就绪。 99 - 任意 SLAM 原点不能改名为 XR3 世界系;如需与物体联合,必须验证/建立世界系对齐。 100 101 ## 6. 本轮已完成与仍未完成 102 103 输入仓库:`yangzijing/ego-inputs-0828-0907-0910`,输入锁定提交 `d6f7513aef22fdc58892c7aa8def2a2cc67fb403`。 104 105 | 日期 | 实际状态 | 质量边界 | 106 |---|---|---| 107 | 0828 | 8/8,7071 帧,渲染并发布 | 4 条零有效手,其余低覆盖/旁人身份问题;失败或低质量标签,不是合格仿真手轨迹 | 108 | 0907 | 119/119,19248 帧,逐条抽帧并发布 | 仍有遮挡、快速运动、握拳/边界局部误差,不能宣称 GT 精度合格 | 109 | 0910 | 17 组中 16 组完整 EGO,SLAM=0、手重建=0 | 旧标定复用实测失败,第 1 组源端缺完整 EGO | 110 111 0828/0907 127 条共 635 文件,最终发布 revision `ed89d9a075d38c67454029d23dc819d657830637`: 112 https://huggingface.co/datasets/yangzijing/ego-inputs-0828-0907-0910/tree/ed89d9a075d38c67454029d23dc819d657830637/results/hand 113 114 此前 51 项 focused tests 通过;新增标定误差测量 2 项几何测试通过。不是全仓库测试结论。 115 当前没有重建批次后台 worker;不能说关闭电脑后0910会自动运行。 116 117 ## 7. 0910 证据与当前真正阻塞 118 119 用户明确确认:0910 和旧 `20260907-171916` 为同一物理设备。 120 实际使用旧 demo 的这份标定做复用检查: 121 `artifacts/external/SLAMA/calibration/cam02_full_3840x1080_charuco_20260814_1_stereo_fisheye_candidate.json` 122 123 SHA256:`f68a6ad99470f80a8f980d72dfd2259db45b797e54a414eb4ede2e00a7199764`;每眼1920×1080;baseline 0.1270316445 m。 124 旧视频3帧矫正上下误差中位数0.515–0.636 px;0910的16组47对画面44.206–72.457 px,全部失败。 125 代表帧交换左右/翻转/±10帧范围离散错帧测试均失败;AprilTag ID1角点独立复核约61–65px。 126 不能由此断定物理镜头移动;采集模式、裁切/ISP、读取几何等原因尚未分清。 127 128 证据目录:`/home/yangzijing/v9_p3r1_hf_20260912/0910_calibration_reuse/` 129 包括 `report.json`、`controls.json`、50张检查图。代码 `v9_benchmark/hf_capture_calibration_check.py`。 130 已有相机—IMU候选 `cam02_full_imu_to_left_20260814_2_hybrid_candidate.json` 记录 `jointChecksPassed=false`;原始IMU为int16,单位/轴/时序不能猜。 131 132 已重新在线核验输入: 133 - `0910/0910-2/synced/`:HF782、本地782,大小及Git blob/LFS内容hash全匹配。 134 - `0910/0910-2/ylx/`:HF310、本地310,大小及内容hash全匹配。 135 - 短路径 `0910/synced/`、`0910/ylx/` 与以上长路径内容相同;HF当时最新revision未改变0910输入。 136 - 原始20sessions;16个正式组按 `session_id` 和manifest SHA绑定。第17组使用第二张图指定的视觉修复版,不取 before-visual-repair。 137 - 读取原始左右目做SLAM/标定验证;最终手交付需回到同步母版的frame-map。第17组已有EGO提前4帧、camera5延后1帧处理,不能再重复加偏移。 138 - 4090D整目录是否无遗漏不能声称已独立验证:当前SSH不可达,上传排除了 `synced/01_155151/ego-fragments-not-synchronized/**` 与 `ylx-recovered-failed/**`。用户图和源报告都说明第1组93.73秒缺录,失败恢复素材属于别的动作。 139 - 用户给的 `momaxai/ObjectReconstructionResult/benchmark/0910/depth/v1`,上次查到10包为固定XR机位,均不含EGO深度/世界轨迹;继续任务需刷新远端,不能假设永远不变。 140 141 实际使用的本地路径: 142 `/SSD2/yangzijing/hf_ego_inputs_0910_latest/0910/synced` 143 `/home/yangzijing/v9_p3r1_hf_20260912/raw_0910/0910/0910-2/ylx/YLX-8E8AFA81` 144 145 ## 8. 交付契约 146 147 `results/hand/<日期>/<完整sequence_id>/v1/`:`manifest.json`、`arrays/hand_reference.npz`、`arrays/hand_mesh.npz`、`README_ZH.md`、`overlay.mp4`。 148 hand_reference 为压缩 NPZ、allow_pickle=False:timestamps_s [T] float64有限严格递增;side_names [S]字符串left/right;joints_world_m [T,S,21,3]米;world_hand_valid [T,S]bool;另附 palm_pose_world_wxyz [T,S,7] 和 interpolated [T,S]。 149 说明关节顺序/掌心轴/无效值、尺度、相机轨迹repo/revision/path和变换方向;不能伪造世界系或跨无效区间插值。 150 发布结果+manifest+catalog对应hand_manifest一次批量提交,保留其他管线字段和并发更新,不重复上传共享RGB/depth。当前用户授权个人公开仓库,不擅自写组织仓库。 151 152 ## 9. 新对话怎么继续 153 154 先完整读取本文,以及 `docs/V9_HF_CAPTURE_RUN_20260912_ZH.md` 和涉及模块的代码/实际回执。 155 如果只是整理流程,输出可读流程图并明确区分网络、2D观测、几何优化、最终滤波,不要偷偷运行历史融合入口。 156 如果继续0910,先刷新状态/上游及标定几何诊断,通过后再启动实际SLAM→手重建→渲染。用户已授权这条工作流,不需要反复问是否开始;但不能以假标定、假IMU或假世界系硬跑并冒称成功。 157 查启动状态应看实际进程、日志及逐序列回执,不能只凭交接文字。现有文件属于用户,不覆盖旧实验结果。