一张被造出来的图片
机器造出来的图片,往往带着产生它的那些运算留下的痕迹,而这个痕迹是可以测量的。这个演示在你的设备上造两张图片,指出痕迹出现在哪里,也指出它从什么时候起变得读不出来。
一切都在你的浏览器里计算。两张图片都在这台设备上画出来,它们的频谱也在这里算出来,没有任何图片是从别处下载的。打开浏览器的“网络”标签页,再动手玩这个演示:不会有任何请求发出去。
两张图片,同样的内容,一次求差的运算
下面两张图片出自同一个起始场。一张原样呈现。另一张要过一道瓶颈:先被缩小,再靠重复每个像素放大回去,这正是图像生成器一层层串起来、把一张小的数值图变成大尺寸图片所用的上采样运算。除此之外,两张图片没有任何区别。
启动生成。两张图片、它们的两个频谱和测出的数字都会显示在这里。
测量显示了什么
痕迹是一处缺失,不是一个尖峰
流行的说法是,被造出来的图片会在频谱里出现尖峰。这个演示测出来的恰恰相反,而且更有意思。在上采样网格对应的那些频率上,被造出来的图片能量总是低于它周围,大约低 11 分贝。这些频率正是重复核所抹掉的那些:把每个像素重复固定的次数,等于施加了一个滤波器,它的零点就落在这个次数的整数倍上。所以频谱里留着的是产生它的那件工具留下的凹陷。
在对照图片上,没有加入噪声时,同一次测量的差值不到 1 分贝,往哪个方向都一样,因为没有任何理由让一种纹理偏爱或回避这些频率。所以两张图片之间的差别不是一种印象:它是一个数字,而且可以重做。
它在几乎没有什么的情况下就消失了
把噪声滑块往上推,看着测量值化掉。在默认种子、倍数为 8 时,测得的数值如下。
| 加入的噪声 | 对照图片 | 被造出来的图片 |
|---|---|---|
| 无 | +0.2 | -11.0 |
| 2 级 | -0.5 | -4.6 |
| 5 级 | -0.8 | -1.6 |
| 10 级 | -1.2 | -0.5 |
| 20 级 | -0.7 | +0.2 |
| 40 级 | -0.4 | +0.8 |
加到 5 个灰阶的噪声,也就是量程的百分之二,痕迹就已经化掉了:从 11 分贝掉到不足 2 分贝,刚好是对照图片自身所显示的那个值的两倍。加到 10 级,它就不存在了:在被造出来的图片上测出的差值落到对照的差值以下,两者再也分不开。这个幅度的噪声肉眼看不出来,而且它会自己产生:一次重新压缩、一次截屏、一次改尺寸、一个修图滤镜,都会在没人特意去做的情况下达到同样的效果。
这个痕迹无可辩驳,而它几乎经不起任何折腾。这句话的两半同样重要。
方法
下面是完整的计算,供想不用这一页重做一遍的人参考。
- 生成起始场。五层平滑噪声,一层比一层细,叠加起来,每一层的幅度减半。得到的纹理其能量随频率下降,和一张照片的情形一样。抽取由显示出来的那个种子播种,所以可复现。
- 生成第二张图片。按所选边长的方块对场做平均,得到一张小图,然后把每个像素重复同样的次数放大回去。这就是最近邻上采样。
- 如果要加噪声,就以同样的幅度加到两张图片上。
- 把每张图片转成亮度,减掉它的均值,再算它的二维傅里叶变换。减掉均值是必须的:不然直流分量会压倒一切,频谱就只剩中间一个点。
- 把频谱重新居中,取每个频率的幅值,再换算成相对于最大值的分贝数。
- 测量。先对两个坐标都是网格间距整数倍的那些频率求分贝的平均值,再对其他所有地方求分贝的平均值,然后相减。这就是网格差值。接近零,说明这些频率没什么特别。明显为负,说明有一个重复核经过了这里。
网格间距等于图片边长除以上采样倍数。在演示里改一下倍数,间距就跟着变:测量会到别处去找那个痕迹,而它确实找得到。这说明测量真的跟着运算走,而不是找到它自己想找的东西。
这个演示不做的事
- 它表明一次生成运算会在频率域里留下可测量、可复现的痕迹。
- 它表明这个痕迹取决于运算的设置,并随设置移动。
- 它表明从多大的扰动开始,这个痕迹就读不出来了。
- 它不做任何检测。本页两张图片都是它自己造的:它知道哪张是哪张,不是猜出来的,也不给出任何置信分数。
- 它不评判你带来的任何图片,也不接收文件。一个声称能对真实图片下结论的工具,那是在骗人。
- 它不复现一个真正的图像生成器。上采样是它的运算之一,不是全部,而且较新的架构会刻意削弱这个签名。
研究测出了什么
三项已发表的结果为这个演示划定了范围,第四项给出了它的限度。
生成式网络产出的图片,在频率域里存在可见的系统性伪影,成因是这些架构共有的上采样运算。对抗生成网络的上采样部件会留下一个特征鲜明、可复现的频谱指纹,即使没有在训练中见过这个具体模型也能利用。这些研究说的和上面的测量是同一件事:工具会在自己经过的地方签名。
限度也有公开研究,而且很明确。一项经同行评议的工作确立:像素层面的不可见水印可以被一种“再生成”攻击去掉,这种攻击先加噪声再重建图片,而且这一类攻击能保住视觉质量。作者据此结论认为,应当从不可见水印转向保留图像语义的标记方式。本页的噪声滑块三秒钟做的事,就是这种攻击的初级版本。
最后一个事实,把关于肉眼的讨论关上了:观察者已经无法可靠地把合成人脸与真实人脸区分开,甚至平均而言觉得合成人脸更值得信任。所以靠自己的感觉并不是一条退路。
要守住的那个动作
面对一张来源要紧的图片,不要在图片里找线索。去找来源:谁最先发布的,哪一天,以及如果存在出处元数据的话它说了什么。这条路径讲在水印那一章。一条技术线索的用处是把一个疑问记录下来,而不是单凭它下结论。
想再往下走
对声音信号做同样的工作,见一段被造出来的声音那一章。标记内容的两种方式,见水印那一章。该把这个工具收起来的情形,汇集在什么时候不要用它。本站所有演示都汇集在演示页面,课程目录在理解页面。
来源
- Leveraging Frequency Analysis for Deep Fake Image Recognition Joel Frank, Thorsten Eisenhofer, Lea Schönherr, Asja Fischer, Dorothea Kolossa, Thorsten Holz,2020 年。该文确立:生成式网络产出的图片在频率域里存在可见的系统性伪影,成因是这些架构共有的上采样运算。
- Detecting and Simulating Artifacts in GAN Fake Images Xu Zhang, Svebor Karaman, Shih-Fu Chang,2019 年。该文确立:对抗生成网络所用的上采样部件会留下一个特征鲜明、可复现的频谱指纹,即使没有在训练中见过这个具体模型,也能用它来识别一张生成图片。
- Invisible Image Watermarks Are Provably Removable Using Generative AI Xuandong Zhao, Kexun Zhang, Zihao Su, Saastha Vasan, Ilya Grishchenko, Christopher Kruegel, Giovanni Vigna, Yu-Xiang Wang, Lei Li, NeurIPS 2024。该文确立:一种先给图片加噪声再重建的再生成攻击,能在保住视觉质量的同时去掉像素层面的不可见水印,作者因此建议转向保留图像语义的标记方式。
- AI-synthesized faces are indistinguishable from real faces and more trustworthy Sophie J. Nightingale, Hany Farid,2022 年。该文确立:人类观察者已经无法可靠地把合成人脸与真实人脸区分开,甚至平均而言觉得合成人脸更值得信任。