Phase 1:review 帧采样的四个信号
· 约 4 分钟阅读
Phase-1 概览 里 review 帧采样策略的深挖。概览里的卖点:别按 N fps 均匀采,挑值得看的那些帧。这篇是具体策略。
review 帧采样要解决什么
Project B 是「让人验证模型在每 episode 选出的 N 张 ego 帧上的手部关键点和操作物体 bbox」。采样的全部意义在于把标注员时间花在人能加价值的帧上,而不是模型本来就标对的帧。
一段 2 分钟的视频均匀 1 fps 降采样 = 120 帧。Project B 的默认密度 30–50 帧。砍一半没问题——只要砍对的那一半。
四个信号
Project B(ego 上的手 + 物品)默认采样把四个信号并起来:
- 段边界——动作分段器每个段的起止帧。每帧信息量最高的地方:模型最容易把动作起止往前后糊几帧,而修正一帧的边界会传导到整段。
- 段内均匀——每个段内均匀取 2 帧。覆盖动作中间状态。逮关键点在段内漂移的情况。
- 低置信度帧——MediaPipe 手部存在置信度跌到 0.7 以下的任何帧。模型自己不确定的地方,几乎肯定就是要修的地方。
- bbox 面积跳变——操作物体 bbox 面积比上一帧变化 > 50% 的任何帧。多半是检测器闪了一下、或者跳到别的物体上。便宜的信号。
一段 2 分钟视频,四个信号并集落在每个 Project B task 30–50 帧。Project C(exo 上的人体骨骼)用纯均匀采样 12 帧——人体姿态在帧间漂得平滑,四信号的回报小。
为啥均匀 N fps 不行
「1 fps = 120 帧,密度听起来合理」这种直觉有两个问题:
- 冗余。 这 120 帧里大多数是动作中段、模型置信高、跟前一帧几乎一模一样的画面。标注员一路点过去不做任何修正;你花了 120 帧 UI 时间换了 5 帧真信号。
- 稀有事件漏采。 一次持续 200ms 的抓取动作,在 1 fps 下被采到 0 次或 1 次。模型永远不会在这种动作上被纠正。
均匀采样默认每秒视频同等有趣。它不是。
可调旋钮
策略本身留了几个旋钮:
--review-hand-per-segment N——每段抽几帧(默认 2)。动作更长或更多变的 task 把它调大。- 低置信度的置信阈值(默认 0.7)。调低 → 标记的帧变少 → review 集变小,但临界情况会漏。
- bbox 跳变阈值(默认 50%)。调低 → 更敏感 → 摄像机运动也会触发误报。
我把它们留在默认值上一年没动。除非 review 帧分布开始病态,否则不调。
什么时候改回均匀 fps
两种情况,--review-hand-fps N(强制均匀采样)会优于默认四信号:
- 新数据集 spot-check。 你还没信任分段器和检测器。均匀采样给一个已知密度做对比基准。
- 新动作词表的烟雾测试。 同样的理由。均匀采样可预测;四信号采样的产出依赖模型行为。
正式批跑保持默认。这套策略的意义不是「最优」——是给标注员值得看的帧。
我会盯哪两个指标
- 每个 Project B task 的平均帧数。 如果从 35 涨到 80,上游要么是模型回归了(更多低置信帧)、要么是 bbox 跳变变多了。可能是新 task 类型、可能是换镜头了,反正得查。
- 按信号统计标注员修正率。 如果「低置信度」帧 90% 被改了、「段内均匀」帧只 5% 被改了,说明段内密度偏高。拿这个数据去调密度参数。
总结
- 均匀 N-fps 采样把标注员时间花在模型已经标对的帧上。
- 四个信号(段边界、段内均匀、低置信度、bbox 跳变)挑出人真的会改的帧。
- Project B 用全部四个;Project C 用纯均匀,因为人体姿态没有同样的失败模式。
- 旋钮存在但默认值挺扛得住。
- 想让采样保持诚实,盯帧数分布 + 按信号的修正率。