粗到精的卷积神经网络与自适应聚类相结合的图像拼接篡改检测

研究方向:图像篡改检测

论文出处:ELSEVIER A类

学校:西安电子科技大学网络工程学院、重庆邮电大学计算机科学与技术学院

关键字:Splicing forgery detection、Convolutional neural networks、Adaptive clustering、Image-level CNN

论文提出的检测方法:提出的检测方法包括两部分,第一部分为一个粗到细的卷积神经网络(C2RNet),第二部分为自适应聚类。在第一部分中将粗的卷积神经网络称为C-CNN,细的神经网络称为R-CNN,两个网络分为两个阶段提取图像中篡改和未被篡改区域之间不同的属性,在此过程中为了降低运算量,采用Image-level的卷积网络来代替Patch-level的卷积网络。在这之后将网络输出的可疑篡改区域,应用自适应聚类算法进一步确定篡改的区域。

实验采用的数据集:CASIA,COLUMB,FORENSICS

实验结果:本文提出的检测算法与目前最好的算法相比,能够实现可观的效果。并且在多种篡改方式上都实现了良好的效果。


1.基础知识

    数字图像篡改分为两种类型:copy-move forgery(复制粘贴篡改)和splicing forgery(拼接篡改)。前者指的被篡改的部分来自本身的一部分,后者指的是被篡改的部分来自非本身的部分。拼接篡改比复制粘贴篡改的检测更加难。

    最新的一些研究提取不同的一些特征来鉴别图像是否被篡改,这些特征有lighting(光照), shadows(阴影), sensor noise(传感器噪声), and camera reflections(相机反射原理).

    拼接篡改的检测方法主要基于4类,分别为基本图像属性的检测,成像设备属性的检测,图像压缩属性的检测,哈希技术。这四类检测方法的局限性如下:

  • 如果在拼接后应用了一些隐藏伪造的技术,例如整体模糊操作,则可能后导致检测失败。
  • 如果设备的噪声强度较弱,则基本成像设备属性的检测方法可能失效。
  • 基于图像压缩属性的检测方法只能检测JPEG格式的图像篡改。
  • 基于哈希技术的检测方法依赖于原始未经篡改图像的哈希,则不能严格分类为盲伪造检测类型。

    卷积神经网络成功的两个原因,如下:

  • CNN框架利用了领域内的像素通常是高度相关联,采用分组的本地连接,而非所有像素单元之间使用一对一连接(大多数神经网络的情况)。
  • CNN体系结构采用特征共享,每个通道(特征图)都是在所有位置使用相同的卷积核通过卷积运算生成的。

2.网络框架结构及相应算法

2.1. 网络框架结构

    上图种的上一部分为从粗到细的CNN网络,下一部分为自适应聚类算法。

    在上一部分,分为两个特征学习过程,第一个特征学习过程是基于粗CNN,能够粗略的确认在图像篡改区域和图像未篡改区域的差别,尤其是边缘。第二个特征学习过程是基于细CNN,能够进一步学习到必要的在图像篡改区域和图像未篡改区域的差别,即在粗CNN得到的边缘进一步筛选。

    在下一部分,在通过C2RNet得到最终更加准确的可疑篡改区域(Net_out)后,采用自适应聚类算法确定最终准确的篡改篡改区域(FD_Out),然后利用填充算法进行填充,得到最终结果。


2.2. C2RNet网络参数

2.2.1. 粗卷积神经网络(C-CNN)网络参数

    C-CNN是基于VGG-16,它包括13个卷积层,每个卷积层采用RELU激活函数,5个最大池化层,2个全连接层。

    数据的输入:图像块(image Patch)\(W_c×W_c\)(篡改图片和对应原始图片),论文中\(W_c\)设置为32,一共生成115000的patch标签作为篡改和115000patch标签作为非篡改。

    数据的输出:二分类问题,是包含篡改区域的块还是不包括篡改区域的块。


