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

研究方向:图像篡改检测

论文出处: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. 小程序 之嵌套循环修改index与item

    <block wx:for="{{menu}}" wx:key="index"> <view class="cate-item {{ ...

  2. 构造器Constructor

    构造器Constructor是否可被override构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading 首先,构造器是不能被继承的,因为每个类 ...

  3. webpack4.0源码分析之Tapable

    1 Tapable简介 webpack本质上是一种事件流的机制,它的工作流程就是将各个插件串联起来,而实现这一切的核心就是Tapable,webpack中最核心的负责编译的Compiler和负责创建b ...

  4. python 设计模式之备忘录模式

    1.为什么用备忘录模式 假设大战僵尸游戏共10关,越是往后关卡越难,越难就越是费时间费钱费精力. 开始大战僵尸,玩了好久好久终于玩到了第9关,真是不容易. 这个时候开始玩第9关了,哇,好难啊,真不幸, ...

  5. python 日期计算

    from datetime import timedelta,datetime import time tdy = datetime.today() tdy = tdy.strftime(" ...

  6. js刷新页面location.reload()用法

    转: js刷新页面location.reload()用法 2018年05月10日 10:23:28 大灰狼的小绵羊哥哥 阅读数 31359更多 分类专栏: [前端面试点滴知识 ]   本文介绍了js刷 ...

  7. Node.js使用ftp连接远程ftp服务器枚举和下载文件示例

    示例代码: var Ftp = require('ftp'); var fs = require('fs'); var path = require('path'); // 首先判断参数中是否包含{d ...

  8. Zabbix之设置监控主机某个端口并发送邮件告警

    Zabbix可以配置监控主机的某个端口在该端口down之后触发发送告警邮件 一,添加监控项 选择主机 监控项 创建监控项 查看监控图形 二,设置触发器 设置触发器当该监控的端口down时可以发送告警 ...

  9. MATLAB分类与预测算法函数

    1.glmfit() 功能:构建一个广义线性回归模型. 使用格式:b=glmfit(X,y,distr),根据属性数据X以及每个记录对应的类别数据y构建一个线性回归模型,distr可取值为:binom ...

  10. 一个websocket的demo(php server)

    notice: 通过命令行执行php文件  如 php -q c:\path\server.php 通过本地web服务器访问 http://127.0.0.1/websocket/index.php即 ...