WB-WAM quality_v1_20260724 × Qwen-RobotManip §2.4

你们现在的质检做到了哪里?
和 Qwen-RobotManip 逐步骤对照

基于你提供的 quality 流水线说明;论文依据 Qwen-RobotManip Technical Report, §2.4, pp.6–7。
只读 · Slurm 分片episode-level audit信号 + 视频不等于语义验证
§ 01

先分清:文件“没坏”,不等于机器人动作“有同一个物理含义”

这一页解决什么

你们的质检已经是很扎实的数据完整性 + 时序连续性 + 视频可用性审计。Qwen 的流程与它高度重叠,但又额外检查了 action/state 的因果关系、运动学、坐标系和语言-视频一致性。两者都不能仅靠格式证明“不同来源都已统一成 G1+Wuji 的正确物理语义”。

14当前独立检查的数据 root
100%quality_v1 已报告 coverage
4–32按 episode 行区间的 Slurm partitions
8Qwen:5 个信号阶段 + 3 个跨模态检查

你们当前 audit 在回答

文件、Parquet、时间戳、mask、state/action 是否可读取且连续?视频是否冻结、黑屏、损坏或明显失焦?

仍未由它回答

body29 顺序、root3 单位、hand20 手型、action frame、retarget/IK 是否跨数据集有同一物理意义?

最重要的边界

LeRobot v3 是一个数据容器;110D/136D 是固定张量形状;quality pipeline 是质量审计。三者都不是“自动证明语义正确”的机制。语义正确需要 metadata、转换脚本、FK/重投影和样本可视化共同给证据。

展开原文 · Qwen 为什么要多阶段清洗

“Aggregating manipulation data across diverse embodiments, simulators, and collection pipelines introduces heterogeneous noise in recorded state and action signals.”

— Qwen-RobotManip §2.4, p.6
🧠 先校准问题
一个 episode 通过你们当前所有质检,最严谨的结论是什么?
§ 02

你们当前的流水线:先把“可训练的坏文件”挡在训练外面

承上 → 启下

上一节区分了质量与语义。这一节先不谈论文,严格按你们现有脚本还原:它从 dataset 入口出发,按 episode 分片,分别检查结构、连续信号和视频,最后只生成 keep / review / exclude 建议,不会改数据。下一节才问它和论文的信号检查哪里相同、哪里还差一层。

A · dataset gate入口与目录meta/info.jsonepisodes.parquet、shard 与视频是否存在。
B · partition按 episode 均分$[Ni/P, N(i+1)/P)$;先按 shard 分组,避免重复打开。
C · structure结构/时间轴行数、NaN/Inf、mask shape、frame index、timestamp/FPS。
D · signal + video连续性与画面jump、静止、next-state;黑/白/坏帧、冻结、blur、重复视频。
E · aggregate建议,不删除critical/high→excludemedium→review;汇总 CSV/JSONL。

2.1 分片并不是“随便拆任务”

设共有 $N$ 个 episode、分成 $P$ 个 partition,第 $i$ 个 Slurm array task 处理:

$$start_i=\left\lfloor\frac{Ni}{P}\right\rfloor,\qquad end_i=\left\lfloor\frac{N(i+1)}{P}\right\rfloor$$你们当前的 episode-range partition
逐项拆解
$N$
episodes.parquet 的 episode 总行数。
$P$
提交时指定的 partitions 数;不同数据集现在用 4–32。
$[start_i,end_i)$
第 $i$ 个 job 的闭开区间。按 metadata 行均分,所以不会漏 episode 或重复审计。

每个 part 还写 manifest,记录数据 root、范围、阈值、camera/video mode 和完成时间;summary job 依赖 array job 全部成功。这是一个很好的可复现性设计:之后看到某个 exclude,可以追到当时用了什么阈值和哪一段输入。

2.2 结构检查在保护什么?