2.2.2. 细卷积神经网络(R-CNN)网络参数

    C-CNN输出的是可疑的篡改区域,这就意味着图片边缘附近可能存在一些不正确检测到的区域,这表明C-CNN学习到的结果需要进一步过滤掉,同时也说明了C-CNN网络中输入的Patch大小无法提供足够的局部信息来探索图片的差异。因此,可以通过级联一个精的CNN网络来滤除那些不准确的区域。

    R-CNN是基于VGG-19,它包括16个卷积层,5个最大池化层,3个全连接层。

    数据的输入:图像块(image Patch)\(W_r×W_r\)(为了使R-CNN获得更多足够的本地信息,\(W_r>W_c\),这些patch来自原始图像和可疑篡改区域),论文中\(W_c\)设置为96,一共生成115000的patch标签作为篡改和115000patch标签作为非篡改。

    数据的输出:二分类问题,是包含篡改区域的块还是不包括篡改区域的块。

2.2.3. 为了加快计算速度采用Image-level CNN

    图像被每个像素为中心的重叠的patch块,然后每个像素块输入到网络中进行训练。例如图像的大小为M×N,被分成每个patch的步幅为1,则重叠的patch块数数量为\((M-W+1)×(N-W+1)\),让将这些图像patch按顺序输入到网络中。本文中为了加快计算速度,将patch-level CNN 转换成 image-level CNN。

    两者关系如下:

    可疑观察到两者的结果是等效的,区别如下:

  • 最大池化被替换成重叠的最大池化
  • 在重叠最大池化后添加下采样步骤

2.2. 自适应聚类算法

    自适应聚类算法整体流程:

    由R-CNN网络得到的输出为Net_out,自适应聚类算法分为两步:自适应离群滤波(adaptive outlier filtering)和填充操作(convex full filling process)。

    具体算法如下:

    具体算法解析如下:将Net_out分成\(C_1\)到\(C_n\)个簇,簇的中心分别为\(b_1\)到\(b_n\),计算这几个簇的几何质心\(g_c\),通过欧氏距离计算\(b_i到g_c\)的距离,记为\(d_igc\).通过下面公式在计算这些欧式距离的均值\(\overline{d_gc}\),通过下面公式计算出标准偏差\(sd\)

    如果\(sd\)满足如下条件:

    则所有的\(c_1\)到\(c_n\)全部作为确定的篡改的区域记为\(\widetilde{Net-out}\)。

    如果\(sd\)不满足,则说明一小部分簇并非篡改区域,取一个阈值\(t_h\),将每个簇中包括像素最多的\(d_gc\)作为基准,计算各个簇到基准的欧氏距离,若欧氏距离小于\(t_h\),则认为该簇为篡改区域。

    最后用填充算法对符合条件的簇进行填充为一个区域,生成FD_out。

    具体例子如下

    如图,图片被分成了四个簇,每个簇的质心为黑色块(a),计算几何质心\(gc\),分别计算每个簇质心到几何质心的欧氏距离\(d_igc\)(b),计算标准偏差\(sd\),发现\(sd\)不满足条件,选择每个簇包括像素最多的簇的\(d_igc\)为基准,此例为\(C_1\),计算其它簇到基准的欧式距离,若大于阈值,该簇为非篡改区域,将剩余的簇填充为一个区域,即为最终篡改区域FD_out。


3.实验与分析

实验的数据集:

  • CASIA:包括1275个数据,原始图片和篡改图片各1275。存储格式为TIFF,分辨率为384×256。训练数据集为1226,剩余的49做为测试集。
  • CLOUMB:包括179个数据,原始图片和篡改图片各179。存储格式为TIFF,分辨率为757×568。训练数据集为139,剩余的40做为测试集。
  • FORENSICS:包括144个数据,原始图片和篡改图片各179。存储格式为PNG,分辨率为2018×1536。训练数据集为94,剩余的50做为测试集。

    以上数据集中的数据称为普通拼接篡改图像。

    同时,本论文还进行了5中更加复杂拼接篡改,分别为JPEG压缩,噪声添加,图片缩放,图片旋转和前四种的组合,由于以前的研究图片均采用JPEG,故我们将所有的TIFF格式图片转换成JPEG,质量因子为100%。

