从照片指纹讲起

这部分来自于百度百科,几乎一字不改

2015年,facebook提交了照片指纹的专利。
照片指纹,该技术可以根据数码照片的各种特征,识别出“照片指纹”,并确定这张照片由哪一部手机或者数码相机所拍,这个识别功能能够在社交网络中派上特别的用场,并确定照片版权归属。

每一部智能手机的摄像头或是数码相机,都会在照片中留下一些“指纹”。比如,数字照片文件中会包括一些“元数据”(类似数码照片的属性参数),描述了照片拍摄时所用的摄像头种类,光圈等等。

另外,一个摄像头的传感器芯片可能发生了缺陷,因此在所有其拍摄的照片上会出现一些像素的错误或损坏。凭借这些特征也能够判断出拍摄照片的手机。通过这种智能分析技术,Facebook后台又增加了一种“窥探”用户的能力——它能够从海量的照片中,分析出某一部手机或者用户所拍摄过的全部照片。这一分析结果能够带来Facebook平台上的多种用途,比如平台可以根据照片之间的某种联系,进行好友推荐、活动推荐。Facebook也能够借此识别出一些虚假账户等恶意行为。比如某一个新用户账号上发送的照片,根据上述专利技术识别,判断是来自其他账户的智能手机,Facebook可以判断可能出现了虚假多重账号注册行为。这种专利技术的另外一个用途,是可以帮助分析出某一张数码照片真正的拍摄者,确定版权持有人。

到GAN的指纹

因此就有人提出了,GAN有指纹吗?特殊的模型结构,是否会在GAN生成的图像中留下统一的概率分布,或者说模式。

**2019 IEEE Conference on Multimedia Information Processing and Retrieval(MIPR)的论文Do GANs Leave Artificial Fingerprints?**就讨论了这个问题

android获取指纹识别结果_计算机视觉

指纹提取

指纹提取的方式很简单。指纹表示为GAN的图像生成固有模式。这个模式是与图像无关的。

或者说GAN是一个画手,我们企图获取它的画风。

首先是提取图像的残差。android获取指纹识别结果_android获取指纹识别结果_02是一个合适的去噪滤波器。通过公式:
android获取指纹识别结果_android获取指纹识别结果_03
就可以提取出噪声模式。这个噪声可以表示为指纹信息和随机噪声信号的叠加:
android获取指纹识别结果_计算机视觉_04
android获取指纹识别结果_人工智能_05表示为指纹信息,android获取指纹识别结果_android获取指纹识别结果_06则是随机噪声,假设android获取指纹识别结果_android获取指纹识别结果_06是零均值的,那么根据大数定理,就可以得到
android获取指纹识别结果_facebook_08
这就是就是提取获得的指纹信息。当N不断增大,F收敛。

实验对比

对不同GAN架构和数据集,使用部分生成图像提取指纹,其他图像计算残差相关性,可以得到如下所示的关系图。可以看出,同一模型的图像的指纹相关性更高。

android获取指纹识别结果_人工智能_09

图片归因——学习和分析GAN的指纹

Proceedings of the IEEE/CVF International Conference on Computer Vision 2019的论文Attributing Fake Images to GANs: Learning and Analyzing GAN Fingerprints

这篇论文论证了GAN指纹的细粒度。GAN的指纹生成与多个因素相关,GAN的架构,使用的数据集,和随机初始化的种子。都会导致GAN的图像指纹的不同。

android获取指纹识别结果_计算机视觉_10


不同的网络架构,不同的数据集,不同的初始化参数,不同的训练方式,都会导致网络收敛到一个不同的值。这导致每个GAN都是独一无二的,这也使得GAN存在指纹提供依据。

本文将GAN的指纹定义为自编码器的重构误差,即

android获取指纹识别结果_人工智能_11

论文使用对抗学习,使用一个自编码器和分类器,获得一个指纹分类网络。这一做法是合理的。

使用重构误差作为指纹,这是因为指纹与图像内容本身无关。重构误差就是图像的内容无关部分。

而由于识别图像是GAN也就是神经网络生成的,所以使用神经网络进行特征提取也是合适的。

android获取指纹识别结果_facebook_12