CFL-Net:使用对比学习的图像伪造定位
源码链接:https://github.com/niloy193/CFLNet
摘要
传统的伪造定位方法的缺点是过度拟合和只关注少数特定的伪造痕迹。我们需要一种更通用的图像伪造定位方法,能够很好地适应各种伪造条件。底层伪造区域定位的一个关键假设是,无论伪造类型如何,每个伪造图像样本中未被篡改和被篡改区域的特征分布都存在差异。在本文中,我们的目标是利用这种差异特征分布来帮助图像伪造定位。具体来说,我们使用对比损耗来学习映射到一个特征空间,在该空间中,每个图像的未篡改区域和被篡改区域之间的特征被很好地分离。此外,该方法不需要对伪造类型进行任何先验知识或假设,就可以对伪造区域进行局部定位。我们证明,我们的工作优于几个现有的方法在三个基准的图像处理数据集。
引言
方法的提出
通用的图像伪造检测或定位方法通常依靠不同的伪造线索或伪造操作留下的足迹,如JPEG伪影、边缘不一致、噪声模式、相机模型、EXIF不一致等,来检测或定位伪造。然而,训练模型专注于特定的伪造线索有一个主要的缺点:只有当特定的伪造足迹在伪造的图像中显著时,模型才能检测到伪造。这是不可接受的,因为在现实生活中,不同的操作技术会留下各种各样的伪造线索。因此,专注于特定的伪造线索并不是最佳选择。例如,如果一种方法侧重于边缘不一致来检测伪造,那么该方法就不能很好地检测伪造图像,因为在伪造图像中,未被篡改和被篡改区域之间的边界是平滑的。同样,如果一种方法专注于重采样特征,那么如果一幅图像在未被篡改和被篡改的区域多次应用相同的JPEG压缩,它将很难检测出伪造。
现有方法的另一个主要缺点是:这些方法使用交叉熵损失,没有附加的训练约束。传统的基于交叉熵的方法假设每个类别内的所有实例在特征分布上应该接近。这忽略了每个样本的独特信息。因此,交叉熵损失鼓励模型对同一类别提取相似特征。这可能有助于对Imagenet或cityscape等数据集进行分类或分割,在这些数据集中,相同类别的对象应该具有类似的特征。然而,在图像伪造定位中,由于不同的操作会在被篡改区域留下不同的伪造足迹,因此对数据集中所有被篡改区域提取相似的特征并不是最优的。因此,在没有附加约束的情况下,一个常见的基于交叉熵损失的框架容易对特定的伪造模式进行过拟合,这不利于泛化。
考虑到这些局限性,我们在最近提出的对比损失的基础上,提出了一种新的伪造定位方法,称为对比伪造定位网络或CFL-Net。我们的方法依赖于底层伪造区域定位的一般假设,即无论伪造类型如何,未被篡改区域和被篡改区域之间的特征统计量仍存在差异,即颜色、强度、噪声等。在本文中,我们着重于利用特征空间中的这种差异,通过对比损失来帮助图像伪造定位。具体来说,我们的模型学习映射到一个特征空间,在这个空间中,每个图像中未被篡改和被篡改区域之间的特征被很好地分离和分散。因此,我们的方法并不专注于特定的伪造线索。此外,我们还计算了每个样品的对比损失。因此,我们的方法对每个样本的伪造线索进行了不同的处理,这有助于归纳。
主要贡献
- 提出了一种新的图像伪造定位方法,称为CFL-Net。利用了每个图像样本中未被篡改和被篡改区域之间特征分布的差异,而不关注特定的伪造足迹。因此,我们的方法更适合于检测真实生活中的伪造。
- 解决了在无任何约束的情况下使用交叉熵损失进行通用图像伪造定位的问题。我们将对比损失纳入其中,并针对这个问题进行调整。
- 我们在基准操作数据集上进行了大量的实验,表明我们的方法优于现有的几种图像伪造定位方法。
CFL-Net
总体框架
如图2所示。使用一种双流网络,一个流将输入的RGB图像I∈R3×H×W作为输入。我们使用SRM过滤器到RGB图像,并使用它作为其他流的输入。SRM滤波器是一种高通滤波器,它增强了输入图像的高频信息,从而更突出边缘信息,有利于假图的定位。我们使用ResNet作为这两个流的Backbone。然后,我们通过将特性通道连接起来,融合两个流中的特性。融合特征图采用ASPP模块,提取多尺度信息。全局上下文有助于收集更多的线索,如对比度差异等,用于操作检测。ASPP模块通过在不同尺度上提取信息来帮助实现这一点,比如全局上下文以及更细粒度的像素级上下文信息变得可用。
然后我们使用分割头/解码头和投影头,将ASPP模块提取的上采样多尺度特征作为输入。我们选择一个DeepLab风格的分割头,输出大小为H ×W的最终分割图。投影图由Conv-BatchNorm-Conv层构成,该层将特征图投影到F∈R256×H×W, 256为嵌入维数。将嵌入的特征图F传递给对比学习模块。评估时不使用投影头。
对比学习模块
对比学习模块如图3所示。为了便于可视化,如图所示的投影头输出一个256 × 8 × 8形状的feature map F。然后将feature map划分为4 × 4个patches。然后对每个patch中的4个空间向量进行平均,得到大小为4 × 4的embedding(图中记为“k × k embeddings with Label”)。ground truth mask也分为4 × 4个patch,统计每个patch中出现的最大像素标签,得到输出的4 × 4 mask(图中记为“k × k mask”)。等式。(2)然后用于计算“k × k Embeddings with Label”的每个像素嵌入的对比损失。
我们的目标是对比每个样本的未篡改像素嵌入和操作像素嵌入,以便两个区域之间的特征分布得到很好的分离。由于我们嵌入的feature map在空间上的大小为H×W,并且我们有相应大小相似的ground-truth M,所以我们知道嵌入的每个像素的标签。因此,我们可以使用监督对比学习。对于每个查询像素嵌入zi,该嵌入的对比损失为:
这里,k+或正键是一个像素嵌入,它具有与查询zi相同的标签。Ai表示投影头输出特征图F中所有k+的集合。同样,k-或负键是F中与zi有不同标签的像素嵌入。
然而,以这种方式计算Li有一些主要的局限性。首先,基于单像素嵌入的对比损耗计算没有考虑相邻嵌入的上下文信息;此外,为了计算损失,需要存储一个大小为HW × HW的点积矩阵,这是内存消耗。
一种可能的解决方案是,从对应于[34]的两个不同类的F中随机采样一些像素嵌入。然后,使用这些嵌入来计算(1)。这样,内存需求大大降低。然而,该解决方案不考虑来自邻近像素的上下文信息。同样,类似于[21],另一种解决方法是将两个区域的所有像素嵌入值平均,然后使用平均嵌入值计算损失。虽然这可能有助于计算机视觉任务,如分割语义对象等,但不适合图像操作检测任务。因为,最近的研究表明,对于需要微妙信号的任务来说,池化是不可取的,因为池化强化了内容并抑制了类似噪音的信号。这些细粒度的痕迹有助于检测伪造。因此,为了在上下文和细粒度跟踪之间找到平衡,我们选择将F划分为局部区域。
我们首先将F在空间上划分为k × k个patch,得到fi∈R256×h×w,其中i∈{1,2,3,…k2}, h = h k, w = w k。然后在每个局部区域取像素嵌入的平均值。从而使每个fi变成R256的形状。以类似的方式,我们将ground truth mask M划分为k × k个patch。M在未篡改区域的值为0,在伪造区域的值为1。得到mi∈Rh×w,其中i∈{1,2,3…k2}, h = h k, w = w k。为了获得每个mi的标签值,我们计算h×w补丁中0和1的个数。然后我们将mi的值指定为补丁中出现的最大值。
现在,我们有像素嵌入fi和每个嵌入mi对应的标签。我们现在可以使用监督对比损失为:
这里,Ai表示所有其他像素嵌入k+的集合,这些像素嵌入具有与fi相同的标签。同样,k−是所有与fi有不同标签的负像素嵌入。损失函数中的所有嵌入都是L2归一化。对于单个图像样本,我们通过对所有嵌入的图像平均,得到最终的对比损失:
我们需要优化的最终损失是:
这里LCE是交叉熵损失。
实验
数据集
IMD-20、CASIA、NIST-16
基线模型
- J-LSTM采用CNN-LSTM混合架构来捕获未篡改区域和被篡改区域之间的区别特征。
- RGB-N采用双流并行网络,分别发现篡改特征。
- ManTraNet使用特征提取器捕获操作轨迹,并使用局部异常检测网络来定位操作区域。
- SPAN使用金字塔结构和自注意块来建模图像块的依赖性。
- Transforensics使用带有密集自我注意编码器和密集校正模块的视觉变换器,对不同尺度下局部斑块之间的所有成对相互作用进行建模。
结果
定量分析
表1中报告我们的方法和基线模型的AUC得分(以%为单位)。
需要注意的是,这里所述的RGB-N和SPAN的结果是在各自的论文中所报告的精细结果。 J-LSTM和Transforensics不进行任何预训练。 虽然Mantranet在合成操作数据集上预先训练了它们的模型,但它们不会在特定的数据集上进行微调。 从表中可以看出,CFL-NET在基线模型中的所有数据集上实现了最好的定位性能。 特别是CFL-NET在IMD-20数据集上的性能明显优于所有基线模型。IMD-20数据集是一个具有多种伪造类型的实际操作数据集。 具体地说,CFL-NET在IMD-20数据集上获得了89.9%的AUC得分,比第二大性能良好的模型–转化模型提高了5.1%。 因此,它验证了我们的主张,即CFL-NET非常适合定位现实生活中的伪造。 我们的模型在其他数据集CASIA和NIST上的性能也优于基线模型。 此外,值得指出的是,CFL-NET在没有对合成操纵数据进行预训练的情况下就实现了这些结果。
由于增加了对比损失,我们提出的模型不关注特定的伪造足迹,而是学习更普遍的特征。因此,我们的模型应该比没有对比损失训练的模型更好地泛化不同的操作数据集。因此,做了一个泛化实验,评估了在一个数据集上训练的模型,并对其余数据集的测试集进行了评估。 表2显示了结果。
可见,用对比损失训练的CFL-Net在跨数据集的泛化方面表现得很好。 在所有情况下,该模型都比没有对比损失的训练模型表现得更好。 当在IMD-20上训练和NIST测试集上评估时,我们提出的模型甚至优于Mantranet的AUC得分。当在IMD-20数据集上训练时,性能得到了最大的提升。IMD-20是现实生活中的图像处理数据集,因此对该数据集的训练有助于模型学习大多数可推广的特征。因此,我们提出的模型在IMD-20上训练,并在其他数据集上评估,与训练的模型相比,在没有对比损失的情况下产生了最大的性能改进。
还应该注意的是,在NIST上训练并在其他数据集中评估的两个模型都表现不佳,因为NIST的图像很少,即数据集中的584个图像。 因此,使用NIST很难推广到其他数据集。 尽管如此,我们提出的模型在没有对比损失的情况下比训练的模型表现得更好。
定性分析
为了表明我们的对比损失通过避免同类特征的聚类来保持特征的变化,图5显示了我们通过T-SNE将从分割头获得的类特征可视化。 左列显示了在IMD20和CASIA测试集上,当只使用交叉熵损失来训练CFL-Net时,每个图像样本的平均特征向量。 可见,对应于未篡改(图中绿色)和篡改(图中红色)区域的特征在这里都拥挤了。 另一方面,右列显示了使用交叉熵和对比损失训练CFL-Net时的均值特征。 在这里,两个区域对应的特征更加分散。 因此,不同的操作足迹更容易分离。 实验表明,传统的交叉熵损失由于类别内的不变性而降低了图像伪造定位的泛化能力,而本文提出的方法通过分散特征分布来提高泛化能力。
消融实验
研究损失对性能的影响,如表3所示。从表中可以清楚地看出,增加对比损失确实有助于定位。 在实际图像处理数据集IMD-20上的改进更为突出。 对比损失有助于提高AUC评分4.7%。 值得注意的是,在没有对比损失的情况下,我们的方法已经取得了很好的效果。 这是因为我们的模型与RGB-N相似,因为我们也使用了两个流网络,即RGB和SRM流。 此外,我们仔细补充我们的网络与ASPP模块和Deeplab解码器头,这有助于提高整体性能相比RGB-N。 使用对比损失进一步改善了我们的结果,并有助于优于所有其他基线模型。
总结
本文从一个新的角度,即使用对比学习方法,研究了通用图像伪造定位问题。 我们发现了现有方法的一个主要缺点,即专注于特定的伪造足迹,并使用交叉熵损失来不受任何约束地定位伪造。 针对这一缺点,我们将交叉熵损失与对比损失相结合,提出了一种新的图像伪造定位方法,称为对比伪造定位网络或CFL-NET。 我们在三个基准图像处理数据集上进行了实验,并将实验结果与近年来主要的伪造定位方法进行了比较。 CFL-NET在AUC度量方面优于所有方法。 此外,在RealLife图像处理数据集IMD-2020上的改进更为突出。 在未来的工作中,可以考虑一种更复杂的融合机制来融合来自RGB和SRM流的特征映射。 例如,注意力模块或最近提出的视觉变换器可以用作融合机制。