衡量标准:

    TP:表示为正确检测到篡改的像素数

    FP:表示为错误检测到篡改的像素数

    FN:表示为错误检测到的未篡改像素的数量

    采用Precision、Recall、F-Measure来衡量算法性能,公式如下

神经网络框架:Tensorflow


3.1. 聚类簇的数量n

    通过实验分析,当N=4时,准确率最高。


3.2. 实验评估和对比分析

    过往图像篡改方法DCT , ADQ , ELA , NADQ , CFA , NOI , NFC , MPRNU , C-Net , DF-Net , and LSC-Net。这些检测方法可以在像素级别检测篡改区域。

3.2.1. 普通拼接篡改检测结果

    六个示例结果如图,图中的a1-a2来自CASIA,a3-a4来自COLUMB,a5-a6来自FORENSICS,a7是一张图中有多个篡改部分,并且是图片的大小是非标准。分别计算了六个示例的衡量标准的平均值(Precision、Recall、F-measure),如下表。





3.2.2. 复杂拼接篡改检测结果

    以下所有图的三列分别为衡量标准Precision, Recall , and F-measure。

A)在JPEG压缩条件下篡改检测的结果

    横坐标为压缩质量因子。

    a1和a3是来自CASIA,b1和b3是来自COLUMB,c1和c3来自FORENSICS。


B)在添加噪声条件下篡改检测的结果



    横坐标为不同的方差数。

    a1和a3是来自CASIA,b1和b3是来自COLUMB,c1和c3来自FORENSICS。


C)在组合条件下篡改检测的结果(JPEG压缩和加噪声组合)

    a1-a3显示了在JPEG压缩率为60%的CASIA下添加不同方差的噪声的结果。

    b1-b2显示了在JPEG压缩率为80%的CASIA下添加不同方差的噪声的结果。

    c1-c3显示了在JPEG压缩率为60%的COLUMB下添加不同方差的噪声的结果。

    d1-d3显示了在JPEG压缩率为80%的COLUMB下添加不同方差的噪声的结果。

    e1-e3显示了在JPEG压缩率为60%的COLUMB下添加不同方差的噪声的结果。

    f1-f3显示了在JPEG压缩率为80%的COLUMB下添加不同方差的噪声的结果。


D)在缩放条件下篡改检测的结果

    横坐标为缩放因子。

    a1和a3是来自CASIA,b1和b3是来自COLUMB,c1和c3来自FORENSICS。


E)在旋转条件下篡改检测的结果

    横坐标为旋转度数。

    a1和a3是来自CASIA,b1和b3是来自COLUMB,c1和c3来自FORENSICS。


F)运行时间的对比

    上表中包括了patch-level CNN和image-level CNN的对比。


F)部分实验结果与其它方法对比可视图



4. 结论

    实验结果表明,该方法取得了比其他先前检测方法更好的结果。由于这些数据集的容量限制了针对所提出的检测方法对C2RNet的训练,因此尚未获得理想的结果。

    由于后处理方法(自适应聚类算法)的限制,所提出的检测方法仅聚焦于图像中的单个篡改区域,并且在以后的研究中将考虑并修复该问题。


总结

    本论文实际上就是利用语义分割,新颖的地方就是利用两个神经网络的级联来实现一步一步精确的检测,在提取到Net_out后,利用K-means来提取真实的篡改区域。

    在实验采用了多种比对方法进行对比,使实验结果更加准确。

