视频深度伪造取证这个方向前几年大家都在埋头做检测器现在风向明显变了——越来越多的团队开始研究视觉语言模型VLM能不能做深度伪造推理。我这次分享的项目就是顺着这个趋势做的一套工作一个专门评测视觉语言模型在视频深度伪造推理能力上的基准。说白了不再满足于让模型判个真假而是要它给出证据、讲清推理过程像取证专家一样输出一条完整的分析链。这套基准解决的是个很具体的问题通用视觉语言模型在视频深度伪造场景下到底行不行、行在哪、不行在哪。我们做了数据构造、任务设计、评测指标、模型对比一整套工作中间踩了不少坑也积累了一些在论文里不会写的一手经验。今天不聊那些包装过的结论纯聊实操包括数据怎么筛、任务怎么定、指标怎么算、评测管线怎么搭以及我实测了多个模型之后看到的一些反直觉现象。对这个方向感兴趣的同行不管是做模型评估、做视频取证还是想给自家模型做个安全体检的这篇应该能帮你省掉不少走弯路的时间。1. 从“看得出是假的”到“讲清楚为什么假”这个基准想解决什么1.1 静态伪影检测的局限在哪传统深度伪造检测基本都走在“找伪影”的路上。早期方法盯着人脸区域看纹理、看光照、看眼珠反光后来发展到频率域分析再后来是一大批基于深度学习的二分类器输入一帧图像输出真或假。这一套在静态图像上确实能打但放到视频里就开始漏气。我举一个很典型的例子。某段伪造视频里人脸区域每一帧单独截出来看都挺自然纹理、五官、肤色都处理得不错你随手截一帧丢给分类器概率分可能只有0.6勉勉强强判为假。但如果你把序列连续放一遍马上能看出不对头部转动角度和肩膀轮廓的透视关系对不上眨眼节奏到某一帧之后忽然变得均匀得像节拍器甚至左右眼瞳孔的高光方向在同一个镜头里变过三次。这些信息不在任何单一帧里而是分布在时间轴上。静态伪影检测天然抓不到这种时序模式这是它结构性的短板。过去几年也有人尝试用3D卷积、循环网络、时序Transformer去建模跨帧信号但这些方法又容易掉进另一个坑它们学到的更像是“数据集的指纹”而不是“伪造的通用规律”。换一个生成方法、换一条传播链路检测器立刻失灵。说白了伪影在图像层面是不稳定的特征静态检测只是在拟合特定伪造技术留下的痕迹分布一旦分布漂移就崩盘。1.2 为什么盯上视觉语言模型视觉语言模型这几年进步确实快输入图像或视频模型能输出自然语言描述、回答复杂问题、甚至做多步推理。这给视频取证带来了一个值得试的新路径与其继续训练专用的二分类器不如用VLM做“可解释取证”——让模型把判断依据和推理过程直接写出来人眼能看懂、能复核。但问题随之而来这些模型在视频深度伪造推理上到底靠不靠谱没有人系统地量过。大家能看到的只是零散的案例某个模型对某段视频答对了换个样本又翻车碎片化观察根本不能形成一个可靠的能力画像。而且VLM在视频输入上还存在帧采样、分辨率压缩、长序列理解等问题它们处理动态伪造内容的真实水平远没有被准确评估过。我们这个项目想做的就是把这块空白补上构造一个专门面向视频深度伪造推理的基准评测集系统性考察VLM在这项任务上的表现边界。不只看最终判断对不对更重要的是看模型靠什么信号给出的判断——是在瞎猜是记住了训练数据里相似的样本还是真正抓到了视频中的伪造痕迹并形成了推理链。这属于视频取证与模型评测的交叉区做的人还不多但价值不小。有了基准模型提供方可以自查模型的安全判断能力研究者可以横向对比不同方案的取舍就算只做提示词工程的人也能从中找到模型的薄弱环节去针对优化。2. 项目整体设计思路拆解2.1 基准构建的三层目标定位动手之前我先把基准的定位想明白。一个评测基准不能只是拿一堆视频让模型回答一堆问题它必须有自己的目标层次。我把这个项目拆成三层目标后面的所有设计都围绕这三层展开。第一层是判别能力。给定一段视频模型要能回答它是真实还是伪造。这是最基础的能力相当于传统二分类的文本化表达。听起来容易但对视频类输入VLM需要先采样帧采样策略不好就可能丢掉关键证据所以光是“判对真假”这件事门槛就比想象中高。第二层是归因能力。模型不仅要判断真假还要指出伪造的类型是身份替换、表情驱动还是口型同步。这要求模型对不同的伪造技术产生的痕迹有区分度而不是笼统地说一句“有异常”。这一层考的已经不只是感知而是对伪造手段的概念理解。第三层是推理能力。模型要能结合视频中的具体线索输出一个符合逻辑的取证分析指出异常发生的区域说明利用了什么信号比如边界闪烁、边缘扭曲、眨眼模式异常并解释为什么这些信号能成为判定依据。这一层最难因为模型要做链条式思考而不是跳跃式猜测。回答过程中如果出现“因为人长得不常见所以是伪造”这种话在归因层可能还看不出来在推理层就完全暴露了。这三层目标逐级递进直接决定了数据标注和任务设计的取向。每次我往基准里加新内容都会先回到这个三层框架校验一遍看它测的到底是哪一层。如果某个任务设计连我自己都说不清它在测什么这个任务就会被砍掉重做。2.2 任务体系设计逻辑目标定了任务体系才谈得上接地气。我把任务设计成三大块正好对应上面的三层目标每一块用不同的题型去逼出模型的能力边界。第一块是全局判定任务。给模型一段完整视频让它回答真伪并给出置信度。这个过程不要求细粒度证据目的在于测模型的整体感知。讲道理这一段如果模型连基本真假都分不出来后面什么都不用谈。第二块是局部取证任务。我把视频中可能藏有伪造痕迹的区域单独切出来比如眼睛周围、嘴唇边缘、面部轮廓、发际线和背景交接处让模型针对每个区域判断是否存在异常并说明理由。这个任务的设定逻辑在于深度伪造的痕迹往往是局部性的整体看挺自然但放大局部后破绽就露出来了最典型的是眼睛轮廓莫名锐利、嘴唇边缘出现波浪状扭曲、头发丝边界糊成一团。第三块是因果推理任务。给模型一个多步问题链条比如“视频中人物的面部光影是否与背景光源一致如果不一致你的依据是什么这种不一致在哪些帧里最明显”模型需要跨帧检索关键证据串联成一份完整的取证结论。这里的任务设计是有意模仿真实执法或媒体核验场景里的专家思维不会只丢一个判断题而要模型写一段带逻辑的分析论证。这套任务体系跑起来之后模型之间的能力差异会表现得很明显。举一个我实测中遇到的例子某个在通用图像问答基准上分数靠前的中型模型全局判定做得挺准但到了因果推理任务几乎完全拉胯输出理由和视频内容对不上给出的“证据”根本不存在。这个现象恰好说明垂直基准的价值——通用评测分数会掩盖模型在视频深度伪造推理上的真实短板。3. 基准构建的核心细节与实操要点3.1 视频数据怎么来构造逻辑与筛选标准数据是这个项目里最耗时的一环。我没有从零开始采集视频那样既不现实也难保证伪造类型的覆盖面我选择的做法是基于公开深度伪造数据集做二次加工和重构。第一步是数据清洗。公开数据集的质量参差不齐有的视频分辨率低到根本看不清人脸边缘有的是过度压缩导致频繁出现编码块效应。这种视频不适合直接进基准因为模型会分不清异常到底是伪造痕迹还是压缩噪声。我按分辨率、时长、人脸检测置信度三个维度做了一轮筛选把720p以下、时长不足4秒、人脸检测置信度低于阈值的样本全部剔除。筛选标准看起来简单但实际操作时繁琐——我统计了一下初筛阶段大概淘汰了接近四成的原始样本数据规模缩水程度远超预期。第二步是场景切分。有些长视频里伪造只出现在中间几十帧前后都是干净的真实画面。如果整段丢给模型判断模型很可能会被大部分真实帧带偏给出“真实”的错误结论。我把这种局部伪造样本单独切成一个子集专门用来考察模型的时间定位敏感度。这个子集是拉平模型表现的关键很多在整段视频上表现正常的模型一遇到局部伪造就露馅。第三步是构造困难样本。这是我额外加的一个环节把不同来源的深度伪造片段重新拼接、压缩、调色模拟社交媒体传播链路对视频的二次破坏。这样处理后的视频在取证上更贴近现实场景——现实中你遇到的深度伪造视频大概率经过多次转码和再压缩如果只用原始生成样本评测会显著高估模型能力。困难样本在基准里充当“压力测试组”专门用来暴露模型在低质量输入下依赖浅层纹理还是深层线索。3.2 标注规范与答案体系设定数据准备好了标注就成了最关键也最容易翻车的环节。我的标注方案是细粒度的每段视频要标注的内容包括真伪标签、伪造类型、疑似伪造区域、可信的取证线索描述以及线索在时间轴上的大致位置。这个标注密度说实话工作量很大但如果不标到这么细后面模型输出的证据根本没法和标准答案对齐。标注标准里最需要控制的是主观分歧。我制定了三个锚定规则第一只有能通过视觉直接观察到的线索才能进入标注不允许标注者依据生成过程中的知识来推断比如“这类模型的输出特征一般会这样所以判定为假”这种非视觉信息一律不许写入标注。这个规则保证了答案是“可看见的”模型靠视频画面本身就能推出来。第二当两个标注者对同一段视频出现分歧时先讨论讨论后仍不能达成一致的样本直接淘汰不做强行投票。这个决策一开始被质疑“浪费数据”但实际跑下来发现淘汰的样本大多数确实是模糊难断的边界案例留着只会让基准答案体系变得含混。第三每个样本必须有两名独立标注者背靠背标注然后做一致性校验用简单百分比一致率加Cohen‘s Kappa双重指标监控。如果某个标注者的Kappa持续偏低说明他对某些伪造类型的判断标准把握不稳需要回炉培训。答案体系方面所有的任务都设计成半开放结构。模型输出不再只是“真/假”而是拆成三块结论、依据、置信度。置信度单独打分依据部分由人工按“有无证据链逻辑”评级。避免一个很常见的问题——模型答对了但理由完全胡说。如果只记录最终答案的正确率这种“歪打正着”的行为根本不会被发现评测也就失去了诊断价值。3.3 评估指标怎么定评估指标是整个基准的灵魂。我最早也想图省事用准确率但后来发现肯定不够——推理类任务里“答案对了但过程不对”的情况占了相当比例。最终我定下来三重指标缺一不可。第一重是任务正确率。按每个任务的答案内容分别计分全局判定任务只比对真伪标签局部取证任务比对区域异常判断因果推理任务比对结论链条里的关键结论点。这个指标最直观适合做横向对比。第二重是推理一致性分数。它专门评估“答案”和“依据”是不是自洽。比如模型说“眼睛区域异常因为高光方向与物理规律矛盾”这个答案和依据一致是高质量的如果模型说“眼睛区域异常因为人物在笑”那就明显不自洽。推理一致性分数由规则检查加人工抽样复评结合计算。规则检查负责抓明显矛盾比如结论标签和支持语句方向相悖人工复评负责判断那些需要语义理解才能分辨的自洽性问题。第三重是鲁棒性指标。同一段视频我用不同采样率、不同分辨率、不同提示词模板反复评测观察模型的输出稳定性。如果提示词只是换了一种中性的说法模型结论就翻了说明它的判断根基不稳更多是被表面的语言线索带着走。鲁棒性用输出一致性来衡量具体算的是同一视频在不同输入设置下结论标签的一致比例。这三重指标放在一起才能把“会不会答”和“怎么答”分开看。我想强调一点如果只想报一个准确率数字其实没必要做这个基准因为传统分类器已经能给你一个看似漂亮的数字了。正因为目标是测推理能力才必须把推理过程的可靠性度量出来。4. 评测流程与模型表现实录4.1 评测管线实现四段式自动化流程评测管线必须自动化否则几十个模型跑下来人力根本扛不住。我把整套流程设计成四段式。第一段是视频预处理。输入视频先统一缩放和分帧。分帧策略对视频类VLM评测影响巨大可以说是整个流程里最容易被忽略又最要命的环节。我最早用过固定均匀采样结果伪造成分集中出现在最后几秒时模型根本看不到关键帧判断结果自然偏差。后来改成“均匀采样加关键帧并行”先按时间轴均匀抽帧再用人脸质量打分模型选出一批高信息量关键帧补进去。这个改动之后模型的判别结果明显更接近真值。第二段是提示词模板管理。我维护了一个提示词模板池每个任务至少对应五种措辞不同的提示词有的很中立有的稍微暗示“这段视频可能是伪造的”用来测模型的引导敏感性。评测时每个任务跑全部模板最终表现按模板池的平均值统计避免单模板措辞给某个模型带来不公平的优势或劣势。第三段是模型推理。这里要处理不同VLM的输入限制差异包括帧数限制、分辨率限制和上下文长度限制。为了公平对比我把所有模型的输入参数统一帧率固定8帧每秒单帧最长边统一缩放到不超过1000像素。有些模型原生支持更高分辨率但为了基准的一致性我宁可牺牲掉它们的天花板能力也不破坏对比公平性。第四段是结果回收与评分。模型输出的是文本我用“规则提取加人工抽查”的双轨方案处理规则部分负责提取结论标签和置信度关键词人工抽查部分负责评估依据质量和推理自洽性。两个环节严格解耦避免模型输出格式不规则时自动评分直接误判。实现时有几个细节值回票价所有输出加缓存、缓存加校验和、每次评测记录完整元信息这些后期调试时帮了大忙。4.2 实测中看到的模型行为评测跑完一轮之后我梳理了几个很有价值的观察有些甚至跟直觉完全相反。第一个观察多数VLM对“整体真假判断”做得相当好前提是视频里的伪造痕迹明显。像那种典型的脸部融合伪影、明显的边界扭曲模型基本一眼能看出来。但一旦换成我自己构造的困难样本转码、调色、压缩后的片段正确率会大幅下滑跌得最狠的模型几乎接近随机水平。这个结果说明头部VLM的底层视觉能力不差但它们对“低质量输入中的细微信号”依然很敏感很容易把压缩噪声和真实伪造混为一谈。第二个观察局部取证任务上模型差异极大。有个模型几乎对所有局部区域都回答“未发现异常”我排查后发现是它在整段视频上下文里过分关注人脸整体忽略了对小区域细节的注意力分配。另一个模型则完全相反无论喂它什么区域都倾向于报“存在异常”典型过度敏感。这两个极端现象说明当前VLM在局部细节的取证判断上还缺少可靠的注意力校准机制。第三个观察因果推理任务是目前所有被测模型共同的短板没有一家表现稳定。最典型的问题是模型会在“视觉证据”和“外部常识”之间发生混淆。比如有一段伪造视频里人物面部的光影和背景光源存在明显偏差某模型给出的依据是“这个人的脸型不太常见”——它根本不是在取证而是跑偏到面相学常识作答了。这说明模型在回答“为什么”的时候大量依赖预训练阶段形成的刻板关联而不是真正在视频里寻找可验证的线索。这些结果综合起来让我确认了一个判断通用视觉能力强的模型不等于在垂直取证任务里可信。两种能力之间存在的错位正是领域专用基准存在的价值。如果只看通用榜单你根本发现不了模型在视频深度伪造推理上的这些裂缝。能力维度模型A表现模型B表现模型C表现全局真假判断良好良好中上局部异常定位中等较弱良好伪造类型归因中等较弱中等因果推理链条弱弱中等输出鲁棒性较低中等较高5. 常见问题与排查技巧实录5.1 数据层面的坑和对策数据是整个流程里最耗精力的部分坑也最多。第一个坑是公开数据集的标签错位。有的视频文件名称和实际标签对不上号这种错误非常隐蔽如果你直接拿原始标签去构建样本后面所有评测结果都会悄悄偏移。我的对策是构建阶段所有样本都重跑一遍生成链路校验不依赖公开数据集的原始标注相当于把标签全部人工复核一遍。第二个坑是压缩差异污染评测。同一段视频分别用H.264和H.265各转两次码低比特率下画面里会出现明显的块效应和振铃效应模型很容易把这些编解码伪影误判成深度伪造痕迹。我在构造困难样本时特意为每个样本保留了一个“伪影来源标注”评测阶段单独分析编码伪影引入的干扰比例。你不做这一步就永远不知道模型的某个错误判断到底是能力缺陷还是数据缺陷。5.2 评估层面的坑和对策第三个坑是模型输出格式完全不可控。有的模型习惯长篇大论有的模型只回一个“真的”还有的模型会先写一段免责声明再给结论。这种格式差异对自动评分冲击很大我早期用关键词匹配方式提取结论误判率不低。后来我做了两个改动一是在提示词里显式规定输出结构要求按“结论依据置信度”三段格式输出二是后处理阶段用正则表达式定位关键标签而不是依赖模型自觉遵守格式。第四个坑是提示词带来的假阳性。我做过一个对照实验把提示词从“请分析这段视频”改成“请分析这段视频是否为深度伪造”之后某个模型的伪造判定率直接上升了约10个百分点。这说明模型被问题措辞严重引导了。最终我把评测统一改成中性提示词集合并单独算一个“引导敏感性”指标把提示词的影响从模型能力里剥离出来报告。5.3 几条复现基准的实用心得给想复现这套基准的朋友几条直接可用的心得。第一分帧参数必须记录在案精确到采样间隔和关键帧筛选策略。分帧会直接影响模型能看到的证据密度后面做任何消融实验都离不开对分帧参数的还原。我因为早期记录不完整反工过一次代价很高。第二人工审核环节不能省也不能全自动化。自动评分能可靠地处理结论标签和置信度提取但“推理依据是否自洽”这件事至少在当前阶段自动方法很难做到完全可靠。我的做法是全量自动评分加比例抽样人工复评抽样比例大概在20%左右算一个性价比比较高的配置。第三不要把基准做成“一把尺子量到底”。把测试集拆成标准集和困难集两层发布标准集用来横向对比模型基础能力困难集用来做压力测试。这样不同需求的用户各取所需比一锅炖更实用。第四推理缓存要加校验和。视频类模型推理成本不算便宜一次批量评测可能需要跑很久如果中间缓存损坏浪费的时间和算力都很心疼。我吃过这个亏之后给所有输出文件加了哈希校验每天定时校验一次基本杜绝了缓存损坏导致的重复劳动。6. 一些个人体会最后分享一点点我在整个项目过程中沉淀下来的个人体会不算总结就当同行之间的闲聊。一个很强的感受是做评测基准这件事远比想象中更消耗精力但它带来的洞察也远超预期。你原以为自己对模型能力有清晰的判断当真刀真枪跑完一批模型后才发现很多判断都是模糊的、经不起推敲的。比如我曾经以为新型号的VLM一定在各个方面都优于旧型号实测发现在视频深度伪造的因果推理任务上两者没有任何显著差异甚至在某些局部取证子集上新型号反而更差。这类反直觉的结论不通过基准评测根本得不到。另一个体会是关于“可解释性”在AI安全里的分量。做检测器的年代一个二分类器给你一个分数你很难在面对公众质疑时说清楚“为什么这段视频是伪造的”。而基于VLM的推理式取证理论上天然适合产出人可读的证据链这相当于给取证过程加了一层“公共理性”的保障。当然这只是愿景当前模型的幻觉问题太严重证据链远谈不上可靠。但正因为不够可靠才更需要这类基准去持续度量、持续暴露问题、推动迭代。最后再分享一个小技巧评测类项目的代码里一定要把“元信息”当成一等公民来对待。数据来源、生成参数、分帧策略、提示词版本、模型版本每一个字段都要烙进结果文件里。做分析时你永远不知道哪一个元信息会变成关键解释变量。我见过很多项目辛辛苦苦跑完评测结果因为缺少某个参数记录导致结论无法解释最后只能重跑。这个坑希望大家能避开。