检查你们的判据它防止什么它不能证明什么
时间轴frame index 严格为 $0,1,2,\ldots$;timestamp 单调,间隔接近 $1/fps$,容差 2 ms。丢帧索引、乱序、明显时钟损坏。state 和 action 是不是同一时钟或有合理控制时延。
张量/掩码states/action 存在;无 NaN/Inf;mask shape 合法。坏 shard、损坏数值、读入时 shape 崩溃。mask 的 True/False 是否真的代表对应自由度有效。
episode 边界metadata length 等于 shard 切出的 row 数;episode index 不重复。切片错位、重复训练、缺 episode。一段 episode 在物理上是否完成了对应任务。
🧠 理解检查
为什么 timestamp 通过检查,仍不能证明 action 与 state 对齐?
§ 03

信号检查:你们先抓“突变”,Qwen 再追问“它是否违反物理因果与几何”

承上 → 启下

你们已经保证 episode 结构正确;下一层是序列是否可信。当前 audit 用稳健统计找每维的突变,并且对标为 next 的来源检查“action 下一帧是否成为 state”。Qwen 的 S1 与此相近,但它用平滑残差、加速度、jerk 联合判定;更重要的是 S2 把控制命令应领先状态响应作为因果不变量来检查。后面 S3–S5 则专门解决范围、运动学和坐标系问题。

3.1 你们当前的 jump detector:对每维变化幅度做稳健阈值

对某个有效维度 $x_t$,先计算帧间绝对变化 $d_t=|x_t-x_{t-1}|$。用中位数而非均值,是为了让少数极大跳变不会反过来把阈值抬高、躲过检测:

$$d_t=|x_t-x_{t-1}|,\quad m=\operatorname{median}(d),\quad \operatorname{MAD}=\operatorname{median}(|d-m|)$$当前 quality pipeline · 每维帧间变化统计
逐项拆解
$x_t$
某一个有效 state/action 维度在第 $t$ 帧的值。mask 为 invalid/padding 的维度不参与统计。
$d_t$
当前帧相对上一帧跳了多远;它没有正负方向,只看幅度。
$m$
典型帧间变化大小。比均值更不怕极端离群点。
$MAD$
变化幅度围绕中位数的典型偏离;为正态分布乘 $1.4826$ 可近似标准差尺度。
$$\tau=\max\left(\tau_{\min},\;m+12\times1.4826\times \operatorname{MAD}\right),\qquad \text{flag}_t=(d_t>\tau)$$当前阈值 · body/hand 下限 0.35,root3 下限 0.25
这条公式的直觉
$m+12\sigma_{robust}$
“比这条轨迹平常变化大很多”的自适应门槛。$12$ 很保守,降低正常快速动作被误报的风险。
$\tau_{\min}$
当一条轨迹几乎静止,$MAD$ 会很小;固定下限避免微小数值噪声也被当成 jump。
max jump / ratio
脚本还会记录最大 jump、所在 frame/dim、超阈值比例、最长静止时长和有效维数。当前 body/hand/root 的 jump 都是 medium/review,不是自动 exclude。
它特别擅长发现什么?

坏 shard 拼接、单位突然切换、某一帧状态爆掉、复制/粘贴错位。它刻意检查 action[0:64] 的 SONIC token,因为 token 本身是离散表示;把它按连续关节差分会误报。二值 gripper 也应按同一原则豁免。

3.2 Qwen S1:不只看 $|\Delta x|$,还要求“偏离平滑趋势 + 动力学突变”同时成立

论文没有公布固定数值阈值,但给了判定结构:先用级联 median filter 和 Savitzky–Golay 得到平滑趋势 $\tilde{x}_t$,再联合残差、二阶差分和三阶差分。下面是对论文文字的等价操作化写法,不是论文逐字列出的公式:

$$r_t=|x_t-\tilde{x}_t|,\qquad a_t=|x_t-2x_{t-1}+x_{t-2}|,\qquad j_t=|a_t-a_{t-1}|$$Qwen S1 · 依据 §2.4, p.6 的操作化符号
为什么多三种量?
$r_t$ 残差
当前点离“这段动作原本的平滑走向”有多远。它可以抓异常尖刺,而不把正常缓慢漂移直接判坏。
$a_t$ acceleration
一阶速度是否突然改变。持续匀速移动的 $a_t$ 小;突然急刹或暴冲时它大。
$j_t$ jerk
加速度又是否突然改变,专门对极尖的瞬态敏感。
联合条件
论文的语义是 $r_t>\tau_r$ 且 $(a_t>\tau_a\ \text{或}\ j_t>\tau_j)$ 才 flag。比只用 $|\Delta x|$ 更能把“慢漂移”与“突然损坏”分开。