Image splicing forgery detection combining coarse to refined convolutional neural network and adaptive clustering的更多相关文章

  1. 论文阅读(Weilin Huang——【TIP2016】Text-Attentional Convolutional Neural Network for Scene Text Detection)

    Weilin Huang--[TIP2015]Text-Attentional Convolutional Neural Network for Scene Text Detection) 目录 作者 ...

  2. 《A Convolutional Neural Network Cascade for Face Detection》

    文章链接:   http://pan.baidu.com/s/1bQBJMQ  密码:4772 作者在这里提出了基于神经网络的Cascade方法,Cascade最早可追溯到Haar Feature提取 ...

  3. tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)

    今天看到一篇关于检测的论文<SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real- ...

  4. 【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior

    [论文笔记]Malware Detection with Deep Neural Network Using Process Behavior 论文基本信息 会议: IEEE(2016 IEEE 40 ...

  5. 论文解读(RvNN)《Rumor Detection on Twitter with Tree-structured Recursive Neural Networks》

    论文信息 论文标题:Rumor Detection on Twitter with Tree-structured Recursive Neural Networks论文作者:Jing Ma, Wei ...

  6. 论文阅读 | RefineDet:Single-Shot Refinement Neural Network for Object Detection

    论文链接:https://arxiv.org/abs/1711.06897 代码链接:https://github.com/sfzhang15/RefineDet 摘要 RefineDet是CVPR ...

  7. Coursera, Deep Learning 4, Convolutional Neural Networks, week3, Object detection

    学习目标 Understand the challenges of Object Localization, Object Detection and Landmark Finding Underst ...

  8. 课程四(Convolutional Neural Networks),第三 周(Object detection) —— 2.Programming assignments:Car detection with YOLOv2

    Autonomous driving - Car detection Welcome to your week 3 programming assignment. You will learn abo ...

  9. 课程四(Convolutional Neural Networks),第三 周(Object detection) —— 0.Learning Goals

    Learning Goals: Understand the challenges of Object Localization, Object Detection and Landmark Find ...

随机推荐

  1. fluent中如何对一个非整个volume的特定的区域进行数据分析?【转载】

    作者:王蒙 链接:https://www.zhihu.com/question/37432813 来源:知乎 很抱歉,我不知道 fluent 中是否有这一功能,我这个学期才开始学.但 CFD-Post ...

  2. meshing-做类似ICEM的Y型剖分

    ​原视频下载地址:https://yunpan.cn/cqjeKkrhwwN3x  访问密码 c724

  3. Linux中强大的top命令

    top命令算是最直观.好用的查看服务器负载的命令了.它实时动态刷新显示服务器状态信息,且可以通过交互式命令自定义显示内容,非常强大. 在终端中输入top,回车后会显示如下内容:   top - 21: ...

  4. Macbook上打开多个终端的方法

    方法有如下两种 1.首先是的焦点在终端上(使用鼠标点击下终端).然后使用快捷键command+N 即可得到另一个终端界面. (如果现在光标的焦点在浏览器上,那么就是新打开一个浏览器窗口) 2.同样,光 ...

  5. Nginx配置信息损毁又无备份时如何恢复

    worker_processes *; 本文介绍在Nginx配置信息出现问题后,在没有备份的情况下,如何利用Nginx进程的虚拟内存恢复配置信息. 问题背景 假设 /etc/nginx/site-av ...

  6. c# 遍历局域网计算机(电脑)获取IP和计算机名称

    c#可以遍历局域网计算机,获取全部计算机的名称和IP地址,网上提供了相关的几种方法,并对效率进行了比较,但是没有对各种方法进行比较,以确定可以使用的情况.这篇文章将对这几种方法进行分析,以帮助了解各种 ...

  7. osg model

    osg::ref_ptr<osg::Node> MyOSGLoadEarth::CreateNode() { osg::ref_ptr<osg::Group> _root = ...

  8. nginx在windows系统中如何启动、重启、停止

    nginx在windows系统中如何启动.重启.停止   查看nginx的版本号:nginx -v 启动nginx:start nginx 快速停止或关闭nginx:nginx -s stop 正常停 ...

  9. (一)UML概览

    类图

  10. 普罗米修斯Prometheus监控安装

    普罗米修斯Prometheus监控安装 架构: 服务端:192.168.0.204 客户端:192.168.0.206 环境准备:所有节点安装go 语言环境 rz go1.12.linux-amd64 ...