图像篡改检测和定位(二)


Tamper Detection

本文仅供学习参考,请勿盗用到论文、商业等行为。

1.Introduction

在之前的文章中(图像篡改检测和定位(一)),我们谈到图像篡改检测的几种方法,在这里我们主要讨论整个体系的框架里面不同的算法各自的优势,以及存在的问题。

Fig. 1 图像篡改检测一般性框架

我们可以根据经验大致把图像篡改检测一般性方法归纳为Fig-1所示的三个主要步骤:(1)输入图像预处理;(2)特征提取器;(3)特征输出后处理。事实上,目前的算法主要都在研究这三个部分。

目前的文章大部是基于CNN模型的算法,这里面有一个共同特征:绝大部分文章都把图像做了分片(切割)处理,这里面显然存在一些问题:(1)切片块在篡改区域的交界处,特征是不明显的;(2)切片块的输出特征向量只能代表切片块自己,一但误判,没有补救措施,结果就是误判;(3)很多文章是没考虑纹理度特征的,事实上纹理度密集区域的篡改特征相对低文理处明显。


2.Related Work

A.预处理(Pre-processing)

图像的预处理方法有很多,归结来说这些模型的作用都是在抑制图像内容,提取残差噪声。

预处理的文章有两个类别:(1)静态滤波器(手工设计);(2)动态滤波器(CNN模型);

静态滤波器有很多了,中值滤波MFR(median filter residual) [4],相机是别的PRNU噪声(photo response non-uniformity noise) [5],重采样滤波器[6]、[7],还有图像隐写分析里面用的SRM(steganalytic features)[8]。下面主要看看动态预处理。

1.Constrained convolutional neural networks: A new approach towards general purpose image manipulation detection [3]

Fig. 2 Constrained CNN

Belhassen Bayar 和 Matthew C. Stamm应该是最早提出的动态预处理层的作者了,随后他们在系列的领域(相机模型识别、图像后处理、图像篡改检测)里面开始疯狂地发文章,用的都是一套模型。

这篇文章作为这个方向的终结发在2018年的TIFS里面,应该是很成功的,而这两位作者从2015年就开始用这个idea发文章了。

这篇文章主要解决后处理操作的检测,包括了:Median filtering (MF),Gaussian Blurring (GB),Additive White Gaussian Noise,Resampling,JPEG compression。不得不说,文章写得真的好,motivation阐述严谨、实验部分做的非常完备。

文章的思想也朴素的不能再朴素,在预处理层强制地让CNN内核除中心点为1,然后令中心点为-1,也就是类似归一化处理。作者认为是在模仿静态过滤器做的事情,这么做真的有变好吗?会不会导致更加费时?是个问题。

2. [2] Augmented convolutional feature maps for robust cnn-based camera model identification. In 2017 IEEE International Conference on Image Processing (ICIP)

Fig. 3 Agumented CNN

还是Belhassen Bayar 和 Matthew C. Stamm的文章,换了个话题,采用了2中方法融合预处理,MFR(Median Filter Residual)和他们提出来的Constrained CNN。换汤不换药,一样的效果,不一样的问题。

目前,动态预处理的文章就只有他们的。

B.特征提取(Feature Extraction)

由于篡改的原理不尽相同,特征提取器需要考虑多种场景,因此越来越多文章考虑多种特征提取器提取特征后用融合算法计算出最优解。特征提取器可以归类为:

  1. Copy-Move问题中的PatchMatch、Scale Invariant Feature Transform (SIFT) 、Local Binary Patterns(LBP)等,以及用CNN做的深度匹配算法[11]
  2. 相机模式噪声特征:[12][13] 这些算法的主要依据是检测来自不同相机模型的统计学模式噪声差异(photo response non-uniformity noise (PRNU) );有几个有些不同用的是相机响应函数(camera response function (CRF) )差异;
  3. 基于统计学的算法:统计图像方差分布、概率模型偏差等等;

