当前位置: 首页 > news >正文

毕业设计之—基于ManTra-Net的图像篡改检测方法研究与应用实现

1.摘要

        随着互联网、社交媒体和简易图像操作工具的普及,图像篡改带来的问题日益严重。为了解决这一问题,研究者们利用深度卷积神经网络来检测图像篡改并定位篡改区域。为此我们训练了一个ManTra-Net模型,该模型以TensorFlow为后端,使用Adam优化器和分类交叉熵损失函数进行训练。此外,我们还实现了一个Web界面,该界面使用Flask框架开发的Python后端API端点服务器,使用户能够上传图像并接收突出显示篡改区域的输出图像。这一Web界面简化了与模型的交互过程,提高了用户的使用体验。

2.ManTra-Net模型实现

        ManTra-Net方法由两个子网络组成,即创建统一特征表示的图像处理-跟踪特征提取器和直接定位伪造区域的局部异常检测网络(LADN),从局部特征与其引用到伪造标签之间的差异中学习决策函数映射。从技术上来说,ManTraNet 由两个子网络组成,如下所示:
        1. 图像处理轨迹特征提取器:用于图像处理分类任务的特征提取网络,对不同的处理类型敏感,并将补丁中的图像处理编码为固定维度的特征向量。
        2. 局部异常检测网络:异常检测网络将局部特征与局部区域平均的主导特征进行比较,其激活取决于局部特征偏离参考特征的程度,而不是局部特征的绝对值。

  ManTraNet 是一种端到端图像伪造检测和定位解决方案,通过识别局部异常特征来检测伪造像素,因此不限于特定的伪造或篡改类型,具有简单、快速和高鲁棒性,但是其局限性在于不能准确检测多篡改对象图像。

本文针对ManTraNet模型进行简单修改,其结构如下:

keras实现代码:

def create_manTraNet_model( Featex, pool_size_list=[7,15,31], is_dynamic_shape=True, apply_normalization=True ) :img_in = Input(shape=(None,None,3), name='img_in' )rf = Featex( img_in )rf = Conv2D( 64, (1,1),activation=None, # no need to use tanh if sf is L2normalizeduse_bias=False,kernel_constraint = unit_norm( axis=-2 ),name='outlierTrans',padding = 'same' )(rf)bf = BatchNormalization( axis=-1, name='bnorm', center=False, scale=False )(rf)devf5d = NestedWindowAverageFeatExtrator(window_size_list=pool_size_list,output_mode='5d',minus_original=True,name='nestedAvgFeatex' )( bf )if ( apply_normalization ) :sigma = GlobalStd2D( name='glbStd' )( bf )sigma5d = Lambda( lambda t : K.expand_dims( t, axis=1 ), name='expTime')( sigma )devf5d = Lambda( lambda vs : K.abs(vs[0]/vs[1]), name='divStd' )([devf5d, sigma5d])# convert back to 4ddevf = ConvLSTM2D( 8, (7,7),activation='tanh',recurrent_activation='hard_sigmoid',padding='same',name='cLSTM',return_sequences=False )(devf5d)pred_out = Conv2D(1, (7,7), padding='same', activation='sigmoid', name='pred')( devf )return Model( inputs=img_in, outputs=pred_out, name='sigNet' )

        为了提高模型的泛化能力,将图像篡改和定位检测定义为局部异常检测任务,而不是先前方法中的语义分割任务。为此,使用伪造特征与伪造标签之间的不相似性来学习一个决策函数。局部异常检测网络分为三个阶段:“适应”阶段处理从操纵痕迹检测中提取的特征,以便用于异常检测;“异常特征提取”阶段提取异常特征;最后是“决策”阶段,分类像素是否被篡改。其中最重要的阶段是异常特征提取阶段,在该阶段,模型首先识别出最显著的特征,然后将任何与显著特征足够不同的特征视为异常特征。这一直觉通过两种新颖的神经网络架构来实现:ZPool2D层,它标准化了上述不相似性(如Z分数),以及Conv2DLSTM层,用于处理从不同分辨率堆叠在一起的ZPool2D层输出。

3.实验测试

使用了NIST 2016、CASIA、COVERAGE和Columbia等部分数据集进行了测试,其实验结达到了80%作用(AUC得分)。如下:

篡改类型     

拼接、复制-移动、增强

拼接

复制-移动

拼接、复制-移动、删除

模型ManTra-Net

79.5%

82.4%

81.9%

81.7%

4.应用实现

        设计了一个Web界面,该界面依托Flask框架构建的Python后端API端点服务器。用户则可以通过一个基于HTML、CSS和JavaScript开发的前端Web界面,上传想要检查是否存在篡改的图像。

实现界面如下:

实验环境:

Keras==2.2.4
tensorflow==1.14.0
numpy==1.19.5
matplotlib==3.3.4
opencv-python==4.1.0.25
Flask==1.0.2
typing==3.6.6

代码下载链接:

https://download.csdn.net/download/weixin_40651515/89876700

包含完整论文。


http://www.mrgr.cn/news/48234.html

相关文章:

  • 【有代码】重参数化技巧:z=g(ϵ,x)在复杂概率分布采样中的应用——一个“梯度传递”的桥梁
  • 【设计模式】空接口
  • 呼入机器人:24小时客户服务的未来趋势
  • 0.gitlab ubuntu20.04 部署问题解决
  • Oracle Database 21c Express Edition数据库 和 Sqlplus客户端安装配置
  • Visual Studio 配置 远程Linux CMake 项目
  • 你的拼命向前,只不过是别人的轻松实现
  • 【D3.js in Action 3 精译_033】4.1.0 DIY 实战:如何通过学习 d3.autoType 函数深度参与 D3 生态建设
  • Antsword-labs靶机渗透
  • QT:数据库,opencv
  • MySQL-02.概述-安装配置
  • 共识算法Raft
  • std::future::then的概念和使用方法
  • 让UE通过EPC连接到互联网
  • 基于JAVA+SpringBoot+Vue的医疗报销系统
  • 微积分复习笔记 Calculus Volume 1 - 2.3 The Limit Laws
  • 上传图片到github上,生成链接在Typora中使用(解决Typora的md文件在分享时的丢失问题)
  • 死磕P7:JVM性能调优必知必会(二)
  • 付费计量系统实体和接口(7)
  • [C语言] 函数详解:库函数与自定义函数
  • 职场上的人情世故你知多少
  • 从automaxprocs库浅窥Linux容器的资源控制
  • 【测试】测试分类
  • 腾讯云-云直播
  • Linux:信号保存与处理
  • H3C OSPF 综合排错实验