原作者:Belhassen Bayar, imageMatthew C. Stamm等
笔记整理:ganyongdong 2020.10.13
如有错误或者不清楚之处,欢迎指正交流,如需转载请注明出处
论文:https://dl.acm.org/doi/10.1145/2909827.2930786
1.摘要
- 文章提出了一种基于深度神经网络的通用的多操作(Manipulations)取证方法;
- 提出了一种CNN结构,能够从训练数据中自动学习操作检测特征并抑制内容检测特征;
- 不依赖预处理,具有较高的通用性和自适应性。
- 实验结果:检测不同的操作平均精度达到 99.10%
2.介绍
-
当前取证操作主要针对特定的操作,设计专用于检测这些痕迹的算法,比如resizing, resampling, median filtering, contrast enhancement等。这种方法存在以下缺点:
- 篡改图像可以有多种操作,调查者需要使用大量检测方法一一判断待检测图片;
- 一张图像进行多种操作的时候,需要调查者控制总体的误报率和处理结果冲突等问题;
- 随着新的操作技术发展,每种都需要设计针对性的检测算法。
-
所以设计通用的取证算法很有意义,相关工作如下:
- 隐写分析工具能够检测多种图像编辑操作,方法是分析像素值预测误差的联合分布来建立像素相关性的局部模型,然后从这些联合分布中提取检测特征(2012)。
- 构建操作前和操作后的图像块的高斯混合模型(GMMs)(2015),方法是比较不同操作的GMM下图像块的对数似然性,然后使用一系列二进制操作检测器检测。
以上工作都是预先选择一个模型用于提取对应的特征
文章提出了这样一种使用CNN自动学习图像被编辑后留下的痕迹的通用检测方法,能自适应提取操作特征,抑制内容特征,并提出了一种新的卷积层。
3.约束卷积层 (放在CNN第一层)
2015年,Chen等人的工作发现,CNNs的倾向于学习图像的内容特征,而不是操作特征。所以他们对图像提取高维特征集,称为中值滤波残差,然后再输入到CNN。(这个重要,可以作为自己的引用)
关键思想:图像内容的像素之间存在局部结构关系,而图像操作会以一种可觉察的方式改变这种局部关系,所以需要对第一个卷积层进行约束。
新卷积层(第一个卷积层)使用预测误差滤波器(prediction error filters),即预测滤波窗口的中心值减去当前中心值得到预测误差。具体来说CNN中第一层中的k个滤波器都有以下约束:
其中,是滤波器中位置上的权重参数,是滤波窗口中心位置的权重。训练的时候,每个滤波器器先随机初始化,然后添加以上约束,滤波器权重经历随机梯度下降更新之后,每次迭代都添加以上约束。这将允许CNN自适应地学习一组强有力的操作检测特征提取器,而不用其他先验。伪代码如下:
- 文章提出的约束卷积层是从以前的取证和隐写研究中获得的灵感,实际上,很多取证和隐写研究都可以看成是如下检测方法:根据固定的规则,通过邻域预测每个像素值,计算预测误差,根据这些误差创建低维特征向量或者统计量,然后基于这些特征向量和统计量做出决策。
4.网络结构
- 网络结构共8层,约束卷积层(convRes) -> 普通卷积层 -> 最大池化 -> 普通卷积层 -> 最大池化 -> 全连接层x3
- 约束卷积层输出没有经过非线性激活函数处理,原因非线性操作会破坏特征图中篡改操作留下的痕迹特征。
- 每个最大池化后跟着LRN(局部响应归一化)。
- 全连接层fc1和fc2应用dropout:50%,减少过拟合。fc3应用softmax,将输出缩放为每个类别的概率。
dropout: 为了减少过拟合,神经网络中神经元以概率p(这里是50%)设置激活值为0,即不参与计算输出,减少神经元之间的耦合。
5.实验
-
数据准备:
- 使用12种相机采集没有经过任何处理的图像,只保留三通道中绿色通道作为灰度图像。
- 把图像分成256x256个块(blocks),每块对应一个新图像,该新图像具有其对应的不同操作篡改图像,共得到261800个未篡改图像块。
- 通过对未篡改图像进行不同操作生成一系列篡改图像,有以下操作:
- 中值滤波(Median Filtering):5x5 内核
- 高斯滤波(Gaussian Blurring):5x5 内核,标准差
- 加高斯白噪声(AWGN):标准差
- 重采样(Resampling or resizing):双线性插值,比例因子为1.5
- 把这些图像裁剪成256x256个块,得到333200个操作图像块。
- 训练和测试期间,所有块被进一步裁剪成227x227块
训练参数: 动量m=0.9,权重衰减率d=0.0005,固定学习率
-
结果
-
多个二分类器方法,即对四种操作,训练四个二分类器
-
多分类方法
-
6.延申到对自己工作的想法
- 数据集,添加噪声可以把椒盐噪声改成高斯白噪声,设定不同的方差看结果。
- 数据集,增加重采样类别。
- 特征提取上,当前的卷积应该提取了很多内容特征,文章在第一层卷积使用针对操作的约束卷积的想法可以参考,操作特征提取后不要加非线性激活,不然可能破坏操作特征。
- 网络结构可以简化,考虑金字塔结构检测不同尺寸目标区域是否有意义,可以实验尝试。