Abstract
BusterNet是一个纯端到端,可训练的深度神经网络结构。它有两个分支结构,之后是一个融合模块。两个分支分别通过人为视觉效果(visual artifacts)定位潜在的篡改区域以及通过视觉相似性定位copy-move区域。这是第一个能够做到定位 源/目标 区域的CMFD(copy-move伪造检测)算法。我们还提出了使用out-of-domain数据集的简单方案用于合成大规模的CMFD样例,使用阶段性的策略使BusterNet的训练有效。
1. Introduction
当前有大量应用到篡改过的图像的假新闻,这种现象的成因:
1、数码相机和手机的成本日益降低,导致数字图像数量的快速增长
2、图像编辑软件的可用性和易用性使编辑或篡改图像变得极其简单
Copy-move图像伪造是最常见也最容易实施的图像篡改方法之一。是从某张图上裁下一块区域粘到同一张图的另外一块区域上。
CMFD的目的就是要找出要检测的图像是否含有克隆过的区域。
copy-move可分为3类:
1、平凡伪造:将复制的部分直接粘贴在另一处
2、仿射伪造:将复制的部分经过仿射变换后粘贴在另一处
3、复杂伪造:原来复制的部分与粘贴的内容部分有更复杂的转换关系
本文提出的模型解决了当前最好的CMFD算法的两大局限性:
1、这是个端到端的深度神经网络,可直接对于CMFD任务最优化
2、它不仅能检测copy-move伪造,还能产生出源和目的区域的mask
2. Related Work
一般的copy-move监测网络由三大步骤组成:
1、特征提取
将输入图像转换成一个感兴趣特征的集合
2、特征匹配
对于所有的,测量和的相似度
3、后处理
基于一系列启发式(基于直观或经验的)的进一步提升CMFD表现的方法,比如说在一个更高层次的一致性上考虑特征集合整体的匹配以减少错判
可以根据特征提取以及之后的匹配方法将copy-move监测框架分成三类:基于块的方法(如DCT等);基于关键点的方法(如SIFT等);基于不规则区域的方法。
3. Copy-Move Forgery Detection via BusterNet
3.1 BusterNet概述
本文目标:设计出一个DNN流程:
1、端到端可训练,不包括需手工调整的参数以及判定规则
2、产生明显的源和目标篡改掩码的能力
一个有效的DNN方案应同时达到两个特征性能:
1、源和目标特征足以区分
2、但它们之间也要比其它未修改过的区域更加相似
上面的Mani-Det分支检测的是操作过的区域,产生的特征符合性能1,该分支产生一张二值掩码图。下面的Simi-Det分支检测的是克隆前后的区域,特征达到了性能2,该分支产生一张二值掩码图。最终将两个分支的特征融合在一起以预测出一个像素级别的copy-move彩色掩码图,其中蓝色部分表示与copy-move无关的部分,绿色部分表示源部分,红色表示copy之后的部分。两个二值掩码都可由此3类别的掩码图得到。
为简化讨论,我们假定输入图像的大小为256×256×3,不过实际上BusterNet是可以处理其他尺寸的图片的。
3.2 篡改检测分支
模型接收输入图像,使用CNN特征提取器提取特征,使用掩码解码器对特征图做上采样使尺寸和原始图像一致,并应用二元分类器实现辅助任务(产生二值掩码图)
任何CNN都可用作CNN特征提取器。这里使用VGG16结构的前4个blocks。产生的CNN特征的大小为16×16×512。之后通过掩码解码器应用反卷积恢复原始分辨率。掩码解码器交替应用BN-Inception和BilinearUpPool2D,最终产生出形状为256×256×6的张量。具体来说,空间维度的16倍增长是由于用了4次BilinearUpPool2D,而输出的filters维度是6是因为最后一个BN-Inception(2@[5,7,11])连接了3个Conv2D的输出,每个Conv2D输出filters都是2。最后,通过一个二元分类器预测出像素级别的篡改掩码,该分类器就是一个Conv2D层(有1个过滤器,大小为(3,3))后跟一个sigmoid激活函数。
3.3 相似性检测分支
相似性检测分支接收输入图像X,使用CNN特征提取器提取特征,通过Self-Correlation模块计算特征相似度,通过Percentile Pooling收集有用的统计信息,使用掩码解码器对特征图做上采样使尺寸与原始图像一致,并应用二元分类器实现辅助任务,即产生一个copy-move掩码。
相似性检测分支中的CNN特征提取器、掩码解码器、二元分类器与篡改检测分支相同,但是两个分支中的这些相同结构并不共享权重。
具体来说,Simi-Det分支通过CNN特征提取器产生一个16×16×512的特征张量。也可将该特征张量视作16×16的块状特征,即,每个特征有512维。接下来需要挖掘有用的信息以决定什么是匹配的块状特征。
Self-Correlation模块
给出两个块状特征和,其中,。使用皮尔逊相关系数来量化特征相似度:
其中是的标准化版本:。
对于一个给出的,对所有的求,得到分数向量:
Self-Correlation模块输出一个16×16×256的张量。
Percentile Pooling模块
如果能匹配,那么其中的一些分数就应该显著比剩余的分数要大。Percentile Pooling先将按降序排序得到。如果画一条关于的曲线(其中),如果能匹配那么这条单调递减的曲线将会在某个位置上有个突然的下降。
因分数向量的长度取决于输入图像的尺寸,为使网络能接收任意尺寸的输入,Percentile Pooling也会将排序后的分数向量标准化,即只选取出这些分数中我们想要选取出的百分之多少。也就是说我们忽略最开始的排序分数向量的长度L,只选出K个分数形成一个pooled percentile score vector :。其中,是最开始的排序分数向量的序号映射到预先定义的百分数上的序号范围:。
Percentile Pooling完成后,使用掩码解码器对特征上采样到原始图像尺寸,并通过二元分类器产生一个copy-move掩码实现辅助任务。
3.4 BusterNet融合
融合模块以两个分支的掩码解码器特征和为输入,连结这两个特征;使用参数为3@[1,3,5]的BN-Inception结构融合特征;使用一个Conv2D(1个3×3的过滤器)层后跟一个softmax激活函数的结构预测出三类别CMFD掩码。
4 BusterNet Implementation and Training
层的实现
除Self-Correlation和Percentile Pooling外其他模块都可以通过标准的方法构建。
Self-Correlation需要计算出,这个直接用上述公式计算即可;也需计算出所有i,j对,这个通过张量点乘运算一次性实现,不用像上面的式子那样一个一个计算了。两种运算均可微。
Percentile Pooling本质上是一个池化层(没有可训练的参数,只有确定性的池化函数)。可以注意到计算和的过程都不是可微的,但我们只需像MaxPooling一样实现反向传播就可以了(MaxPooling只有与最大值相一致的神经元接收梯度)。
训练细节
可用的公开数据集很小,且没有现成的数据集能提供copy-move源和目标的标签掩码。因此我们需要创建一个生成的数据集用来训练BusterNet。
初始的数据有原图像和与之关联的目标掩码,随机产生一个仿射变换矩阵同时转换源掩码和源目标图像,并把转换后的目标粘到图上形成copy-move篡改样例。图像源使用MIT SUN2012和Microsoft COCO数据集。所有生成的篡改过程为仿射伪造或复杂伪造(对应于前面说的copy-move三种伪造方式),复杂伪造的复制采用Poisson image editing。
作者还训练了一个二元分类器用于判断一个图像是真实未修改的还是经copy-move伪造生成的,只有能够骗过该分类器的样例才会用于训练BusterNet。
训练集、验证集、测试集划分:8:1:1。
一些外部数据集的图像也用于对Mani-Det分支的训练。
对于模型BusterNet,对CNN特征提取器使用在ImageNet上预训练过的VGG16模型,其余参数均随机初始化。
采用三阶段的训练策略:(1)独立地训练每个分支的副任务 (2)固定住两个分支,训练融合模块 (3)训练整个网络,端到端地微调BusterNet。
对副任务,使用Adam优化器,出示学习率1e-2,用二元交叉熵损失。10轮以后,一旦验证集损失趋于稳定,就将学习率减半直到改善在20轮时停滞。对于主任务,使用Adam优化器,多分类交叉熵损失,初始学习率1e-2用于融合训练,1e-5用于微调。
5 Experimental Evaluation
5.1 衡量指标和基线设置
衡量指标
这里使用precision,recall和F1分数衡量CMFD表现。
使用两种像素级别的评估策略:(A)统计整个数据集上TP,FP,FN的和并给出precision,recall和F1分数 (B)对每张图片给出precision,recall和F1分数,给出平均分数。
也使用图像级别的评估策略:只要有一个像素判定为假的就将整张图片标为假的,统计出TP,FP,FN,给出整个数据集上的precision,recall,F1分数。
基线设置
使用4种方法作为用于比较的基线:
a block-based CMFD with the Zernike moment feature,
a keypoint-based CMFD with the SIFT feature,
a dense field-based CMFD,
a deep matching and validation network (DMVN)
5.2 评估数据
使用两个标准数据集做评估:
(1). CASIA TIDEv2.0数据集(最大的公开的图像伪造检测基准)
(2). CoMoFOD数据集
上述两个数据集都不提供区分源和目标的mask。因此作者通过比较两数据集中伪造图像和相匹配的真实图像来合成mask。
5.3 CMFD整体表现分析
BusterNet的F1分数在三种评价策略上都很大程度上胜过其他方法。
通过比较Semi-Det分支和全部的BusterNet结构,可发现端到端的微调在像素级别和图像级别上都可将AUC提升3-4%。
5.4 BusterNet鲁棒性分析
下表展示了在每种篡改攻击下正确检测的图像数量(若一张图片的像素级别F1分数高于0.5,就视其为正确检测的)。除了一种篡改攻击外,BusterNet均优于其他方法。
5.5 源/目标分辨能力分析
对于每个预测出的mask,合并源和目的通道,使用连通分支分析(CC)找到所有伪造的区域,使用某一区域中多数像素的分类作为CC的标签。如果没找到CC就算作miss,如果一个实例中所有CC都是同一类标签则抛弃这个实例;否则便将该实例选入进行分析,而且只有源和目的伪造区域都被正确分类时才将其标为“正确”。
miss指missed samples,overall accuracy是正确识别样本与总样本的比率,opt-in accuracy是正确识别样本占所有选入样本的比率。
overall约12%的准确率是比较低的,但作者说要考虑到BusterNet的训练数据只是合成数据和有限数量的真实篡改数据,且简单基于CC的标记分配方法对于复杂的真实情况来说也过于简单。因为有时候BusterNet至少是能正确识别出部分的目标区域的(只不过由于将目标区域更多地识别成了源区域,用CC标记分配后就将这一块区域标记成了识别出的是源区域)。而如果只看opt-in accuracy,平均值大概为78%,就还挺高的了。
附:单词表
- manipulation 操作,处理,篡改
- tamper 做手脚,篡改,破坏
- proliferation 增殖,扩散
- malicious 恶意的,恶毒的
- intent 意图,目的,含义
- sophistication 复杂,诡辩
- entail 使需要(vt.),引起,需要,继承(n.)
- w.r.t. with respect to,关于,谈及
- forensic 法院的,法医的
- pistol 手枪
- heuristic 启发式的
- holistic 整体的,全盘的
- homogeneous 均匀的,齐次的,同类的
- dashed 虚线
- monotonic 单调的