图像处理之《基于生成对抗网络和梯度下降逼近的鲁棒无覆盖隐写术》论文精读

news2025/1/11 7:54:02

一、相关知识

1、图像隐写术分类
在这里插入图片描述
本文对图像隐写术又做了新的分类,可以分为传统图像隐写术、无载体图像隐写术和基于深度学习的图像隐写术

本文又将基于深度学习的图像隐写术又分为四种:基于嵌入的方法(即将传统的隐写术如LSB与生成模型相结合,以提高抵抗隐写分析的能力)、基于融合的方法(即通过神经网络将秘密数据和封面图像融合)、基于映射的方法(建立秘密数据与图像的映射关系,利用神经网络提高嵌入效率和反隐写分析能力)和基于生成的方法(即使用GAN或GAN的变体根据秘密数据生成隐写图像,本文是一种基于生成的方法)。

其实,我们可以看出这样对图像隐写术分类不太合理,因为很多文章都是基于深度学习的无载体图像隐写术

2、GAN的发展历程
在这里插入图片描述
GAN 我们已经非常熟悉,但其存在训练的不稳定性。有学者通过引入 Wasserstein 距 离 和1-Lipschitz 对其进行改进得到 WGAN。但 WGAN 在处理 1-Lipschitz 时直接使用权值裁剪,会导致参数集中和参数调优中的梯度爆炸或消失,又有学者通过引入满足 1-Lipschitz 的梯度惩罚,训练不稳定、梯度消失和模式崩溃等问题得到 WGAN-GP,即本文所使用的神经网络架构,但本文只是用它进行预训练,我们不过多进行说明

3、梯度下降算法
在这里插入图片描述

本文所使用核心思想就是梯度下降算法,其实它本质上很简单,就是不断迭代逼近我们想要的值

如果我们需要确定方程 g(x)=C 的根,就可以使用图中公式进行梯度下降求解。首先给 x 取一个粗略的近似值,设置迭代步长 r,对 f(x)的 x 求偏导,然后开始不断迭代修正初值,直到达到预定的精度要求。

我们看个实际例子,比如求解公式 0.5(x-0.25)^2=0.5,显然其解是 1.25,我们根据公式得到 f(x),此处设置的步长 r 是 0.005,初值为 4,迭代次数是1000 次。我们可以从这个示意图和控制台输出的结果可以看出,最终的结果在无限接近 1.25,但是还没有完全达到 1.25,存在误差。

二、基本思想

1、提出图像隐写的框架
在这里插入图片描述
本文提出的基本隐写框架,第一部分是准备阶段,使用刚才说的 WGAN-GP 进行预训练,直到可以生成器可以生成自然逼真图像为止。

第二部分是数据隐藏阶段,将秘密信息 S 映射成噪声向量 zstego,中间需要进行一个后处理,再将其输入训练好的生成器中生成隐写图像 stego。

第三部分是数据提取阶段,首先需要对隐写图像 stego 进行预处理,然后使用梯度下降更新迭噪声向量 z,直到生成器迭代生成的 G(zed)约等于隐写图像 stego。此时可以认为最终的噪声向量 zed 约等于 zstego,利用逆映射规则求出秘密信息 S’。

我们追求的最终目标就是迭代生成的图像与隐写图像相似,迭代到最后的噪声向量 zed 与原始噪声向量 zstego 相似,提取的秘密信息 S’和原始秘密信息 S 相同

2、映射规则
在这里插入图片描述

本文主要使用格雷码作为映射规则,格雷码的定义是:一个长度为 2^n的序列,序列中无相同元素,且每个元素都是长度为 n 的二进制位串,相邻元素恰好只有 1 位不同。从这个表可以看出,比如 000 与 001 有一位不同,001 和 011 有一位不同,与定义相对应。

下面重点看一下格雷码与二进制之间的转换关系,主要是通过异或运算进行转换。从二级进制最高位开始,保留二进制最高位作为格雷码最高位,最高位和第二高位进行异或运算得到格雷码第二个高位,由此类推即可得到二进制对应的格雷码。
在这里插入图片描述
对于格雷码转二进制,是刚才的逆过程,从格雷码最高位开始,保留格雷码最高位作为二进制最高位,最高位和第二高位进行异或运算得到二进制第二个高位,由此类推即可得到格雷码对应的二进制。
在这里插入图片描述
我们具体本文提出的映射规则的具体步骤,第一步我们需要将秘密信息 M 分成 2^λ个段 mi,每段长度为λ,符合格雷码的定义。第二步将每一个分段视为一个格雷码,计算相应的格雷译码,但注意此处是二进制转格雷码的操作,我们刚才已经说明。第三步,噪声向量 z 按上面这个公式计算,将第二步计算的格雷译码代入即可。

