吴 旭,刘 翔
(上海工程技术大学 电子电气工程学院,上海 201620)
随着信息技术的不断发展,数字图像急剧增多。不法分子利用高智能的图像编辑软件对数字图像进行恶意篡改,并将其传播到网络社区及新闻报刊上,对公众舆论造成了不良影响。图像取证技术可被用于防止这类恶性事件的发生,因此建立并完善有效的图像篡改检测手段具有一定的现实意义。
复制-粘贴篡改是一种常见的图像篡改手段,它指的是将图像上的某个区域或对象经复制后再粘贴到同一张图上的其他区域,覆盖掉目标区域原本的内容,从而扭曲人们对于图像整体语义信息的理解。复制-粘贴篡改[1]检测(Copy-Move Forgery Detection,CMFD)任务的重点在于源区域和目标区域需分开检测。复制粘贴篡改示例如图1所示,第1行为篡改图,第2行为真值标签掩膜图。
传统算法对手工设计的特征进行提取后,需要对该特征和图像统计特性进行对比分析,从而定位篡改区域。传统算法可分为基于图像块和基于特征点检测两类。文献[2]提出采用量化的离散余弦变换(Discrete Cosine Transform,DCT)系数来描述图像块特征。文献[3~4]陆续提出结合DCT与奇异值分解[3]以及在重叠的圆形图像块中提取四元数矩[4]作为图像特征等基于图像块的方法。尺度不变特征变换(Scale-Invariant Feature Transform,SIFT)[5-6]和加速鲁棒特征(Speed Up Robust Features,SURF)[7-8]也是目前较为常用的方法。SURF算子利用 Hessian 矩阵的快速计算对SIFT特征维度高、计算时间长等不足进行了改进。传统算法对于仿射变换操作鲁棒性差,时间复杂度较高,因此若要实现对篡改区域的准确定位,还需继续开发新的算法。
近年来,图像被动取证领域出现了通过卷积神经网络自适应提取篡改特征的方法,并取得了较好的效果。文献[9]提出利用卷积神经网络提取图像特征,用于复制-粘贴伪造检测。文献[10]提出了一种在ImageNet预训练模型上使用少量训练样本微调网络模型的方法,但该方法鲁棒性较差。文献[11]提出使用卷积核网络进行特征提取,并采用自适应分割方法得到图像篡改定位结果。文献[12]利用卷积神经网络从图像中提取块特征,然后根据不同块之间的自相关性进行特征点匹配,最后再通过反卷积神经网络生成伪造定位结果。文献[13]提出用稀疏网络结构解决图像复制粘贴伪造检测和定位问题。但上述方法只能定位检测出相似的区域,无法准确分辨出源区域和目标区域。文献[14]提出了篡改源与目标的分离检测方法。该方法融合了基于边界伪影的方法和区域相似性方法的优势,建立了复制-粘贴三分类的端到端深度神经网络(Deep Neural Networks,DNN)检测框架。但该方法的定位精度略显不足,其针对目标区域的检测准确度有待提升。文献[15]使用条件对抗生成网络对复制-粘贴篡改源检测任务进行了算法改进,并引入了负样本进行实验证明。结果表明该方法可提升检测定位的性能,但由于缺少自相关性的计算,因此算法的性能仍有进一步提升的空间。
为了完成CMFD定位篡改区域并区分来源的三分类检测任务的评估和测试,需对篡改图进行3种颜色的像素级标注。本文将图像被动取证的经典数据集CASIA2[16]和CoMoFoD[17]提纯出复制-粘贴篡改图,并利用手工标注的方法标注三分类真值掩膜。如图2所示,第1列为复制-粘贴篡改图,第2列为源与目标篡改区域分离的三分类真值掩膜,其中白色为源区域,灰色为目标区域。
(a) (b)
本文提出的模型为双分支融合结构,主分支用分割的方法定位复制粘贴篡改区域。由于图像篡改的实质可看成是基于弱特征的语义分割问题,因此本文采用经典的U-net框架作为初步分割篡改区域的主体网络。副分支改进了传统的自相关算法,引入了度量学习的理念,采用网络训练的方式自主学习同一张图上的像素相关度,并计算自相关性。实验证明,新方法的计算结果更为可靠,检测结果更精准。副分支通过反卷积最终分割出包含篡改源区域和目标区域的掩膜图。将此双分支融合后,进行端到端训练,最终预测出三分类结果,在实现定位的同时,区别出复制粘贴源与目标区域。算法框架如图3所示。
图3 本文算法框架
1.2.1 孪生网络自相关
孪生神经网络[18](Siamese Network)通过共享权值的方式,提取出两个输入的共域特征,映射到相似空间后形成新的表示,并通过计算出两者间的相似度距离来衡量输入间的相似程度。文献[14]采用皮尔逊系数[19]表示特征线性相关程度,但该方法不适用于非线性特征,因此导致了漏检和误检。本文在文献[14]的研究基础上加以改进,用VGG16作为特征提取孪生主干网络,并加入非局部模块来增强像素间的非线性特征。本文构建的孪生网络框架如图4所示,通过训练共享权重为W的特征来提取网络进行篡改区域相似度学习;然后,将篡改图像与真值掩膜图成对分块地输入到相同的特征提取网络,并用池化替代原本的全连接层,输出形状为16×16×512的自相关矩阵。
图4 孪生网络框架
具体来说,n维图像块的第k层像素级特征图为
(1)
先将其进行归一化处理
(2)
式中,μ为均值;σ为标准差,则第k层特征间的距离Lk如式(3)所示。
(3)
将16×16个归一化后的特征图不断重复上述计算流程,形成一个自相关向量式
sim[i,j]={L[(i,j),0],…,L[(i,j),255]}
(4)
最终计算第k层的特征张量,得到自相关矩阵sim[i,j],并将其进行降序排序,得到式(5)。
sim′(i,j)=sort[sim(i,j)]
(5)
越大的像素分量表明相似度越高,篡改的概率也越大。
1.2.2 非局部自注意力
通常基于CNN的特征提取网络由于普通卷积核步长的限制,只能提取到局部区域内的特征而忽略了对全局特征的提取,而复制粘贴篡改检测任务的本质是获取全局相关性而不是局部性地计算相似度。基于此,本文采用非局部自注意力机制来捕获通道特征间的相互依赖性。
非局部算子[20]是一种特殊的自注意(Self -Attention)机制[21],其先计算当前位置的像素点与特征图内所有像素点间的相似度,然后进行加权求和来表示当前位置的特征信息,从而达到利用全局特征来增强局部特征的目的。非局部操作算子可直接计算两个时空位置间的依赖关系,获取长范围的统计信息,并保持输入输出尺度不变。
设输入图像块特征图为X,其形状为N×H×W×C,其中N为batchsize,H为高度,W为宽度,C为通道数。
将非局部操作算子封装成模块,如图5所示,其中X和Y分别为图像输入和输出的特征图,两者具有相同维度。
图5 非局部模块
本文结合残差网络特点进行计算,则有
(6)
式中,i和j分别是输出和输入特征的位置索引;函数f(xi,yj)用于计算相似性;g(xj)用于计算输入特征图在j位置的表示;C(x)为归一化参数。本文将g(xj)函数设置成1×1卷积,选择嵌入高斯作为相似性度量函数
(7)
g(xj)=Wgxj,θ(xi)=Wθxi,φ(xj)=Wφxj
(8)
式中,W均为学习权重。首先对输入的特征图X进行线性映射得到3个特征;然后通过变维操作,融合3个特征除通道数外的维度;接着对θ和φ进行矩阵点乘操作,得到自相关特征并进行归一化;最后计算出自注意力系数并与图5中的特征矩阵g相乘,同时采用1×1卷积扩展通道数,使输出与原输入做残差运算,获得非局部模块的输出Zi。
Zi=Wzyi+xi
(9)
反卷积解码(Mask Decoder)模块改进了传统U-net,并采用Inception卷积拼接联合双线性上采样的方式实现图像尺寸复原,卷积核大小为1×1、3×3、5×5。加入多尺度融合的特征后,采用二进制分类器(Binary Classifier)即可得到与原图分辨率一致的分割预测结果。
BusterNet[14]可实现图像复制粘贴篡改源检测与定位任务。本文采用BusterNet提供的USCISI-CMFD数据集作为训练集。该数据集中包括10万张复制-粘贴篡改图及其对应的真值掩膜。本文按照7∶2∶1的比例将USCISI-CMFD数据集划分为训练集、测试集和验证集。
本文将训练数据统一为256×256×3的尺寸,采用Pytorch框架进行实现,GPU为NVIDIA GeForce GTX 1080Ti。本文采用分步训练的方式,先训练两个二分类分支,再冻结权重训练融合分支,最后解冻整个网络并微调。此外,本文采用Adam优化器来降低网络损失,并加入学习率衰减使后期迭代不再需要手动调整。初始化学习率为0.000 1,微调学习率为0.000 3。二分类分支采用交叉熵损失,融合后的多分类器(Multi-Class Classifier)采用分类交叉熵损失,迭代80轮后网络完全收敛。
为了评估本文提出模型的性能,采用精确率P(Precision)、召回率R(Recall)和F1分数等指标进行评价和比较。其中,精确率指预测正确的正样本占总正样本的比例,准确度指预测正确的样本占总样本的比例。在鲁棒性实验中,则采用准确度A(Accuracy)作为评价指标。
(10)
(11)
(12)
在计算性能指标时,TP 表示正确检测为篡改某区域像素的数量,FN 表示错误检测为非篡改某区域像素,TN表示正确检测为非篡改某区域像素的数量,FP表示错误检测为篡改某区域像素的数量,某区域指来源或目标区域。
本文在数据预处理阶中手工标注的三分类复制粘贴篡改图上进行模型泛化性能的评估,共使用1 500张图像。对不同区域预测结果的评价指标进行计算,并将其与多种算法的结果进行对比。表1所示为像素级分割三类区域时的性能对比。
表1 像素级性能评估
由表1可以看出,本文方法具有一定优越性,与文献[15]的算法相比,精确率提升了0.88%,召回率提升了1.17%,F1值提升了1.1%。文献[14]的算法框架与本文方法类似,不足之处在于其使用了传统皮尔森系数来计算相关度,只考虑了局部线性特征而缺少对全局非线性的加强表示。文献[15]利用对抗生成网络博弈训练,具有一定的分割检测性能,但因为没有引入相关性计算导致算法的性能略有不足。为了全面地评估模型,本文手工提取出3种模型算法下的目标或来源区域F1>0.5的检测结果,并进行对比性能评估,统计和测试结果如表2所示。本文算法选出了574张图片,cGANs方法选出了395张,BusterNet算法则选出79张图片。
表2 F1>0.5时的性能评估
由表2可知,在检测效果较好的结果中,本文算法对目标区域的定位检测性能有了大幅度提升,F1指标达到了69.26%,精确率提升至80.47%,召回率为60.79%。
网络预测部分可视化预测结果如图6所示,其中第1行为篡改原图,第2行为真值标签掩膜图,第3行~第5行分别为BusterNet、cGANs以及本文算法预测结果的可视化结果对比。尽管针对目标区域的训练过程较为繁琐,但能够更有效地定位篡改区域,并更精确地对复制粘贴源与目标像素进行区别。
图6 可视化对比实验预测结果
在实际应用中,原始图可能存在着不同的攻击类型或后处理手段,例如亮度变化、图像模糊、仿射变形等。为了进一步证明本文算法的泛化性能,本文在检测结果较好的574张测试集图片上加入不同的攻击手段,并测试目标区域的像素级准确度,结果如表3所示。
表3 不同攻击手段下的像素级准确度
由表3可知,本文算法的泛化性能较优,能较好地应对不同攻击种类,最高准确度达到了83%,最低为70%,对噪声的鲁棒性相对较差,对尺度变换和图像模糊的抵抗较强。但是本文方法对一些小区域篡改的测试图片的检测效果不佳,未来研究将重点提高对小区域的检测能力,并简化模型复杂度,提高分割质量。
针对数字图像的复制-粘贴篡改取证任务,本文引入非局部算子来加强自相关特征的非线性表示,提升了全局特征的相关性。本文采用孪生网络结构提取相关性特征,利用整体双分支融合框架对篡改区域进行精确定位,并对复制粘贴篡改源与目标区域进行准确地区分。基于测试集的对比实验和鲁棒性实验表明,本文算法具有较高的准确度和较好的泛化能力。但本文算法的复杂度较高,训练过程较为复杂,在未来工作中将通过剪枝和模型压缩来改进模型。