论文简读《DeepFake Detection Based on Discrepancies Between Faces and their Context》
这篇论文发表在IEEE transactions on pattern analysis and machine intelligence,出版时间:2021-Jun-29
基于面孔和背景差异的deepfake检测
这篇论文提出了一种识别假图像的新信号,该信号是基于比较内部面部区域(直接操作的区域)和外部环境(我们所知的所有面部操作方法都不会改变外部环境)。
外部环境就是除了修改的脸部内部以外剩余的部分,本文也叫上下文部分,如图:
面部内部和外部两个向量是通过训练两个独立的人脸识别网络获得的:一个训练基于人脸区域识别人,另一个训练基于人脸上下文识别人。
方法的优点:首先,线索是基于换脸方案的内在设计,因此即使未来的方法产生照片逼真、无人工制品的结果,也希望它保持不变。其次,该线索可以很好地适用于不同的操作方法,而伪迹检测方法依赖于算法特定的缺陷。最后,由于所提出的线索与伪迹检测方法在很大程度上无关,所以它是互补的,因此可以很容易地与这些方法结合,以提高准确性。
第一步:应用双镜头人脸检测器(DSFD)进行视频帧级的人脸切分
第二步:使用人脸分割网络将人脸图像分割为前景(人脸)和背景(背景)。
对于人脸分割网络,使用的是U-Net架构,其中用于上采样操作的反卷积层被双线性插值后的卷积取代。该网络是在一个人脸分割数据集上训练的,类似于Nirkin el al.使用的数据集,并使用他们的公开代码生成包括人脸和mask。
第三步:人脸识别网络
网络是基于Xception架构,虽然文中说是识别网络,但还是分类网络,损失函数使用vanilla cross entropy loss,论文提到其他损失函数也可以,言外之意是这个效果在这次实验中比较好就用了。
训练两个识别网络:Ef网络输入大小299*299的人脸输出为一个伪概率,同样,网络Ec输入剩余的人脸部分即上下文部分,输出为相同类别的伪概率,此时的类别并不是真假而是哪个人。
这一步用到数据集是VGGFace2(一个用于识别不同姿势和年龄的人脸的数据集)。
对于脸部的内部外观,网络Ef在准确性方面优于Ec,尽管两者的准确性都很高。注意到Ec所证明的准确性——它能在只看到背景的情况下识别人脸——这并不令人惊讶:其他人也报告了类似的结果,表明即使只有背景是可见的,面孔也是可以被识别的。
作者提到一个这样的问题:如下图,通常用于人脸识别的表征——人脸识别网络的倒数第二层的激活,对同一个人并不匹配,因为这两个网络是独立训练的。因此,当结合来自这两个网络的响应时,我们使用它们的最终输出:每个类别的伪概率。个人觉得这里有个问题,我们正常操作都是用最后的输出,他这里为什么做了个这样“多余”的实验。
接着是两个真假分类网络:Es和Er,这两个网络也是基于Xception架构的分类网络,为什么有两个,主要是针对两类篡改方式的数据集face swap(换脸类型)和reenactment(再现类型,即修改属性),所以这两个网络是可选其一的。
单独训练好三个网络后,看下是怎么把这几个网络整合的:如下图所示:
首先训练面孔差异网络来预测面孔与其上下文是否具有相同的身份,这里使用了上面描述的两个识别网络Ef和Ec的输出。这两个网络是预先训练好的,接下来不改变网络的权重,以确保身份线索仍然是主导线索。
差异向量Vd是这样计算的:
If和Ic是输入的人脸和背景图,然后经过各自网络,进行相减。
这三个向量的维度为:
把训练好的Ef和Ec冻结(保证整合训练时不更新Ef和Ec参数),输出的Vd和Vs连接在一起,也就是cat操作,再放到D分类器,这个分类器组成为:全连接、batchnormal、Relu、全连接.所以整合训练时,跟新的是D和Es(或Er)网络。
实验结果:只在FF++和自己收集的数据集上训练,测FF++、DFDC、CelebDF-F2.
第二个实验是在FF++上的准确率,文中提到:“重要的是,每个不同类别的准确率本身并不是检测性能的直接指标,因为在真实图像和虚假图像的准确率之间存在一个依赖于阈值的权衡。这些结果暗示了每个类的相对检测难度,并提供了完整性。“
然后是消融和泛化性实验:end to end是他不冻结参数训练的结果,可以看出提升并不大
最后文章还解释了,xception和自己方法能检测的、不能检测的、都不能检测的伪造图像示例:
(a)行是他的方法可以检测,xception检测出错的(说明自己的方法优秀)
(b)行是xception可以检测的,他的方法检测出错的(说明xception等方法只能检测特定伪影)
©行是都检测出错的(模糊的,低对比度的检测不出来)