这两个表是取λ=3 时的映射规则和逆映射规则。从上面这个表可以看出每个秘密信息段 mi,对应一个 zi 值;从下面这个表可以看出在提取秘密信息时,只要提取的 zi 位于正确的范围内,就可以恢复正确的 mi。因为图像在传输过程中会受到攻击,所以在隐写图像中提取数据时允许有偏差容忍表现为这里的 zi 是一个范围而不是具体某个值

我们可以简单验证一下这两个公式,当 mi=100 时对应的格雷译码为111,对应十进制为 7,代入公式可以得到 0.875,即 100 对应 0.875。当 zi=0.8, 属于 0.75-1.00 区间,通过下面公式可以计算出格雷为 100,即 0.8 对应 100。

3、数据隐藏
在这里插入图片描述
首先利用前面说明的映射规则将秘密信息分段映射成噪声向量 zstego,在生成器输入 zstego 会生成 rawimage 矩阵,该矩阵范围限制在[-1,1]。最后对 rawimage 矩阵经过一个后处理将其范围变换到[0,255]。

我们可以简单验证一下这个公式,假设 rawimage 矩阵一个值为-1,代入公式为 0;假设 rawimage 矩阵一个值为1,代入公式为 255,即 stego的范围为[0,255]。

4、数据提取
在这里插入图片描述
首先需要对刚才生成的 stego 进行预处理,将从区间[0,255]转换为[-1,1]的 target 矩阵。现在我们来对比数据隐藏阶段的后处理和数据提取阶段的预处理,理论来说,它们是一个互逆的过程

对预处理公式进行变换得到公式 1,对比后处理的公式 2。我们通过举例验证:当 target 矩阵和 rawimage 矩阵中一个值为 0.01,将其代入公式 1 和 2,可以得到公式 1 值为 128.775(注意像素值为整数),公式2 值为 129,显然不相等。故此处公式有误,需要加上向上取整符号

在这里插入图片描述
第二步是求解方程 target = G(z),利用梯度下降算法迭代更新噪声向量 z 的参数,使误差函数值最小。在理想情况下肯定是当 z = zstego 时,target = G(z),Error = 0

对 z 的初始值是从标准正态分布中随机抽取一个向量,输入到生成器中迭代更新,迭代过程中 z 值的变化公式如图所示,rz 是步长,实验部分设置为 0.02。

当误差下降到一定程度时,生成器将输出一个与隐写图像非常相似的图像,噪声向量 zed 也与隐写噪声向量 zstego 高度相关。文章实验部分设置了一个允许误差为 0.000006,当 Error≤0.000006 时可以认为 zed≈zstego
在这里插入图片描述
因为第三步是从标准正态分布中随机抽取一个向量,作为 z 的初值,难免会取到[-1,1]区间之外的值,所以需要进行归一化处理,将 z 的值限制在[-1,1]内方便我们使用逆映射规则提取秘密信息

我们通过一个实际例子来理解一下这个归一化公式,显然 min(zed)是小于 0 的,max(zed)是大于 0 的。假设 z 的最小值为-1,z 的最大值为 1。当 zed=0 时,归一化后值为 0;当 zed=1 时,归一化后值为 1;当 zed=-1 时,归一化后值为 1。显然文章给的归一化公式有问题,当 zed≤0 时,分母应该是 z 的最大值

三、实验结果
在这里插入图片描述

本文的实验内容比较丰富的,我们挑其中四个重点内容看一下:提取精度分析,容量分析,鲁棒性分析和提取机制的对比。

1、提取精度的分析
在这里插入图片描述

文章设置λ=1,2,3,4,5,6,7,进行了 7 次实验,求出每一次的提取精度。提取精度的计算公式如图所示,通过汉明距离比较提取的二进制秘密信息和原始二进制秘密信息,再用 1 减去所占比例,最后将 100 个二进制秘密信息的提取精度求和取平均到平均的提前精度。

通过这个表可以看出当λ = 1,2,3 时,所提方案可以完全提取秘密数据,即使λ = 7,提取精度也可达到 92.21%。同时我们也看一下每个λ 对应的容量是 nz*λ,文章中实验部分取 nz 为 256,可以知道二进制秘密信息必须是 256 的倍数才可以

