Handle two-frame Ego4D bbox tails and preserve worker errors

This commit is contained in:
Xin Wang
2026-08-28 09:26:45 +08:00
parent 668996bfa8
commit 18e8773685
5 changed files with 156 additions and 40 deletions
+15 -4
View File
@@ -167,6 +167,8 @@ tail -f logs/ego4d_local_8gpu/<本次时间_PID>/gpu0.log
不用 `nohup` 或 shell 的 `&`,主命令会一直等待;Ctrl+C 或一个 worker 失败时,会停止本次启动的其他
worker 及其进程组,不杀无关训练。已完成的 `.pt` 保留,重跑同一命令会校验后跳过;
失败时先读对应日志。不要同时另开同输出根的重复提取任务。
正常进度仍使用简短摘要;worker 失败时改为输出日志最后 64 KiB 中的最后一段 traceback
(没有 traceback 则输出末尾 40 行),不再只留下最后 300 个字符。原始日志仍完整保留。
最终输出是实体文件 `local_qwen_1s/<uid>.pt`,每个文件同时含 A/V,不需要第二个音频任务。
无框帧仍保留在 5Hz 特征/标签网格中,不能按预览筛选删除。
@@ -180,14 +182,21 @@ worker 及其进程组,不杀无关训练。已完成的 `.pt` 保留,重跑
`clip_end_frame=8999`、`clip_end_sec=299.9666666666666`,唯一越界索引是 `8999`。
这是无对应解码帧的末尾记录,不应把该框移到 `8998`,也不应将所有框减 1。
提取器只在以下条件同时满足时忽略末尾记录:唯一越界索引为 `N`,
随后在 `ac7d3d16-d74d-4fe3-a1e0-cab0b1adf492` 核对到:
原视频 8998 帧、30 FPS,有效索引为 `0..8997`;`clip_end_frame=8998`、
`clip_end_sec=299.9333333333333`,但 bbox 仍到 `8999`,越界索引为 `[8998, 8999]`。
因此只兼容一个末尾索引还不够;这第二例同样是标注结束位置与媒体长度一致、bbox 尾部多出记录。
提取器只在以下条件同时满足时忽略末尾记录:所有越界索引都属于 `N、N+1`,
`N=视频帧数=clip_end_frame`,标注帧起点为 0、时间起点在 1 微秒内为 0,
且标注时长与 `N / source_fps` 相差不超过 0.1 毫秒。
缺少确认边界、较大越界或时长不匹配仍会报错,并打印具体范围;不自动跳过 clip。
容差限制的是**末尾索引位置**,不是框数:即使仅一条记录,出现在 `N+2` 或更远处也不接受。
负索引、缺少确认边界、较大越界或时长不匹配仍会报错,并打印具体范围;不自动跳过 clip。
这是基于已核实样例的受限兼容规则,不代表所有 Ego4D 越界记录都可忽略。
日志显示忽略的末尾索引和框数;新 `.pt` 的 `box_frame_audit` 与预览目录的
`box_frame_audit.json` 保存原始范围、视频帧数、标注边界和忽略记录。
不修改原视频、JSON、target 或已完成的特征。本例仍输出 1499 行,对应截止时间
不修改原视频、JSON、target 或已完成的特征。首例已核对的 1499 行 target 仍对应 1499 行特征,截止时间为
`0.2..299.8s`,2 FPS 的最后一个输入采样时刻仍为 `299.5s`。
该处理不改编码器/池化配置,之前完成且通过校验的特征可以继续复用;同步修复后重跑原 8 卡命令即可。
@@ -271,5 +280,7 @@ python -m unittest -q test_easycom_head_objectives test_local_turn_features test
CPU 回归包括 manifest 顺序/防交叉重复、完整批量提取的模型复用、断点文件校验、
单层/多层全局特征、测试集输入预检,以及合成 Ego4D 上四组各 4 epochs 的训练/推理与增量汇总。
另测试原 train/test 目录、433 clips 的 8 卡完整互斥分片、GPU mask、独立日志、失败/中断时清理自有进程。
末尾框回归覆盖严格边界验证、其它越界拒绝、1499 行完整提取、审计保存和旧特征续跑。
末尾框回归覆盖一帧/两帧越界、严格边界验证、较远稀疏越界拒绝、1499 行完整提取、
审计保存和旧特征续跑;合成测试中,处理后的特征/时间戳/掩码/人物记录与先去掉越界框的结果完全相同。
另覆盖启动期和运行期的长异常信息保留,正常进度仍保持简短。
真实 Ego4D 像素、提供框和 3B/L20 提取仍需按上面的 preview/smoke 步骤验证。