Qwen 的阈值按数据集、本体、真实/仿真、base mobility、旋转表示分别设定;后续动作可以是删帧或丢 episode。你们当前的统一 robust threshold 是很好的 v1,但并没有这层“趋势残差 + 高阶变化”的交叉确认。

3.3 你们的 next-state check 与 Qwen S2:一个是精确契约,一个是跨设备因果检查

你们:适用于明确标了 next 的来源

当 episode metadata 的 body_source/hand_source 包含 next 时,检查 $a_t^{body}\approx s_{t+1}^{body}$ 与 $a_t^{hand}\approx s_{t+1}^{hand}$,容差 $10^{-3}$。它能非常准确地抓到“本应是 next joint target,但写错帧/错值”的样本。

它不能泛化到所有 action 表示

absolute target、delta action、低层 torque、带控制延迟的真机日志,未必满足 $a_t=s_{t+1}$。若对它们硬套等式,会把合法控制系统误判坏数据。

Qwen S2 的问题更宽:不要求 action 值等于未来 state,而问action 的变化是否在合理时间后引出同向 state 变化。论文先平滑 state/action,针对 shared joint dimension 用 cross-correlation 找最佳 lag;若是 delta action,先积分回绝对量。

$$\hat{\ell}=\arg\max_{\ell\in[-L,L]}\operatorname{corr}(\Delta a_t,\Delta s_{t+\ell}),\qquad \operatorname{DA}=\frac{1}{T}\sum_t\mathbf{1}\left[\operatorname{sign}(\Delta a_t)=\operatorname{sign}(\Delta s_{t+\hat\ell})\right]$$Qwen S2 · 论文描述的等价写法;DA 阈值通常 0.6–0.7
逐项拆解
$\Delta a_t,\Delta s_t$
action/state 的一阶变化,而不是绝对位置。这样不会被初始关节偏置干扰。
$\hat\ell$
最匹配的时延。合理系统通常 action 领先 state,所以最佳 $\ell$ 应落在预期控制延迟范围。
$\operatorname{DA}$
Directional Agreement:最佳对齐后,二者“同向变化”的比例。低于约 0.6–0.7,论文将维度/episode flag 并排除。
与 next-state 的关系
next 检查是一个强而窄的特例;S2 是较弱但更通用的因果趋势检查。

3.4 Qwen S3–S5:当前流程还没有的“语义与几何”三层

论文阶段具体做什么公式/判据你们当前状态
S3 Extreme value每个本体、每个维度估计分位数范围,防极端值污染后续归一化;gripper 因双峰分布豁免。超出 $[q_{01}-\alpha(q_{99}-q_{01}),\;q_{99}+\alpha(q_{99}-q_{01})]$ 删帧。当前有 jump,但没有 per-embodiment 的绝对范围/单位审计。
S4 FK consistency从 URDF + joints 用 Pinocchio 算末端位姿,与日志 EEF 比较;优先修 TCP、joint sign、rotation/base frame。$T^{FK}_{eef}(q_t)\stackrel{?}{\approx}T^{log}_{eef,t}$当前没有把 body29/hand20 的物理语义接回 URDF 验证。
S5 Orientation alignment给每个数据集施加旋转修正,使 world forward 与 EEF 朝向约定一致。$R'_{world}=R_{corr}R_{world}$当前不会验证 root3 的单位、yaw wrap 或 world/base frame。

S4 的关键不是“发现不一致就删除”。论文明确说它主要用于修正:固定 TCP offset、joint sign、肩部相对双臂 pose 到 world frame 的转换。对你们而言,这一层正是从“格式统一”走向“语义可证”的入口。