这部分的文章主要在图像篡改检测和定位(一)已经分析过了。

C.特征后处理(Post-processing)

图像篡改检测最难的地方就在于整张图像中篡改块的定位,因为定位是像素级别(pixel-level),不同于检测是图像级别(image-level)。另一方面,不谈整张图像(full image level)篡改区域定位,单单看单个切片块(patch level)的正确率,很多文章都正确率都是95%以上,事实上这种意义相对较小。

那么常见后处理,有几种方法呢?简单地可以分为:(1)单特征提取器融合;(2)多特征提取器融合。

单特征提取融合算法只能检测一种篡改方式,融合处理主要通过分析相邻的小块的CNN结果、小块的纹理度特征、小块的检测密度等等数据,最后生成鉴定结果;多特征提取器融合主要为了解决多个篡改数据(Copy-Move,Splicing,Removal等等),融合处理主要先确定是哪种算法(通过两个分类器置信度确定),然后输出融合鉴定结果。

3.Tampering Detection and Localization through Clustering of Camera-Based CNN Features[9]

单特征提取器后处理

还是这篇文章,只用了CNN作为输入特征,期间考虑CNN向量中对每个类别的置信度、纹理度特征、以及融合后的密度系数。

提取的特征简洁、分析的数据很有依据,算法效果也是很好。

4.Image Forgery Localization via Integrating Tampering Possibility Maps[10]

多征提取器后处理

这篇文章在motivation里面详细讲到了两种检测算法:Splicing和Copy-Move的检测算法,于是作者把CNN+PatchMatch放入特征提取器里面,最后做一步阈值处理决定这张图属于Splicing还是Copy-Move,不同的类别参考的权重系数不一样。

所以文章能够检测多种算法:

多征提取器后处理

但是文章存在比较大的问题是运行速度慢,作者也在文章中阐述特征包含18157维,执行速度比较慢。

3. Conclusion

上面列出来的这些文章,很多都在patch-level做文章,却比较少的文章在考虑patch与邻居patch之间的关系。

我们可以根据理论总结出来:(1)邻居图像块统计学特征、指纹特征、视觉性等具有相似性;(2)如果一个图像块被鉴定为篡改块,它的邻居节点更可能倾向于也是篡改块;(3)扁平区域(flat area)的邻居提取的特征更不可靠。

预处理层效果对比实验,(a)为源图像;(b)为篡改图像,红色框框内为篡改块;(c)为篡改区域示意图

为了了解预处理层(pre-processing)、特征提取层(feature extraction)、后处理层(post-processing)的效果,我们做了一组对比实验,对比了无预处理层SCI-CNN[14],和限制性卷积预处理Constrained-CNN [3],高通滤波器预处理HP-CNN的可视化效果。我们输出了三种算法预处理层的输出结果(第二列,SCI-CNN没有预处理,所以输入为灰度图像),CNN特征向量未融合的可视化(第三列),经过我们提出来的Reliablity Fusing Map (RFM) [15] 融合后的结果(第四列)。

经过实验,我们发现无预处理层的模型中,如果没有经过归一化(Normalize)直接输入到CNN,经过反复调整各种参数仍无法学习到图像的噪声指纹特征。
经过上图结果我们可以得出结论:
(1)Constrained-CNN [3]和高通滤波预处理(High-pass filter)的效果比较像,都提取了图像残差噪声,这步的作用是为了抑制图像内容;
(2)高通滤波器预处理的效果很好,CNN特征中残余噪声比较少;
(3)RFM融合算法可以很好地滤除CNN的误判结果。(RFM算法可以关注:https://github.com/grasses/Tampering-Detection-and-Localization


4. Reference


本文出自 夏日小草,转载请注明出处:http://homeway.me/2019/05/04/tamper-detection-an-overview-2

by grasses 2019.05.04

Fork me on GitHub