用大范围 detector 保召回,再用 VLM 与稳定队列压缩人工审核量
当前方案不是让 VLM 从零“看完整集找错误”,而是让程序快速扫描全部视频,产生高召回候选,再通过时长门槛、转场语境判断、强信号保护和自适应队列,将每集视觉候选压缩到 23–28 项。
当前甜点:平均 26.24 项,召回 77.4%
稳定自适应队列相对固定 28 项减少约 6.3% 的视觉审核量,在当前 33 集回放实验中没有损失任何已命中的 GT。它接近“候选低于 30、召回约 80%”的业务目标,但尚不能宣称 80% 是对新项目的稳定泛化保证。
六阶段审核漏斗
整个 worker 可独立运行,不需要额外 agent 参与逐项判断。agent 的价值主要在离线标注、规则调优和复盘,而不是生产调用链的必需组件。
12 FPS 特征时间轴,读取清晰度、亮度、帧差、光流和面部局部特征。
blur、deformation、flicker、judder、freeze、black,目标是扩大 scope 而不是直接定罪。
默认异常持续 ≥0.20s / ≥5 帧;按 family 设置更合适的最小窗口。
识别正常转场、快速运镜、景深、特效和表情变化;lip-sync 不经过 VLM。
邻近候选合并成 event,多信号加分;强信号即使被 VLM drop 也可保护。
先构建 K28 master queue,再按 risk≥0.64 的数量截到 23–28 项。
为什么必须先构建稳定 master queue?
旧策略在不同 K 下重新做 temporal stratification,K=20、K=21 和 K=28 可能选出不同事件,导致 Recall@K 非单调。现在固定先生成最多 28 项的稳定排序,只删除尾部,因此候选减少时不会无故替换高优先级项。
自适应停止规则
selected = clamp(master 中 risk≥0.64 的事件数, 23, 28)
VLM 的任务是排除“合理画面变化”,而不是替代 detector
Prompt 采用 family-specific checklist。它必须根据连续帧证据判断异常是否持续、是否存在 A→B→A 的坏帧恢复、是否能定位到具体对象,并优先排除制作上合理的转场和运动语境。
| Family | VLM 输入 | 重点检查 | 正常语境过滤 | 安全策略 |
|---|---|---|---|---|
| Blur | 全画面 + ROI 24 帧网格 + sharpness 证据 | 主体局部糊、前后镜头清晰度突降、连续帧持续 | 景深、运动模糊、风格柔化 | 高分 blur 可 rescue,最低配额 18 |
| Deformation | 全脸、眼发、嘴下巴 specialist 网格 | 液化、拓扑跳变、五官漂移、局部纹理塌陷 | 眨眼、说话、正常表情、遮挡 | 任一 specialist keep 即保留;unknown 保留 |
| Flicker | source-frame-spaced 24 帧网格 | 局部亮度闪烁、轮廓跳变、残留特效 | 曝光转场、闪光特效、切镜 | 强 second-difference 信号保护 |
| Judder | 镜头边界裁剪后的运动 clip | 重复帧、位移不连续、运动节奏突变 | 快速运镜、动作停顿、正常切镜 | stall fraction / score 达标时保护 |
| Freeze / Black | 镜头上下文 clip | 非设计性停帧、异常黑帧 | 正常 hold、标题黑底、淡入淡出 | 精确强信号永不硬删 |
| Lip-sync | detector-only | 说话时嘴静止、非说话时口型过多 | 当前不使用 VLM | 独立队列,不占视觉 23–28 项预算 |
候选数量与召回的关系
固定 20 项已经接近 75% 召回,但损失了 2 个历史命中;稳定自适应保留 23 项下限,以较小压缩换取更稳妥的召回保护。
策略比较
Calibration 与 Holdout
Calibration:65/79;Holdout:24/36。总体数字好于 holdout,说明仍存在项目分布差异,不能只看合并平均值。
| GT 标签 | 含义 | 命中 | 召回 | 判断 |
|---|---|---|---|---|
| QB | 清晰度、模糊、画质下降 | 64 / 80 | 80.0% | 达到目标 |
| TECH | 卡顿、闪烁、动作异常等技术问题 | 17 / 22 | 77.3% | 接近目标 |
| LQ | 液化、作画崩坏、结构异常 | 11 / 17 | 64.7% | 主要短板 |
| LIP 混合项 | 同时带视觉技术标签的混合行 | 1 / 1 | 100% | 样本不足 |
各错误类型目前处于什么状态
“GT 命中”按用户标签与最终 event 的类型兼容、时间窗距离 ≤1 秒计算。由于 event 会融合多个 detector family,一个 GT 命中不能简单归功于其中某一个单独 detector。
| 错误类型 | 当前能力 | GT 证据 | 主要风险 | 结论 |
|---|---|---|---|---|
| 模糊 / 清晰度 | 独立 blur detector + 镜头上下文 + 最低安全配额 | QB 64/80 | 风格柔化、景深与真实模糊边界仍难完全校准 | 最成熟 |
| 人物液化 / 作画崩坏 | 面部对齐特征 + 三 specialist VLM + event 融合 | LQ 11/17 | 非脸部物体、手部、局部结构仍容易漏检 | 可用但需加强 |
| 闪烁 / 跳变 | 局部 second-difference + 24 帧上下文 | 已有脸部闪烁、残留光点命中案例 | 单个 flicker 候选常被 VLM 当作正常特效,靠融合事件保留 | 归因偏弱 |
| 卡顿 / Judder | 轨迹停滞、重复节奏和镜头裁剪 clip | 已有行走、运镜、动作卡顿命中案例 | VLM 对 1–2 秒轻微卡顿判断不稳定,常由 deformation 共现救回 | 事件级有效 |
| Freeze | 停帧 detector + 正常 hold 过滤 | 存在“镜头末尾停住”GT | 该例 freeze 候选未进入最终队列,最终由邻近融合事件命中 | 需专项优化 |
| Black frame | 精确黑帧 detector + 转场上下文 | 本次 115 条清洗 GT 无独立黑帧正样本 | 缺少可计算的 family-level 召回 | 证据缺口 |
| Lip-sync | VAD + 嘴部运动 detector,独立队列 | 不属于本次视觉 115 条主评估 | 需要单独 lip GT 基准,不应与视觉队列召回混算 | 独立评估 |
真实用户标注与机器证据对照
下面案例全部引用真实 GT 截图和当次运行生成的机器证据。点击视频链接可查看时间变化;静态图只能辅助定位,不能独立证明卡顿、闪烁和停帧。
Fast Feature V1 加速 31.9%,未观察到 GT 召回下降
加速主要来自减少完整人脸检测频率、缩小光流计算尺寸和复用低分辨率图像。Detector 并发本身收益很小;媒体生成和 VLM 并发更能影响单集 wall time。
现阶段最重要的四个边界
1. 召回不是精度
正样本 GT 只能说明覆盖了多少已知问题。要进一步压缩候选,需要采集“审核后确认正常”的 hard negative,才能校准 precision 和每个 family 的真实误报。
2. LQ 仍是短板
LQ 召回 64.7%,尤其是手部、道具、非脸部结构和细小局部液化。下一阶段应增加通用局部结构 detector,而不是继续单纯提高 blur 配额。
3. VLM confidence 不是缺陷概率
当前 confidence 表示模型对自身回答的把握,不是经 GT 校准的“真实缺陷概率”。因此不能直接用统一 confidence 阈值决定所有 family 的停止点。
4. Holdout 明显较低
Holdout 只有 66.7%,说明风格和项目分布会影响效果。新项目上线应先保守使用 28 上限,积累 5–10 集标注后再校准阈值与安全配额。
报告引用的原始文件
所有依赖文件都已复制到本报告目录,可直接整体打包或发送给同事离线查看。