🧠 理解检查
若一个真机数据集 action 是带 80 ms 延迟的绝对关节目标,为什么 S2 比 $a_t\approx s_{t+1}$ 更合适?
§ 04

视频检查:你们的 C3 已很具体;Qwen 再补 C1 语言与 C2 机器人重投影

承上 → 启下

上一节的 S1–S5 都在看数值。可 VLA 最终同时看图、读指令、输出动作:画面冻结而 action 在变、视频中的机器人与 state 对不上、文本写“拿杯子”但视频在推盒子,都会让训练目标互相矛盾。你们现有视频审计已经很接近 Qwen C3,下一步最有价值的是把“视频-状态”和“语言-视频”也拉进同一个证据链。

Qwen-RobotManip Figure 2: multi-stage data curation
Qwen Fig. 2 · p.5上排 S1–S5 是数值/几何层;下排 C1–C3 是 instruction、video、state 之间的跨模态层。点击数字查看各阶段。

4.1 你们已有的 C3:冻结不是一个二元标签

当前 primary/all camera 检查文件可解码、帧数、FPS、黑/白帧、blur proxy、近重复帧及跨 episode 指纹。冻结判定用相邻缩小灰度帧的 MAE:

$$\operatorname{MAE}(I_t,I_{t-1})=\frac{1}{HW}\sum_{u,v}|I_t(u,v)-I_{t-1}(u,v)|\le0.75$$当前 freeze 候选 · 相邻缩小灰度帧
为什么还要结合 action?
$I_t$
第 $t$ 帧缩小后的灰度图。阈值很小表示视觉几乎没有变化。
持续时间
连续达到 2 s 为 long freeze,达到 5 s 为 severe freeze。
video 静止 + action 变化
2–5 s 标 high;$\ge5$ s 标 critical。因为模型看到的是旧画面,却被要求输出不断变化的动作,监督互相矛盾。
video/action 都静止
当前只标 medium/review。它可能是 episode 边界的冗余段,也可能是视觉变化小但语义重要的夹爪闭合,不能一刀切删除。

这和 Qwen C3 的原则一致:黑、坏、模糊、长静止段要清,但 task-critical 的视觉微小变化(论文举例夹爪闭合)要保留。差别是你们把 freeze 的数值阈值和严重度规则写得更明确;Qwen 描述的是方法类别,没有公开它的黑帧、模糊、静止阈值。

4.2 Qwen C1:语言不是附属字段,也要与行为核对

C1-a切长 episode先按子任务切片,避免一段很长视频对应多个动作却只用一个指令判断。
C1-b结构化 VLM 判断要求 VLM 观察物体、动作语义、顺序、agent-environment interaction,再给一致性结论。
C1-c多模型复核初判不一致/模糊的片段交给多个 VLM 投票;不一致样本排除。
你们现状未覆盖现有 audit 会保留 task 字段,但不判断“文字是否描述了这段视频/动作”。
最小接入先 review,不自动删先在高风险/长 episode 上做少量抽样,输出可复核证据而非直接用 VLM 判死刑。

4.3 Qwen C2:机器人应该在视频里的哪里?

这是当前质检与“语义质检”之间最关键的一道桥。若有相机内外参、URDF、关节 state,先把机器人渲染到图像平面得到 $M^{render}$;再把视频中的真实机器人分割成 $M^{seg}$;然后比较交并比:

$$\operatorname{IoU}(M^{render},M^{seg})=\frac{|M^{render}\cap M^{seg}|}{|M^{render}\cup M^{seg}|}$$Qwen C2 · video-state reprojection overlap
低 IoU 到底说明什么?
高 IoU
视频里看到的机器人轮廓,和记录的 joint state + 相机几何预测的位置一致;这是“state 看起来可信”的强证据。
低 IoU
可能是 joint/state 错、时间偏移、URDF/TCP 错、相机内外参错、分割失败,不能直接等于坏 episode。
论文的处理
先看能否优化/修正 camera parameters;若不是相机参数造成,才 filter episode。
对你们的适用范围
只适用于真的拍到机器人本体、且有可信 URDF 和相机模型的数据集。EgoDex/Xperience 的人手画面不能假装可做 G1 重投影。
🧠 理解检查
某 G1 真机 episode 的 C2 IoU 很低,最合理的第一反应是什么?
§ 05