2、容量分析
在这里插入图片描述
当λ = 5 时,提取精度高于λ = 6,7 时,非常接近 100%。同时,λ = 5 的容量远大于λ = 4 的容量,所以文章中取λ = 5,图
像大小 N 为 64,噪声向量 nz 维数为 256,将此时的有效载荷视为最佳
,可以计算得出约等于 0.313bpp。从右边这个表页可以看出,本文提出的方法有效载荷最高。

3、鲁棒性分析
在这里插入图片描述
本文在前人的基础上又增加了两个攻击一个是区域随机掉落,一个是扭曲,效果如图 j 和 l 所示。

在这里插入图片描述
对于中心裁剪、边缘裁剪和区域随机掉落攻击,从这幅图可以看出图像中出现很多黑色区域,三个通道被攻击像素的值都为 0,原始图像信息已经完全丢失,将被攻击的图像作为隐写图像进行迭代意义不大

所以本文提出一种掩膜方法,将一个 NN3 的零矩阵 zeros 与被攻击的隐写图像 stego’作异或运算,得到一个 mask 矩阵,显然 mask 是 0 和 1 组成的,其中 0 表示无效像素,1 表示有像素,因为异或运算相同为 0 不同为 1,用于消除被攻击像素的干扰。再将 mask 与生成图像、被攻击隐写图像作点乘运算做差作为 Error 求出最小值时的 z,即可以做到即使被这三种攻击后的隐写图像,我们也可以生成与其最相似的图像,如右图所示。

下面是一个简单例子来说明公式含义。我们此处以一个通道3*3 像素块为例。

4、提取机制的比较
在这里插入图片描述
上面这个表中:文献 29 和 30采用训练 CNN 提取器提取秘密数据,在实验设置与本文所提方法相同的情况下,提取精度非常低。第三列是采用自然二进制作为映射规则,可以看到随着λ增大,与格雷码作为映射规则相比,提取精度下降比较快。

下面这个表继续与其他文献作对比,可以看出本文提出的梯度下降方法的计算开销比较低,提取精度比较高,鲁棒性比较强且隐藏容量适中

四、文章创新点与不足

1、创新点
在这里插入图片描述
2、不足

在这里插入图片描述

论文地址:A Robust Coverless Steganography Based on Generative Adversarial Networks and Gradient Descent Approximation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75283.html

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

相关文章

clickhouse doris 实时OLAP数据库的对比与选型

背景介绍 ClickHouse 是俄罗斯的搜索公司 Yandex 开源的 MPP 架构的分析引擎,号称比事务数据库快 100-1000 倍,团队有计算机体系结构的大牛,最大的特色是高性能的向量化执行引擎,而且功能丰富、可靠性高。 Apache Doris 是由百度…

【SpringBoot图书馆管理系统项目开发教程 1 】项目规划和启动

👦 作者简介:码上言 🥇代表教程: 1、Spring Boot vue-element 开发个人博客项目实战教程 2、基于SpringBoot智能图书馆管理系统项目开发教程 📔我的文档网站:http://xyhwh-nav.cn/ 基于SpringBoot Vue 的…

Python xlwings模块

一 xlwings安装与功能介绍 使用特定模块前,需要在程序最前面进行模块导入,和JAVA导入依赖包一样。 import 模块名 也可以加上from语句导入特定的子模块(主要是防止某些模块太大影响加载速度) from 模块名 import 函数名(也可以用*代表所有) 1.1 os模块 o…

终极 Microsoft 365 管理工具——M365 Manager Plus

由于疫情原因,我们的工作方式也发生了很大的改变,相比以往的办公方式,未来线上远程办公将成为一种全新的方式。但目前对于很多企业来说,施行线上办公模式还面临着很多困难。Microsoft 365是企业最普遍选择的基于云的工作组件&…

文件上传漏洞之upload-labs靶场实战通关

目录 pass-01 pass-02 pass-03 pass-04 pass-06 pass-07 pass-08 pass-09 pass-10 pass-11 pass-12 pass-13 pass-14 pass-15 pass-16 pass-17 pass-18 pass-19 pass-20 pass-21 pass-01 pass-02 前端删除完验证函数后通过burp修改 content-type的类型 pa…

web前端 html+css+javascript 绿色的随行旅游网页设计实例 企业网站制作

👨‍🎓学生HTML静态网页基础水平制作👩‍🎓,页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码,这是一个不错的旅游网页制作,画面精明,排版整洁,内容…

Span抽取和元学习能碰撞出怎样的新火花,小样本实体识别来告诉你!

