前阵子公司内部技术直播做到第48期,主题定成了“人脸深度伪造鉴别”。本来以为这个话题只有做算法安全的人关心,结果开播之后,做内容审核、直播风控、客服视频核身的同事全挤进来了。这其实一点都不意外——人脸伪造技术从实验室走到黑产手里,速度远比大部分人想象的要快。
这一篇我不打算写成纯科普,主要把这期直播里的核心内容重新梳理一遍,再补一些我们自己从数据、训练、部署到线上监控踩出来的经验。内容围绕人脸深度伪造鉴别的技术原理、模型构建、工程落地的完整链路展开。适合正在做身份核验、音视频内容风控、反欺诈的同学参考,想系统了解人脸伪造检测的朋友也能跟着顺一遍思路。
1. 为什么突然盯上人脸伪造:从业务场景看检测的刚需
1.1 从“娱乐P图”到“有组织的造假”
人脸伪造这个概念,最早进入大众视野的时候,多数人觉得只是娱乐向的换脸玩法。但技术在飞速迭代,早期的生成方法需要大量人工调整,现在随便一个开源工具,几百到几千张目标人脸的素材,就能训练出一个质量不错的伪造模型。再往后,生成式模型的进步让“无中生有”变得更简单了,已经不局限于把A的脸换到B身上,而是可以凭空生成一段说话的人脸视频。
这就从“娱乐P图”直接升格成了“有组织的造假”。黑产可以用它绕过人脸识别,可以冒充他人身份进行直播诈骗,可以在社交平台批量生成虚假人物。对金融科技公司来说,最害怕的是两种情况:一是用户的身份核验环节被伪造视频骗过,二是平台上的直播、短视频内容里出现合成人像,被用于虚假宣传或欺诈导流。前者损失的是资金安全,后者损失的是平台公信力,都是必须认真对待的问题。
1.2 业务侧最容易被钻空子的三条链路
结合我们实际接触的业务场景,人脸深度伪造真正威胁到的是下面三条链路:
第一条是注册和登录环节。传统的用户名密码注册已经不够看了,现在大量产品引入人脸识别作为辅助验证。伪造者只需要搞到一张目标人脸的图片或视频,再利用换脸工具生成动态视频,就能尝试冒充注册。
第二条是远程视频面审类业务。一些金融场景需要用户拿着手机录制视频,配合做动作指令,比如眨眼、点头、张嘴。这些原本是为了做活体校验,但伪造视频里可以完美模拟动作序列,如果后端只校验动作不校验画面真实性,风险就很大。
第三条是直播和社区内容。平台里有用户上传的视频,也有实时直播连麦。伪造人脸一旦进入直播间,可能被用来冒充某个公众人物,或者做虚假的“真人见证”。对内容安全来说,这意味着必须在流式处理链路上加入人脸伪造检测。
这三条链路有个共同点:它们都是动态的、低质量、网络传输有损的真实线上场景,而不是实验室里的高清样本。这也是后面所有技术选型都会反复提到的前提——模型最终面对的数据,永远比你训练集里看到的更脏。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 伪造鉴别技术拆解:别迷信“AI能一眼看穿”
2.1 空域伪影:从像素纹理找生成痕迹
最早也是最有名的一类伪造鉴别方法,就是看空域伪影。早期基于生成对抗网络的换脸方法,在生成人脸时会让图像某些区域出现规律性的纹理异常,类似棋盘格一样的网格效应。这是因为生成器在上采样过程中存在固定的计算痕迹。另外,人脸边缘、发丝、耳朵交界处也容易出现模糊或割裂感,瞳孔形状、牙齿排列、镜片反光这些细节往往不那么自然。
基于这个思路,可以做局部纹理统计、高频噪声分析,也可以直接用卷积神经网络,让模型自己去学习生成痕迹。相比手工设计特征,CNN方案的自适应能力更强,是当前的主流做法。实际落地时,我习惯把输入图像裁成人脸区域,再做对齐,然后输入骨干网络提取特征,最后接一个二分类头。
但空域伪影有个致命问题:过于依赖生成方法本身的痕迹。新一代生成模型在画质上越来越接近真实照片,空域伪影可能微弱到人眼都发现不了。所以只靠这一层远远不够,但作为第一层过滤,性价比依然很高。
2.2 时域一致性:视频上下文里的破绽
我见过不少团队一开始只做单帧图片检测,上线后才发现单帧模型在各种二次处理面前非常脆弱。原因很简单:视频伪造的本质是在连续帧上做替换,单帧可以看起来很完美,但帧与帧之间很可能不一致。
这些不一致体现在很多地方:人脸轮廓随头部转动出现轻微形变,面部表情和语音口型对不上,眨眼频率异常,甚至连续几帧的光影变化都不符合物理规律。时域一致性检测就是利用这些破绽,把相邻帧、前后片段拿进来做对比分析,常用的方案包括三维卷积、差分网络和基于时序注意力的模型。
在处理视频流时,我的经验是不要盲目把所有帧都丢进模型,成本太高。更合理的做法是先用场景切分和关键帧筛选,挑出面部清晰、位姿变化明显的片段,再在这些片段上做时序评分。这样既有视频上下文的信息,又不会把整体耗时拖垮。
2.3 频域与生物信号:更难伪造的底层指纹
除了看像素层面的痕迹,还可以把人脸图像变换到频域去找规律。真实相机拍摄的图像,经过传感器采样、压缩编码之后,频域能量分布有一定的自然特性。而生成网络重建出来的图像,频域分布常常会有些反常,比如高频分量异常强或者某些频带能量显著缺失。通过离散余弦变换或小波变换,可以提取这些特征用于分类。
更有意思的是生物信号方向。真实人脸视频里,皮肤会因为血液流动产生极其细微的周期性颜色变化,这个信号可以反推心率。伪造视频由于是对静态图做驱动,这类信号要么缺失,要么和语音、动作不同步。早期有研究专门通过分析远程光电容积描记信号来区分真伪,实战中也确实有参考价值。
但生物信号对视频质量要求很高,网络压缩过、分辨率过低、人脸距离太远,都会让信号失效。所以这个方向更适合作为高级辅助判断,当常规模型给出不确定结论时,再触发这类深度分析,而不是作为全量流的核心判定。
2.4 为什么单模型搞不定:从集成视角看方案设计
讲到这里,你应该已经感觉到:没有任何一个单一信号能包打天下。空域伪影容易受新生成器影响,时域分析对视频长度有要求,频域和生物信号又对画面质量敏感。单纯把一个模型的分数调高调低,很难覆盖线上所有情况。
我们的做法是把检测当成一个多维度评分系统,而不是一个二分类器。空域模型给出图像层分数,时域模型给出视频片段层分数,频域特征作为一个辅助特征注入决策层,最后用一套规则或者轻量级的融合模型综合打分。分数落在高置信区间的直接拦截,落在中间地带的转人工复审或者触发更强的验证流程。
这也是为什么我一直建议团队别把精力全压在一个“更准的单模型”上,系统设计才是瓶颈所在。
3. 从0搭建一个人脸伪造鉴别模型:全流程复盘
3.1 数据准备:公开数据集与自采数据的组合策略
聊到模型,第一个绕不开的就是数据。人脸伪造鉴别最大的痛点是:真实业务场景中的伪造样本极其稀少,甚至可以说几乎看不到。所以数据来源主要靠公开的伪造人脸数据集和自建样本两条腿走路。
公开数据集的好处是样本量大、类型丰富,涵盖了拼接、完整合成、表情驱动等各类伪造方式。但由于很多样本来自实验室环境,清晰度偏高、姿态偏正、压缩较少,和线上真实抓取的视频分布差距很大。直接拿公开数据集训练的模型,一到线上性能就会明显掉点。
第二个来源是自建数据。我们组里专门维护了一套伪造样本生产流水线,用开源的生成工具和成熟的人脸交换方案,结合实际业务里的人脸检测结果,生成针对性样本。比如模仿线上流程对视频二次压缩、降低分辨率、调整帧率,让样本分布尽量接近线上。这条流水线的核心目标不是追求样本美观,而是追求场景覆盖。
另外,正样本同样需要用心。真实用户的自拍视频光线复杂、手机型号杂、美颜滤镜严重,这些都要海量收集和清洗。数据准备阶段没有捷径,越接近真实发布分布的样本,对最终模型提升越大。
3.2 模型选型与训练细节:骨干网络和训练技巧
模型选型上,我一般建议从轻量级二分类卷积神经网络起步,骨干网络用成熟的结构就好,重点在于训练策略。人脸伪造检测领域有个特点:伪造方法之间的差异远大于真实和伪造之间的差异。同一个数据集里,某个生成器的伪造样本可能非常容易分,换一个没见过的生成器就又不行了。所以训练时最忌讳把所有伪造样本混在一起不管来源,一定要做来源分组,确保模型学会的不是某个生成器的特定烙印。
训练细节上,输入尺寸建议至少192像素以上,太小的输入会把关键伪影直接抹掉。数据增强要做重一点,尤其是模拟线上压缩的模糊、缩放、亮度抖动。优化器用带动量的随机梯度下降或者Adam都可以,学习率配合余弦退火,大约40到60个epoch就能收敛。类别不均衡问题可以用焦点损失缓解。
另外一个容易被忽视的点是人脸对齐。进入模型前先做人脸检测和关键点定位,做仿射变换对齐到标准位置。对齐能显著降低姿态差异对模型的影响,也方便后续做特征可视化分析。
3.3 评估指标与阈值设计:不能只看准确率
很多同学拿到模型第一件事是看准确率,但在这个任务里准确率很有迷惑性。假设线上真实伪造率只有千分之一,模型哪怕把所有人都放行,准确率也有99.9%。所以必须盯住更细的指标。
我评估伪造鉴别模型时,主要看三个指标组合:AUC值、在设定误报率条件下的召回率、以及精确率曲线。AUC反映整体排序能力,召回率反映在可接受误伤范围内能抓出多少坏人,精确率则决定审核团队的压力有多大。
这里要给一个经验值:对需要极高用户通过率的业务,误报率往往被限制在千分之一甚至更低,此时模型能在这种低误报率下保持多少召回率,才是真正的核心指标。阈值校准要充分结合业务成本和风险偏好来定,而不是简单选择分数0.5作为分界点。
我们在实际调阈值时,会把所有训练集之外的真实历史数据重新打分,画出风险分数分布图,标注出如果采取某个阈值,每天大概会拦截多少用户、其中多少正常用户会被误伤。阈值调整每次只动一点,配合线上指标观察一周再决定下一步。
4. 部署到生产环境的四个硬坑
4.1 压缩与重编码让伪造痕迹“消失”
线上视频经过拍摄、上传、平台转码、CDN分发等多轮处理,画质损失非常严重。很多在实验室清晰样本上抓得很准的伪影线索,经过一次二次压缩后直接消失。最典型的例子是高频纹理信息在压缩过程中大量丢失,空域模型基本上失去主要判断依据。
应对方案有两个层面。训练层面要主动做压缩模拟增强,把不同质量档位的压缩视频加进训练集,让模型见过各种“糊”的样本。部署层面要设置清晰的样本质量门槛,比如人脸宽度小于某个像素数、画面模糊程度超过阈值的情况下,不做自动拦截,而是走低置信度流程交给人工或者其他核验手段。
4.2 分辨率、角度、遮挡带来的失效边界
伪造鉴别模型在正脸、清晰、自然光条件下表现最好,但线上用户不会配合你。有人侧脸,有人戴帽子,有人视频聊天时习惯性低头,还有人摄像头像素本身就低。这些情况叠加在一起,模型输出的分数方差会非常大。
我们专门做过一轮失效边界测试:把人脸分辨率、姿态角度、遮挡比例分别设定不同档位,逐个看模型表现。结论是,模型对分辨率下滑的容忍度很低,姿态超过一定角度后性能急剧衰减,遮挡超过面部面积四分之一后基本没有判别力。
针对这种情况,策略上要拥抱不确定性。模型分数低不一定是伪造,也可能只是样本质量差。所以线上判断必须对输入质量做评估,把“画面质量差”和“疑似伪造”区分开。质量差的样本宁可转人工或发起一次新的验证,也不能直接放行。
4.3 实时性与误杀率之间的取舍
真实场景对延迟有硬性要求。以视频面审为例,用户等待分析结果超过两三秒,体验就会明显恶化;如果是直播风控,截帧后需要在一秒内返回结果,否则弹幕和礼物都刷出去了。
为了满足实时性,我们采用了两级架构:第一级用轻量模型在关键帧上做快速过滤,明显正常的视频直接放行;只有得分落在可疑区间的视频,才触发第二级的重模型和时序分析。这样可以控制整体平均耗时,又不会让重模型成为全量瓶颈。
但这里有个教训:不要为了追求低延迟而把误杀率放大。线上误杀一个真实用户,意味着他得分低直接被拒绝,接下去就是客服、申诉、二次审核,成本远比你想的高。延迟和误杀率之间要画一条明确的预算线,模型性能提升后优先用来降低误杀率,而不是无限压延迟。
4.4 模型上线后的持续更新机制
人脸伪造鉴别绝对不是一个“训练一次上线永久”的模型。生成技术在变,黑产手法在变,甚至线上采集设备的成像风格也在变。模型上线后如果不做迭代,三个月后大概率性能衰减。
我们内部搭建了一个难例回流闭环。线上凡是进入人工复审且被判为伪造的样本,自动进入难例库;凡是系统误杀后被用户申诉为正常且核实无误的样本,也进入难例库。每隔一段时间,把难例库里的数据和新增的伪造样本合并,做增量训练和评估。版本不频繁重训,但保持一月一次左右的节奏。
另外要强调对抗性验证。我们每隔一段时间就用最新的开源生成工具批量生产一批新样本,专门用来测试线上模型。如果新样本的检测率明显下降,说明当前版本开始失效,需要优先重训。
5. 业务接入时怎么设计流程:风控不是“一个模型拦截所有”
5.1 前置分层:从图片审核到视频流实时监控
业务接入从来不是把模型封装成一个接口那么简单。不同业务场景的人脸伪造风险等级不同,接入形态也不同。
图片审核场景相对简单,用户上传头像、实名认证照片时调用图像检测接口即可,但这类图片往往经过多次压缩和裁剪,预处理环节要格外注意。视频面审场景则需要接收整个视频流,一边录制一边抽帧,录制完成后对关键帧和视频片段分别做检测。直播场景最复杂,需要对实时视频流持续抽帧,并且要和音频、弹幕、打赏行为做关联,判断是否存在异常。
我强烈建议把“检测模型”和“业务流程”解耦。模型只负责输出多维度的分数特征,业务层自己决定这些分数怎么组合、达到什么条件触发拦截。这样模型迭代时不会影响业务流程,业务流程调整时也不需要改模型代码。
5.2 与人证核身、活体检测的配合
这里必须澄清一个容易混淆的概念:人脸伪造鉴别和活体检测不是一回事。活体检测回答的是“镜头前是不是一个活的人”,比如通过红外纹理、结构光、动作指令来判断,防止有人拿照片、面具或者屏幕录制来冒充。人脸伪造鉴别回答的是“画面里的人脸是不是经过算法合成或篡改”。
两者是互补关系,但各自都有盲区。活体检测对屏幕翻拍很敏感,但在伪造视频注入到摄像头数据流时可能失效;伪造鉴别能发现换脸,却不一定能分辨真实的三维面具。实际业务里,最佳实践是把两类能力叠加起来,在决策层综合判断,不能只依赖任何单一因子。
5.3 灰度验证与线上监控指标
上线新模型版本时,不要直接全量切换。我们通常先在低风险场景灰度,比如只做图片审核,观察误报率、响应时间、拦截率三组指标稳定后,再扩展到视频面审和直播场景。灰度期间新旧模型并行打分,可以做分数分布的详细对比。
线上监控的核心指标包括:伪造拦截率、误杀率/申诉率、人工复审占比、平均响应耗时。这里特别要提醒:拦截率不是越高越好,如果误杀率同步飙升,宁可调低一些拦截率。另外人工复审团队要定期抽检系统放行的样本,因为漏报不会像误报那样触发用户投诉,容易被忽视。
6. 几个值得长期关注的技术方向
6.1 扩散生成模型带来的新挑战
最近两年,扩散模型在图像和视频生成上展现出惊人效果。相比早期生成对抗网络,扩散模型生成的图像更加自然,尤其是在细节锐度和光影一致性上,传统空域伪影检测方法的命中率明显下降。这意味着单靠“找生成痕迹”的思路会越来越难走。
我们对扩散模型生成的人脸做过多轮测试,结论有些让人头疼:图像层的统计特征非常接近真实图片,常规模型难以稳定区分。应对思路只能是把重点转向时序一致性和语义合理性,也就是看视频里的人物行为、光影、口型、运动是否符合物理世界规律。同时要持续收集扩散模型生成的数据加入训练,让模型对这一类伪造保持敏感。
6.2 多模态与跨设备的综合判断
单一画面信息终归有限,下一步更值得关注的是多模态融合。一段伪造视频不仅包含人脸画面,还包含语音、文本、场景上下文。真实人物说话的口型、语气、停顿和内容是协调的,伪造模型往往在音画同步上有缝隙。把语音特征和唇形特征做交叉验证,能大幅提升检测鲁棒性。
跨设备一致性也是一个有意思的方向。同一个真实用户,在不同设备、不同时间段采集的人脸视频,在生物特征层面应当保持稳定。如果系统里已经存在用户历史人脸数据,可以把实时采集的视频和历史数据做一致性比对,异常变化本身就是一个很强的风险信号。
6.3 可解释性和取证留存
最后说一个不太性感但极其重要的点:可解释性和取证。金融科技业务涉及用户资金安全,不能像实验Demo一样只输出一个“0.98分”就完事。当系统拦截了一笔疑似伪造的视频核身请求,业务方需要知道为什么拦截,是哪些特征触发了风险,需要能定位到具体帧和区域。
我们在线上的做法是:对触发拦截的样本,自动保存原始视频、人脸检测框、模型重点关注的伪影区域热力图、各维度分数明细。这些信息一方面用于人工复审时快速判断,另一方面作为后续纠纷处理的凭证留存。热力图工具还能帮算法团队快速发现模型到底在学什么,避免模型学偏。
目前整个人脸深度伪造鉴别体系还在快速演进,没有哪个方案可以一劳永逸。我的切身体会是:真正难的已经不是某一个模型怎么调到99%的准确率,而是如何把图像分析、时序分析、多模态关联、业务流程和人工审核像齿轮一样咬合起来。造假的成本在下降,检测的一方也必须把单点技术变成完整体系,才有机会一直站在前面。
