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

news2024/11/27 18:33:52

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 L2normalized
                 use_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 4d
    devf = 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.coloradmin.cn/o/2206860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是网络安全等级保护?企业如何建立安全系统?一篇带你快速了解→:

等保测评的定义与目的 等保测评旨在评估信息系统的安全性,并根据评估结果给予相应的安全等级。该等级反映了信息系统在保护国家安全、经济安全、社会公共利益以及个人合法权益方面的能力。通过等保测评,可以确保信息系统符合国家法律法规的要求&#xf…

DSP CMD文件使用

背景描述: 在CCS编译代码时出现如下警告 解决方法: 找到cmd文件(这里是用的系统自动生成的),在Section部分找到对应的核 #ifdef CORE7.text > CORE7_L2_SRAM.stack > CORE7_L2_SRAM.bss > CORE7_L2_SRAM.cio &g…

(28)QPSK调制信号使用矩形脉冲成形的误符号率和误比特率MATLAB仿真

文章目录 前言一、系统模型说明二、MATLAB仿真代码三、MATLAB仿真结果四、仿真结果分析 前言 在QPSK通信系统仿真时,经常会加入调制信号的脉冲成形模块,本文将讨论在这种情况下信道的信噪比该如何设置,并给出MATLAB仿真代码,画出…

滑动窗口_⽔果成篮找到字符串中所有字⺟异位词

⽔果成篮 904. 水果成篮 - 力扣(LeetCode) 相当于求数字种类不超过2的最长字字符串 我们先看一看例4.从第一个元素开始最长字符串3331,下一次从第二个位置数吗?没必要,因为只有当字符串中数字种类变为1时,…

库的相关使用

1.1 库的概念 库是由.c文件编译生成的二进制文件。 库的内部就是各种函数的实现。 windows中库的格式: xxx.dll -- 动态库 xxx.lib -- 静态库 linux中库的格式: libxxx.a --- 静态库 libxxx.so --- 动态库 2.1 静态库的制作和使用 2.1.1 静态库的…

9.2分新剧教你如何面对生活的苦涩与温暖

如果你最近在寻找一部既温暖治愈,又能引发思考的好剧,《住宅区的两人》无疑是个不错的选择。虽然没有大起大落的情节,但它却用温柔的叙事方式和细腻的情感刻画赢得了观众的心,目前在豆瓣上拿下了9.2的高分。这部剧带给人的不仅仅是…

图片懒加载(lazyload )

图片懒加载 懒加载(Lazy Loading)是一种计算机编程技术,用于延迟初始化对象或资源,直到它们实际需要使用时才进行加载或初始化。这种技术可以提高程序的启动速度和性能,减少不必要的资源消耗,特别是在处理…

基于头脑风暴优化的模糊PI控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 头脑风暴优化(Brain Storm Optimization, BSO)是一种受人类集体创新过程启发的群体智能算法。它通过模拟团队成员之间的信息交流和想法生成来寻找最优解…

【含开题报告+文档+PPT+源码】基于SpringBoot+Vue医药知识学习与分享平台的设计与实现

开题报告 本论文介绍了一个名为岐黄之家的知识学习与分享平台的设计与实现。该平台旨在为用户提供一个交流、学习和分享医药知识的空间。论文首先介绍了中医院交流平台的背景和相关研究现状。随着互联网的快速发展,中医学的学习和交流需求逐渐增多,因此…

77.【C语言】EOF的解释

1.cplusplus网的介绍 在这几篇文章提到过,但没有详细阐释过EOF的细节 24.【C语言】getchar putchar的使用E4.【C语言】练习:while和getchar的理解32.【C语言】详解scanf 75.【C语言】文件操作(3) cplusplus网的介绍 点我跳转 翻译 常量 EOF 文件结束(End-Of-Fi…

新版Win32高级编程教程-学习笔记01:应用程序分类

互联网行业 算法研发工程师 目录 新版Win32高级编程教程-学习笔记01:应用程序分类 控制台程序 强烈注意 窗口程序 启动项 程序入口函数 库程序 静态库 动态库程序 几种应用程序的区别 控制台程序 本身没有窗口,其中的doc窗口,是管…

大数据之——VWare、Ubuntu、CentOs、Hadoop安装配置

前言:这里很抱歉前几期考研专题以及PyTorch这些内容都没有更新,并不是没有在学了,而是事太鸡儿多了,前不久刚刚打完华为开发者比赛,然后有紧接着高数比赛、考研复习,因此这些后续文章都在草稿状态中&#x…

yolov8-melodic-cam-anconda环境配置及目标检测

1、基础环境安装 安装配置cuda、Anconda等环境,具体安装参考如下: https://blog.csdn.net/weixin_45702256/article/details/142555187 2、torch安装 下载链接:https://pytorch.org/ 根据配置下载对应版本,CUDA11.4 可用11.3下…

【c数据结构】队列详解!(模拟实现、OJ练习实操)

队列的概念 队列就像排队,先进先出,zz先到先得(队头的人先出去,队尾的人排在最后出去) 对比栈 队列示意图 概念:只允许在⼀端进⾏插⼊数据操作,在另⼀端进⾏删除数据操作的特殊线性表&#xff…

68 Netty

68 Netty 参考资料 【硬核】肝了一月的Netty知识点 概念 Netty 是一个高性能、异步事件驱动的网络应用框架,简化了 Java 网络编程,适用于构建高效、可扩展的网络服务器和客户端。 Netty 是基于 Java NIO 的异步事件驱动的网络应用框架,使…

访问远程桌面或共享文件夹,输入正确凭证,但提示登录没有成功或者用户名密码不正确

可以在目标机器试试以下方法: winR 打开 "gpedit.msc" 本地组策略编辑器,导航到 计算机配置 > Widnows 设置 > 安全设置 > 本地策略 > 安全选项 找到 网络访问:本地账户的共享和安全模型,把 仅来宾 改为 …

介绍各种编程语言

记得点个赞再看哦 常见的编程语言 在当今的计算机编程领域,有许多种编程语言,以下是一些常见的编程语言: Python:是一种代表简单思想的语言,具有极其简单的语法,是FLOSS(自由/开放源码软件&…

简单解析由于找不到xinput1_3.dll,无法继续执行代码的详细解决方法

电脑上突然跳出“由于找不到xinput1_3.dll,无法继续执行代码”的提示,这着实令人心烦,特别是当你正着急使用相关软件或者程序的时候。别担心,其实有五种科学有效的解决办法。大家得清楚,xinput1_3.dll是一个在众多软件…

快速总结HAT

HAT:Activating More Pixels in Image Super-Resolution Transformer 图像恢复(Image restoration)是计算机视觉中的一个经典问题,它的目的是从给定的低质量(LQ)输入重建高质量(HQ)图像。 在SwinIR基础上…

Codeforces 977 Div2 A-B

课上找空做了 A 原题 A. Meaning Mean 思路 贪心即可 代码 #include <bits/stdc.h> #define int long long using namespace std;const int N 110;int n, m, k, x, y, z; int w[N], f[N];void solve() {cin >> n;for (int i 1; i < n; i )cin >>…