直觉:伪造和检测是同一枚硬币
深度伪造(deepfake)的本质是用生成模型合成或篡改人脸/语音,使其看起来像真实采集的。检测则是反过来:找出合成过程留下的、人眼难察但统计上可分的痕迹(artifacts)。两者天然耦合——任何一种检测特征一旦公开,生成方就会针对它优化,把痕迹抹掉。所以这是一场军备竞赛,理解它要同时看生成端怎么造、检测端抓什么、以及对抗如何让双方互相进化。
机制一:人脸伪造的两条主流技术路线
路线 A:换脸(face swap) / 自编码器路线。早期经典做法用一对共享编码器、分立解码器的自编码器:
1 | encoder(共享) --> latent z |
共享编码器学到的是身份无关的表情/姿态/光照表示,解码器负责把它渲染成特定身份。换脸后还要做混合(blending)——把生成的脸贴回原视频帧。这个贴合边界、肤色匹配、分辨率不一致,正是后来检测的重点突破口。
路线 B:生成式路线(GAN / 扩散模型)。用对抗训练或扩散过程直接合成整张脸。GAN 的核心是生成器 与判别器 的极小极大博弈:
努力区分真假, 努力骗过 ,纳什均衡处 的分布逼近真实分布。扩散模型则用另一种思路:把图像逐步加高斯噪声直到纯噪声,再训练网络学习逆向去噪过程,从噪声采样出图像。两类方法生成质量都很高,但都会在频域、纹理统计上留下与自然图像不同的"指纹"。
机制二:检测端抓什么痕迹
检测特征大致分四层,由浅入深:
- 空间/语义层痕迹。混合边界不自然、左右脸不对称、牙齿/头发等高频细节糊、眨眼频率异常、瞳孔反光不一致。早期 deepfake 常"不眨眼"或眨眼不自然,因为训练数据多是睁眼照。
- 频域指纹。上采样操作(转置卷积/插值)会在傅里叶谱里留下规则的周期性峰值/网格状伪影。对图像做 FFT 后,合成图的高频谱分布与自然图有系统性差异。
1 | import numpy as np |
- 物理/生理一致性。光照方向与阴影是否自洽、不同帧之间几何是否连贯、远端 PPG 信号(皮肤微小颜色波动反映心跳)在真人视频里有周期性,合成视频往往破坏这种一致性。
- 时序一致性。逐帧生成的视频在帧间会有抖动、身份漂移、闪烁。把多帧堆叠送进时序网络(3D 卷积或时序注意力)能抓到单帧看不出的不连贯。
工程上常见的是双流/多模态:一路看 RGB 语义,一路看频域或噪声残差(如用 SRM 滤波器提取的噪声痕迹),再融合。对视频再加时序流。
公式视角:检测就是一个带分布偏移的二分类
把检测形式化为学一个分类器 ,最小化交叉熵:
听起来平平无奇,难点全在泛化:训练时见过的伪造方法(比如某个 GAN)的痕迹,换一个新生成器(比如某个扩散模型)后完全不同。这是典型的 out-of-distribution 问题——检测器极易过拟合到"训练里那种伪造的指纹",对没见过的生成方法掉到接近随机。这也是为什么实验室里 99% 准确率的检测器,到野外常常失效。
对抗:为什么这是军备竞赛
- 生成方主动消除痕迹。一旦"频域网格"被公开当检测特征,生成方就在训练里加频域损失、换上采样方式、加后处理,把谱抹平。眨眼、PPG 等生理痕迹同理,都可被显式建模补上。
- 对抗样本攻击检测器。检测器是神经网络,本身可被对抗扰动攻击。对伪造图加一个人眼不可见的微小扰动 ,使 翻转到"真":
即把检测器自己的梯度反过来用(FGSM/PGD 思路)。这意味着即便检测器内部正确,攻击者只要能查询/估计它的梯度,就能定向绕过。
- 真实世界退化抹掉证据。社交平台的重压缩、缩放、加水印、转码,会破坏精细的频域和噪声痕迹——这对检测是噩梦,对伪造者反而是天然掩护。
工程权衡与落地边界
- 被动检测 vs 主动溯源。被动检测(事后判真假)永远在追赶生成技术。更稳的方向是主动:在采集端就给真实内容签名(C2PA 类的内容来源与真实性凭证、可信硬件签名)。但它需要全链路支持,且只能证明"有签名的是真的",无法证明"没签名的是假的"。
- 准确率 vs 鲁棒性 vs 可解释。追高准确率容易过拟合特定生成器;要鲁棒就得在多种伪造、多种压缩、多种对抗扰动上训练,代价是单点准确率下降。司法/新闻场景还要求可解释——给出"哪里不一致"的证据,而非一个黑盒分数。
- 阈值与误报代价不对称。把真人误判为伪造(false positive)在很多场景代价极高(名誉、法律)。部署时阈值要按误报代价校准,并配合人工复核,而不是裸跑模型分数。
- 数据失衡与时效。伪造技术迭代极快,检测训练集天然滞后。需要持续收集新伪造样本、定期重训,把它当成需要运营的系统,而非一次性模型。
小结
深度伪造的生成(自编码器换脸、GAN、扩散)与检测(空间语义、频域指纹、生理一致性、时序连贯)是紧耦合的对立面:每一个被公开的检测痕迹,都会被生成方在下一轮训练里针对性抹除,检测器本身又可被对抗样本绕过,真实世界的压缩转码还会顺手销毁证据。因此纯被动检测无法一劳永逸,它的核心难题是对未见生成方法的泛化。务实的防线是分层的:主动来源签名 + 多模态鲁棒检测 + 误报代价感知的阈值 + 人工复核 + 持续重训。把它当成一个需要长期运营、随对手进化而进化的对抗系统,而不是一个能"训完就完"的分类器。