一边是某服饰品牌每小时超过 2 万场的直播回放,另一边是连锁便利店每晚约 600 万帧的夜间监控。过去,这批任务要靠 8 名审核员轮班兜底。
我们花了一个半月,把 Pika 2.0、Runway Gen-3 Alpha Turbo、智谱清影 V2、Kling 3.0 和 Vidu Q3 接到几段 Python 脚本与 LangGraph 上,先后跑了电商直播、夜间监控和 UGC 审核。
最后留下的主干只有四步:ffmpeg 抽帧,两路模型各写一份结构化描述,冲突交给 GPT-5.6 mini 仲裁,颜色、位置、时长等硬规则再由后处理复核。五个模型按任务分工,没有谁从头包到尾。
先把生成模型当成视频描述器
东方财富的《2026年AI视频生成行业报告:国产爆款频出》把 Seedance 2.0、Kling 3.0、Sora 2、Veo 3.1、Vidu Q3 等列为主流模型。报告还提到,Vidu Q3 于 2026 年 3 月推出,主要面向专业级影视制作。
报告关注生成质量,我们关心的是另一面:模型能不能把镜头前后关系、人物动作和主体变化说清楚。质检需要的,恰好就是这份描述。
传统 CV 仍然留在流水线里。YOLOv8、ReID 和规则引擎负责位置、轨迹与数量核查,但商品 SKU 一换、直播背景一变,训练集和规则都要跟着调整。只用单路 VLM 做抽帧描述也不稳,常见情况是商品看对了,型号却说错了。
下面的分工来自这轮样本测试,和产品的官方定位不完全等同:
- Pika 2.0:检查镜头运动和前后连续性;
- Runway Gen-3 Alpha Turbo:补商品外观与局部细节;
- 智谱清影 V2:处理中文商品名、字幕和本地化合规;
- Kling 3.0:处理长镜头与多主体交互;
- Vidu Q3:分析夜间监控里的复杂动作和运动模糊片段。
直播回放:先核商品,再对话术
直播回放的问题很具体。主播举起衣服时,画面与店头图会出现 3–5% 的色差;镜头一抖,还可能丢帧。
主链路先用 ffmpeg 按 1 fps 抽帧,每 30 秒切成一段,交给 Kling 3.0 和智谱清影 V2 分别描述。Prompt 保持克制,只要求模型记录画面:
请逐帧描述画面中出现的服装 SKU、颜色、面料、印花位置。
仅以 JSON 输出:
{"frame_ts": "...", "clothing_sku": "...", "color_hex": "...", "defect_tags": []}
同一 SKU 与参考图色差 ΔE > 8 时,在 defect_tags 中标记 color_mismatch。
同一批样本还做了单模型计时:Pika 2.0 处理一段 60 秒视频约需 2 分 20 秒,单价约 0.42 美元;智谱清影 V2 处理同一段约 0.18 元人民币。
正式链路采用双模型并行,再用 GPT-5.6 mini 处理冲突。按项目账本,单小时直播的质检成本约 11.6 元,相当于原外采审核成本的 35% 左右。
这条线还能对照主播话术与画面。比如主播说“今天给大家看的是黄色 M 码”,镜头里拿的却是米白 S 码。传统 CV 可以识别衣服,难以理解这句话;单路 VLM 又可能把颜色或尺码说错。两路描述不一致时,任务才会进入仲裁节点。
夜间监控:先描述,再判断
便利店夜间监控最常见的麻烦是丢帧和光照崩塌,凌晨 2—4 点尤其明显。同一批样本里,Vidu Q3 对运动模糊片段的描述最稳。
这里改用 5 fps 抽帧,每 6 秒切成一段,分别交给 Vidu Q3 和 Runway Gen-3 Alpha Turbo。两份描述汇总后,再进入行为分类头。异常分数由语义距离和意图判断共同计算:
def anomaly_score(v1, v2):
diff = semantic_distance(v1, v2)
intent_score = nli_model(v1.summary, v2.summary)
return 0.4 * diff + 0.6 * intent_score
老人突然倒地和小孩蹲下系鞋带,在单帧里可能有相似姿态,动作目的却不同。流程先写描述,再做仲裁;单个 VLM 不直接给异常标签。
按项目内部口径,这样拆开后,“幻觉率”降到 4.7%,吞吐量可以覆盖每晚 600 万帧的任务。
UGC审核:四处内容要对得上
UGC 平台已经能识别不少显性违规,更容易漏掉的是内容前后不一致:封面、标题、首帧和正片各说各话。
这条链路由 Kling 3.0 抽取首帧与关键帧,Runway Gen-3 Alpha Turbo 描述正片中的场景和物体,Pika 2.0 单独比对封面。标题文本与三路描述最后交给轻量 VLM,计算语义对齐率,低于阈值就标黄。
项目压测记录显示,这套配置支持每秒 1.2 万条视频,单条算力成本约 0.007 元。接入 LangGraph 后,平均端到端延迟控制在 1.4 秒以内。
上线前,先把镜像瘦下来
模型选完还没结束。真正拖慢部署的,往往是镜像体积和冷启动。
我们把 PyTorch 后端换成 ONNX Runtime 与 TensorRT,再配合 W4A16 量化。镜像从 2.3 GB 压到 480 MB,冷启动时间从 47 秒降到 9 秒。
冲突仲裁的主干代码如下,三个场景共用同一套状态结构:
from langgraph.graph import StateGraph
from typing import TypedDict, List
class QCState(TypedDict):
frames: List[dict]
v1_desc: str
v2_desc: str
verdict: str
def describe_node(state):
state['v1_desc'] = kling3.describe(state['frames'])
state['v2_desc'] = zhipu_qy2.describe(state['frames'])
return state
def arbitrate_node(state):
prompt = f"""
Model A: {state['v1_desc']}
Model B: {state['v2_desc']}
若两者就商品、动作或违规要素达成一致,输出 {{"verified": true}}。
若存在冲突,给出 conflict_type 与 recommended_action。
"""
state['verdict'] = llm_judge(prompt, json_mode=True)
return state
g = StateGraph(QCState)
g.add_node('describe', describe_node)
g.add_node('arbitrate', arbitrate_node)
g.add_edge('describe', 'arbitrate')
app = g.compile()
“描述 + 仲裁”这副骨架在三个场景里的复用率超过 70%。剩下约 30% 的工作集中在阈值和后处理规则:安防任务要把“倒地”的判断窗口拉长到 3 秒以上,UGC 任务则把首帧与封面的 ΔE 控制在 5 以内。
同一批任务,三种方案怎么花钱
成本测算采用同一批任务量:电商直播每周 200 小时,便利店监控每晚 600 万帧,UGC 每天 30 万条。
| 方案 | 月成本 | 误判率 |
|---|---|---|
| 传统 CV + 外接审核员兜底 | 约 14.8 万元 | — |
| 纯 VLM 单模型直出 | 约 6.2 万元 | 超过 9% |
| 五模型拼装流水线 | 约 4.7 万元 | 2.1% |
第三种方案的月成本约为传统 CV 方案的 31%,接近三分之一。纯 VLM 的账面成本也不高,但超过 9% 的误判率会把压力重新推回人工审核。
模型数量同样需要控制。这轮测试里,只保留价格最高的两个模型,整体效果不到五模型组合的一半;继续增加到 7 个模型后,收益已经明显变小。价格高低和任务覆盖范围并不完全对应。
上线时别漏掉这些账外成本
算力价格要分口径。 这条线对调度很敏感。项目采用的国产算力在补贴口径下,单卡时费可以做到 4 元上下;市场价需要另算,不能直接套用。
中文任务单独看。 在商品命名、文化合规和字幕场景里,智谱清影 V2 的表现更稳定。它在仲裁环路中承担的是“中文事实层”,并不负责所有视觉判断。
日志和人审不能省。 生成视频越逼真,模型越容易理解镜头,也会让伪造内容更难识别。内部审查保留了三道闸门:Prompt 留痕、模型版本锁定、人审随机抽样。
起步链路尽量短。 最快的验证方式仍是 ffmpeg、智谱清影 V2 和 GPT-5.6 mini。先拿垂直场景的小批样本跑通,再决定是否加入 Kling、Runway 等模型。
模型名单还会继续换。一个半月测试后,更值得留下的是抽帧、双路描述、冲突仲裁、规则复核和人审这几步。AI 视频工具除了出片,也开始能承担“把视频里发生的事说清楚”这项工作。