结论与升级顺序:先增强“证据”,再扩大“自动 exclude”

把两条链接起来

你们现在的 quality_v1 已经能可靠产出 keep / review / exclude 候选,并适合大规模 Slurm 运行。Qwen 给出的增量不是“把阈值调严”,而是把每个异常连接到它可能违反的因果、几何或语义约束。最安全的升级方式不是一口气自动删更多数据,而是先为 review 样本增加证据列,确认阈值和误杀率后再改变 severity。

能力当前 quality_v1Qwen 对应建议动作
结构/时间轴已有metadata、row、timestamp、FPS、mask shape。是 curation 的前提,但论文不展开实现。保持;把每次运行 config/commit 固化进 manifest。
突变已有robust $|\Delta x|$ + floor;目前 review。S1:smooth residual + acceleration/jerk 联合。先对 review 样本离线比较两种 detector 的重合/误杀,不直接提高 exclude。
state-action 时序局部已有仅 source=next 的 $a_t\approx s_{t+1}$。S2:cross-correlation lag + DA。为 absolute/delta action 增加 source-specific lag/DA;输出诊断图与候选,不先删。
极值/单位无 per-embodiment quantile band。S3:$q_{01},q_{99}$ + buffer。先做 report-only 范围表,按 source/hand model 分开;gripper、角度需特殊规则。
运动学/坐标没有 FK、root yaw unwrap、action frame 验证。S4 FK + S5 orientation。先建 metadata contract;对有 URDF/EEF/camera 的真机 G1 小集合做 pilot。
视频质量已有C3 类检查且阈值较清楚。C3:联合 state/action,保护关键帧。保持“冻结候选 ≠ 自动删除”;补首/中/末以外的全时序变化统计。
视频-state / 指令无 IoU 重投影、无语言行为一致性。C2 IoU;C1 VLM adjudication。先选真机 G1 小样本做 C2;C1 仅做 review 报告并保留可复核截图/理由。

v1.1:低风险、能立刻接到现有 JSONL

加 root yaw unwrap 后再做 jump;补每 source/slot 的 quantile 报告;将 next-state 结果、冻结区间、mask 有效比例、长静止段写成更可读的 review evidence。它们不会要求新 URDF 或相机标定。

v1.2:把“时间轴正确”升到“因果关系合理”

给 body/hand 的 absolute 或 delta source 实现 S2 风格 lag + DA。先输出最佳 lag、DA 分布和 flag reason;对每个 source 人工抽样后,才决定是否把低 DA 升级为 high。

v2:语义审计,不是普通 validator

建立每个 source 的 body_joint_order / root3_definition / hand_model / action_representation / action_frame / units metadata;有条件时用 URDF FK、EEF 日志和 camera reprojection 做验证。这一步才能回答“G1 72D contract 是否真的成立”。

不要直接照搬的地方

Qwen 的阈值、VLM 过滤和 IoU threshold 都是其数据/本体/相机条件下的选择。你们的 SONIC token、Wuji/Dex3/Inspire 混合手型、无视频 MotionMillion/BONES,必须有 source-specific 例外与 mask;不能用一条全局规则判死。

一句话的操作原则

现在:质量 pipeline 负责找候选、留下可追溯证据。
下一步:先把“为什么它可疑”从 $|\Delta x|$ 扩展到 lag、单位、坐标和几何。
最后:只有在每个 source 的语义 contract 被验证后,才可以严谨地声称不同数据集已统一到同一个 G1/Wuji 表征。

展开原文 · Qwen 对 C3 的关键保留条件

“Task-critical key frames such as gripper closure events are explicitly preserved to avoid discarding visually subtle but semantically important transitions.”

— Qwen-RobotManip §2.4, p.7
🧠 最后检查
把 Qwen 的方法接入现有 pipeline,最安全的第一个原则是什么?