近日,阿里云机器学习平台PAI与华东师范大学高明教授团队、达摩院机器智能技术NLP团队合作在自然语言处理顶级会议EMNLP2022上发表基于Span和元学习的小样本实体识别算法SpanProto。这是一种面向命名实体识别的小样本学习算法,采用两阶段的训练方法&#…

Java StringBuilder

JavaStringBuilder\huge{Java \space StringBuilder}Java StringBuilder 概述 StringBuilderStringBuilderStringBuilder类是一种特殊的可变字符串的操作类,可以把它看做成一种特殊的对象容器。(简单讲的话就是一种特殊的字符串类型) 为什么要使用它? …

1、Spring简介与基于XML的IoC装配

一、Sping简介 1、概述 1、Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。 2、Spring是一个面向对象设计层面的开发框架(基本上都是运行在后台)&#x…

从入门到进阶,KingbaseES数据库学习资料整理(持续归档中...)

一、安装和卸载 1.安装包 2.安装&卸载 3.安装、移除组件 4.license 5.安装问题 二、系统管理 1.初始化 2.数据库 3.快速开发管理工具 三、应用开发 1.sql 2.plsql 3.扩展和插件 4.接口 四、迁移 1.初始化和配置 2.迁移数据 3.迁移对象 4.迁移的异常处…

Linux网络原理与编程(2)——第十二节 应用层协议(以HTTP为例)

目录 协议 HTTP协议 认识URL HTTP协议的特征 HTTP的构成及报文格式 报文格式 请求方法 常见的Header 状态码 Cookie 我们从本节开始,就来正式地详细介绍网络各个层次的内容。 我们先从最顶端的应用层协议说起。 在说应用层协议之前,我们来思考…

Day42——Dp专题

文章目录五、多重背包六、背包问题总结动规五部曲背包递推公式遍历顺序18.打家劫舍19.打家劫舍II20.打家劫舍 III(dfs缓存/树形DP)五、多重背包 对于多重背包,我在力扣上还没发现对应的题目,所以这里就做一下简单介绍&#xff0c…

【SpringMVC】上篇,超详细的教程带你学会SpringMVC

✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:【Spring】 🥭本文内…

java面向对象----抽象类

目录 抽象类与抽象方法 概念 抽象类应用 接 口 概念 接口的特点: 接口应用举例 Java 8中关于接口的改进 内部类 如何声明局部内部类 局部内部类的特点 匿名内部类 总结 抽象类与抽象方法 概念 随着继承层次中一个个新子类的定义,类变得越…

android OTA update

可以使用系統的API來實現系統更新。分兩種更新,non-streaming 和 streaming。non-streaming就是把更新包下載好,放到本地,然後執行更新。而streaming是爲了你的設備內存不夠,不能把更新包下載下來,使用的,u…

Helm 部署 java 项目到 K8S

文章目录部署流程模板目录文件解析DeploymentServiceIngress_helpers.tplChart.yamlvalues.yaml部署命令部署流程 准备 jar 包使用 Dockerfile 构建镜像上传镜像到仓库(Harbor)使用 Helm 模板部署 jar 到 K8S 本文着重讲解第四步,如何制作 …

后分库分表时代的数据库新选择:二维火搭载OceanBase再出发

如今,在中国任意走进一家餐饮商户,不论其规模大小,扫码点餐、自助点餐机、商家点餐小程序等已经基本成为标配。随着餐饮行业数智化持续加速推进,餐饮 SaaS 已经逐渐成为商户们的“必选题”,二维火便是这“必选题”之一…

深度解析 Git 是如何工作的?

深度解析 Git 是如何工作的?前言Git 的特性Git 实际上是如何工作的Commits 对象Tree 对象Blobs 对象总结分支创建与合并代码合并与冲突代码合并算法(Myers)图搜索代码 diff结尾参考:《Pro Git》、《Advanced Git》 前言 Git 是一…

如何实现工具无关化?关于自动化测试脚本的设计

1.问题的提出 最近几年来,我的自动化测试工具之旅大致是这样的,最早用的是QTP,然后是RFT(IBM的功能测试自动化产品),之后也经历了Selenium, Watir等,再后还是一些商业工具主要是偏web自动化及移动自动化,如sahi, appnium, Keynot…

你知道ArcGIS电子地图也有大字体地图吗(附下载方法)

概述 如果你经常使用水经微图,应该知道在水经微图内,百度电子地图和高德电子地图有大字体地图,最近我偶然发现ArcGIS电子地图也有大字体地图,这里给大家介绍一下下载方法。 加载地图 在ArcGIS中打开目录窗格,点击添…