Learning to Detect Fake Face Images in the Wild

关键字:forgery detection, GAN, Contrastive loss, deep learning, fully convolutional network.

现在篡改检测存在的问题:很难发现GAN网络生成图像的可区别的共性特征。

论文提出的检测方法:提出了一个深度篡改判别器[\(DeepFD\)],是一个二分类的判别器,采用对比损失函数来寻找不同GAN网络生成图像的共同特征,然后通过级联一个分类器来对上一步找到的特征进行分类。

实验采用的数据集:\(CelebA\)和各种GAN网络生成的数据集,包括\(DCGAN、WGAP、WGAN-GP、LSGAN、PGGAN\)

实验的结果:提出的\(DeepFD\)在对现在流行GAN网络生成图像的检测中实现了94.7%的准确率。


[补充] 对比损失函数

  • \(caffe\)的孪生神经网络(\(siamese\) \(network\))中,采用的损失函数是对比损失函数[\(contrastive\)\(loss\)],其表示为:

\(L=\frac{1}{2N}\sum_{n=1}^Nyd^2+(1-y)max(margin-d,0)^2\)

  • 该损失函数最初的提出是在\(Yann\)$ LeCun$的Dimensionality Reduction by Learning an Invariant Mapping提出的,主要是用在降维中,即本来相似的样本,在经过降维(特征提取)后,在特征空间中,两个样本仍旧相似;而原本不相似的样本,在经过降维后,在特征空间中,两个样本仍旧不相似。
  • 观察上面的对比损失函数,这种损失函数可以很好的表达成对样本的匹配程度,也能够很好用于训练提取特征的模型。当\(y=1\)(即样本相似)时,损失函数只剩下\(∑yd^2\),即原本相似的样本,如果在特征空间的欧式距离较大,则说明当前的模型不好,因此加大损失。而当\(y=0\)时(即样本不相似)时,损失函数为\(∑(1−y)max(margin−d,0)^2\),即当样本不相似时,其特征空间的欧式距离反而小的话,损失值会变大,这也正好符号我们的要求。
  • lYGMn0.png
  • 这张图表示的就是损失函数值与样本特征的欧式距离之间的关系,其中红色虚线表示的是相似样本的损失值,蓝色实线表示的不相似样本的损失值。

1. 过往研究

  • 图像篡改检测分为两类:外在特征[\(extrinsic\) \(feature\)]和内在特征[\(intrinsic\) $ feature$]。
  • 外在特征是指将原始图片内嵌入唯一的信号,当收到这个图片的时候通过这个嵌入的信号来检测图像是否被修改。例如,水印。缺点是需要提前知道被嵌入的信号内容。
  • 内在特征是指发现原始图像内在不变的特征,被篡改的图像应该能够通过检测提取出的统计属性来判断固有的属性是否发生变化。
  • 相关研究:通过检测元件噪声、重压缩[\(JPEG\)格式]等线索来判断图像是否被篡改。
  • 本文提出了一种神经网络:\(deep\) \(forgery\) $discriminator $ [\(Deep FD\)]来检测\(GAN\)网络生成的图像。收集的不同GAN网络生成的图片来作为训练集,在这些训练集上,让采用对比损失函数的\(DeepFD\)网络通过成对的训练集学到共同的鉴别特征。
  • 本文的贡献:提出一种基于对比损失函数的神经网络\(DeepFD\)来检测GAN网络生成的图像。\(DeepFD\)能够定位[\(localize\)]篡改图像的非真实的细节。

2. DeepFD 网络框架

2.1 网络结构

lYyTc6.png

    \(DeepFD\)包括两个阶段,第一个阶段是通过收集的数据和真实的图像来基于对比函数来学到共同的特征\(D1\),第二阶段是通过判别器(分类器\(D2\))对\(D1\)进行分类。(分类器\(D2\)直接级联到\(D1\)网络的第四层)网络的详细参数如下:

lYgEpn.png


2.2 数据集

lYR8L6.png

    [Note] \(C(N_t,2)\)是排列组合的意思。


2.3 共同特征学习阶段

    输入集的输入是以对为标准的,记\(R_i=D_1(X_i)\),共同特征学习的目的是最小化\(E_w(X_1,X_2)\)

\[E_w=||D_1(X_1)-D_1(X_2)|| \]

    直接最小化\(E_w(X_1,X_2)\)可以将特征表示\(D_1(X_i)\)映射为常含数。这会导致特征表示没有意义。

所以我们采用对比损失函数:

\[L(W,(P,x_1,x_2))=1/2(p_{ij}(E_w)^2+(1-p_{ij})(max(0,m-E_w)^2)) \]

    其中\(p_{ij}\)表示两个样本是否相似,\(m\)为阈值。以这种方式,可以学习由不同GAN生成的伪图像的共同特征。如果\(p_{ij}=1\),通过对比损失函数,特征表示\(D_1(X_i)\)会更加相似\(D_1(X_j)\)。通过基于比对损失函数的迭代训练,共同特征很快便可学习到。


2.4 分类器学习阶段

    分类器可以采用SVM,随机森林分类器,拜耳分类器。本文采用的卷积神经网络作为分类器,这样会形成一个端对端的网络结构。卷积神经网络的损失函数采用交叉熵,采用反向传播训练。

\[L_C(x_i,y_i)=-\sum_{i}^{N_t}(D_2(D_1(x_i))log(y_i)) \]


3. 实验结果

3.1 实验参数

    数据集:\(CelebA\)和5中GAN网络,分别为\(DCGAN、WGAP、WGAN-GP、LSGAN、PGGAN\)

    数据数量:每个GAN网络生成200000个64×64大小的篡改图像池。对于\(PGGAN\)生成的高像素图像,我们采用下采样来形成64×64大小的图像。最后选择出400198作为训练数据集和5000作为测试数据集。

    网络参数:D1和D2学习率le-3,最大训练epoch为15,对比损失函数阈值m为0.5.Adam optimizer 优化。batch大小为32。在前两个epoch中,只采用成对的数据来训练D1,在这之后,训练D2。

    为了实验的严谨,我和传统的实验进行对比并且设计了基准方法。同时也采用了不同的分类器,例如RFC (Random forest classifier), SVM (Support vector machine), and LC(Linear classifier)。


3.2 对比结果

    图2展示了对比损失函数趋于稳定在25000次迭代(第2个epoch)上。

lYqSoR.png

    图三展示了在不包括LSGAN训练集,提出的\(DeepFD\)在采用对比损失函数和没有采用的情况下,性能的对比。

lYqBlT.png

    表二展示了和其它研究对比结果

lYLKHJ.png

    LSGN显示了较少不切实际的细节图片。

    问题 ???


3.3 可视化篡改图片不真实的细节

    \(DeepFD\)采用全卷积神经网络,可以将特征图可视化来定位篡改图像中不真实的细节。受引用[14]的启发,在分类器D2的最后一个卷积层中有两个通道,导致该层的学习目标将倾向于学习高激活特征表示,这可以被视为不切实际的细节定位。PGGAN生成的篡改图像的六个可视化结果如图4所示。

lYx1lq.png

    [问题]:这个定位不真实细节是如何实现的。


4. 结论

    对比损失函数可用于很好地捕获由不同GAN生成的篡改图像的共同判别特征。 此外,提出的分类器细化过程进一步提高了分类性能,可用于可视化假图像中的不真实细节。 我们的实验结果表明,该方法在准确性和查全率方面优于其他基准方法。

posted @ 2020-01-02 15:42  wenshinlee  阅读(592)  评论(0编辑  收藏  举报