1、解决的问题:
图像操作通常会留下图像编辑类型所特有的痕迹,分析不同图像操作的痕迹,图像取证,检测图像篡改。
2、现有检测方法:
调整大小和重采样、中值滤波、对比度增强、多JPEG压缩等,但是这些检测的都是单个目标操作,还要融合多个取证检测的结果,并且为不同的图像操作创建取证检测器是一个困难和耗时的过程。
3、constrained CNN
普通的cnn网络倾向于学习图像的内容,而不适合学习与内容无关的篡改痕迹,所以提出了一种constrained CNN的方法,让其来学习低级的操作特征。
3.1、做法:
用constrained CNN提取预测残差特征(因为预测残差很大程度上不包含图像内容,因为残差就是篡改痕迹),把constrained CNN放到CNN开始处,然后从这些残差中形成更高层次的特征。这将抑制图像的内容,并自适应地学习最适合检测取证痕迹的低级残差特征;更高层次的取证特征是从深层CNN的残差中学习得到的。
3.2、损失函数:
其中yi *(k)和yi(k)分别是第k类第i个图像的真实标签和网络输出,输出层中有m个训练图像和c个神经元(CrossEntropy)
3.3、残差滤波器:
(1)表示cnn的第1层,k表示每一层有k个滤波器,每次迭代过程中,先将滤波器的中心置为-1,再将其余部分归一化总和为1(当前位置权重除以除中心位置权重之和)
随机初始化权重
前向传播
随机梯度下降和反向传播误差更新滤波器权值
把第一层的K个滤波器的wk(0,0)置0
归一化除了滤波器中心外其余的权值,和为1
将所有第一层的K个过滤器的wk(0,0)=−1
残差:
残差:
残差滤波器:
即残差滤波器相当于上述公式中的r,我们要找到一种关系f(I)与I,那我们设f(I)=~Wk,即
设I为一个冲激滤波器σ,形式是中心为1,其余位置为0,则Wk=~Wk-σ,
则通过约束后的输出为:
4、网络结构:
输入一个256*256的灰度图
(1)残差提取层:第一层学习低级的操作特征,这些特征很容易被非线性操作破坏,如池和激活层,因此,该块的输出直接传递到常规卷积层。
(2)层次特征提取:学习更高层次的残差特征,用一组连续的卷积层,每个卷积层随后是批处理规范化、激活函数和池化层。
(3)跨特征学习:使用1×1卷积层,使constraint CNN仅学习特征映射之间的关联,保持feature map 尺寸不变(即不损失分辨率)的前提下大幅增加非线性特性,把网络做得很deep
(4)分类:三层全连接层,前两个全连接层包含200个神经元,最后通过softmax分成6类。(实验分别比较了softmax,和两个FC+极度随机树ET)
5、实验
5.1、单操作检测
50000张图片作为训练集,60个epoch,batch size=64,动量 = 0.95, 衰减率 = 0.0005, 学习率 = 0.001,每6个epoch减少0.5倍,ET分类器通过改变树的数目从100到600;10000作为测试集。
5.2、多重操作检测
10w张图片作为训练集,60个epoch,batch size=64,动量 = 0.95, 衰减率 = 0.0005, 学习率 = 0.001,每6个epoch减少0.5倍,ET选用700棵树;32000图片作为测试集。
5.3、任意多操作检测
5.4、与基于SRM方法的比较