A Full-Image Full-Resolution End-to-End-Trainable CNN Framework for Image Forgery Detection

出处 :2019 ResearchGate

作者 : Francesco Marra, Diego Gragnaniello, Luisa Verdoliva and Giovanni Poggi

摘要 : 目前深度学习模型只能输入很小的图像,叫做resizing。在图像篡改中,这可能会破坏高频细节。也可以在放弃对整幅图分析的情况下,做patch-wise处理。

本文提出基于CNN的篡改检测网络(拼接复制粘贴修复)

  1. 可以基于full-resolution做决定
  2. full-image,从图像整体信息做决定
  3. 使用gradient checkpointing,可以使用小内存和弱监督做端到端的训练,联合优化所有参数。

数据集 Snipaste_2020-04-27_07-53-41

实验环境 Training took about three days with an Nvidia Tesla P100 GPU. With the same hardware, testing takes about half a second for a 3072×4096-pixel image

metrics the detection AUC、ROC

结构

包含三部分:

  1. patch-wise feature extraction:分成overlapping patches。使用xception net 做特征提取器(取倒数第二层的输出做特征向量,抛弃最后一层输出的概率,调整输入层以适应RGB+image noiseprint band的输入 )
  2. image-wise feature aggregation:使用了最大、最小、平均、均方池化
  3. global decision:整幅图像用单个描述符 F 描述,使用两层全连接层做分类

图3是网络结构

Snipaste_2020-04-27_07-15-20

池化公式如下

Snipaste_2020-04-27_07-25-20

\(F_i\)是第i个patch的c维特征向量,\(N_p\)是patches的数量

池化类型会影响反向传播更新参数。\(F_{agg}\)是聚合后的特征,L是损失函数,\(\theta\)是cnn的参数,梯度公式是

Snipaste_2020-04-27_07-29-28

对应不同的池化

Snipaste_2020-04-27_07-30-10

\(\delta_{i,j}=1\)当i=j时,否则=0。\(i_{max}(c)\)指最大特征向量。当同时使用多种形式的池化时,梯度作为单个项的加权和


本文的结构是端到端可训练的。

同一图象里的patch的标签相同,训练时不需要逐像素的ground truth,可以使用任意大小的图像。

在每个 training batch of images

  1. 每个图像的patches做内循环,在循环结束时计算反向传播
  2. 对batch的图像做外循环,为每个内循环梯度求和,在批处理结束时更新梯度

图4是传统的cnn传播过程。

Snipaste_2020-04-27_07-43-25

每个圆表示一个层,黑点表示存储激活函数。a)前向传播,每一层的激活函数都存储。b)从最后一层传播梯度,使用之后就擦除(小黑点)。但是深度网络包括数百层,每层有几个特征图,其大小通常与输入成比例,当一次处理一个大的输入图像时,需要存储大量的变量

使用 the gradient check pointing strategy[32] 梯度检查点策略

Snipaste_2020-04-27_07-45-30

a.前向传播,使用后就删除所有激活函数,除了红点表示的“检查点层”。反向传播b-e,一次处理一组层,在处理时重新计算激活函数。b.允许反向传播梯度,直到检查点层本身。c.检查点之外的层上的所有变量都被删除,该过程将继续进行,并生成一组新的层d-e

通过明智地选择检查点的数量,可以显著地减少内存占用。虽然每个激活都要计算两次,但是计算开销是有限的,因为前向传递比反向传递参数少

实验

A 训练

生成一个合成数据集Vision / UCID

如表1

Snipaste_2020-04-27_07-49-23

vision dataset:包含由35个不同设备使用自然高质量JPEG压缩获得的7565张图像

UCID:为了生成经过处理的图像,将从UCID数据集[34]的未压缩图像中手工裁剪的81个对象中提取的对象拼接到这些对象上。再做压缩旋转翻转操作。图6是例子

Snipaste_2020-04-27_07-52-32

初步实验

通过消融实验确定网络的具体实施,

  1. 使用RGB+noiseprint bands做输入
  2. 使用Xception做特征提取器
  3. 通过包含所有的池化来做聚合
  4. 使用两个全连接层,FC1=512.FC2=256

Snipaste_2020-04-27_07-58-18

然后生成THE DRESDEN/FAU DATASET,做鲁棒性测试 ,如表3

Snipaste_2020-04-27_08-02-57

检测对比实验

对比方法

image-level:

the SPAM+SVM method [8]

the CNN+SVM method of [16]

LSTM-EnDec [25]

patch-level:借用[29]的结果

CFA [2]

DCT [3]

NOI [1]

EXIF-SC [31]

Noiseprint [29]

数据集

DSO-1[40]:只包含拼接,很少或没有后期处理,只包含大尺寸的高质量图像

korus[41]:同时存在拼接和复制,只包含大尺寸的高质量图像,没有压缩

NC2017

MFC2018

MFC2019[42]

NIST

表4是 the detection AUC 结果

Snipaste_2020-04-27_08-07-22

strong (pixel-wise ground truth),weak (only image label), (none) for blind methods

图8是ROC曲线

Snipaste_2020-04-27_08-13-21

表5 6

Snipaste_2020-04-27_08-19-17

图9是相应的ROC曲线

Snipaste_2020-04-27_08-20-39

篡改定位实验

得到the Grad-CAM(guided gradient weighted class activation map)[43],图10是Dresden/FAU dataset的activation map

Snipaste_2020-04-27_08-25-35

可以对用户选择的ROI区域进行分析,如图11

Snipaste_2020-04-27_08-30-58

未来工作方向

应考虑采用更好的池化形式,以便在聚合阶段保存大范围空间关系。
此外,还应考虑图像和对象语义,以补充当前框架分析的底层信息。

猜你喜欢

转载自www.cnblogs.com/qina/p/12784388.html