图像处理之《寻找和隐藏:通过深度强化学习的对抗隐写术》论文阅读

一、文章摘要

图像隐写术的目的是将一个完整大小的图像(称为秘密)隐藏到另一个图像(称为封面)中。以往的图像隐写算法只能在一个封面中隐藏一个秘密。在这篇论文中,我们提出了一个自适应局部图像隐写(AdaSteg)系统,允许缩放和位置自适应图像隐写。该系统通过在局部范围内自适应隐藏秘密,提高了隐写术的安全性,并进一步实现了单一封面内的多秘密隐写术。具体来说,这是通过两个阶段来实现的,即自适应块选择阶段和秘密加密阶段。首先,利用所提出的隐写质量函数和策略网络,利用深度强化学习自适应确定最优局部隐藏块;然后,将秘密图像转换为一个加密噪声的块,类似于生成对抗样本的过程,进一步编码到封面的局部区域,以实现更安全的隐写术。此外,我们提出了一种新的评估局部隐写术的标准,并收集了一个具有挑战性的数据集,该数据集专门用于图像隐写术的任务,从而为该领域的标准化基准做出了贡献。实验结果表明,该模型在安全性和容量方面都优于目前的技术水平。

在这里插入图片描述

二、绪论

图像隐写术的目的是在发送者和接收者之间秘密地传输图像,称为秘密。具体来说,图像隐写术试图将秘密隐藏在另一个图像(称为封面)中,而不改变后者的外观,因此隐藏很难被发现。一般来说,这是通过首先将秘密和封面送入隐藏网络来实现的,其输出称为类似于封面的容器。然后,在接收端,使用一个成对的揭示网络将输入容器解密为揭示的秘密,这应该尽可能地保留秘密的外观

传统的依赖于文件结构或空间域的图像隐写系统通常在有效载荷能力[2]上受到限制。为了解决这一局限性,Baluja提出了一种新的基于深度神经网络[1]、[3]的图像隐写术方法。Baluja的开创性工作允许全尺寸图像到图像的隐写术,几乎察觉不到失真,因此显著提高了隐写术系统的有效载荷能力和安全性。尽管在[1]和[3]中取得了很有前景的性能,但这项工作仍然有两个主要的局限性。首先,[1]、[3]只支持全局范围内的隐写术,这意味着在一个给定的封面中只能隐藏一个秘密。其次,Baluja算法使用预先训练的固定编解码网络,对不同的输入秘密和封面图像不具有自适应能力。因此,容器与封面之间的残余物往往类似于保密的秘密,如图1所示。此外,信息可以通过特定的手段进行加密。图像隐写的挑战在于防止对手的隐写分析模型被发现,因为嵌入信息可以改变载体的外观,引起敌人的怀疑,如图2所示。然后,接收方将显示来自容器图像的信息。最常见的图像隐写术是数字水印,用于保护版权。恶意应用很多,如个人隐私数据泄露、恶意攻击、非法销售商业信息等。为了避免隐写分析模型的检测,保持封面图像的外观和底层统计是至关重要的。改变的量主要可以通过信息的数量和被隐藏的局部块来衡量

在这里插入图片描述

图1 图像间隐写术的性能。C为容器图像,R为显示图像,RD为容器图像与封面图像的残差

在这里插入图片描述
图2 传统图像隐写术的基本流程

在本文中,我们提出了一种创新的系统(图3),称为深度自适应图像隐写术(AdaSteg),它允许安全且灵活的图像对图像隐藏。与现有的在全局范围内隐藏图像的方法不同,AdaSteg支持在自定义的封面局部块中隐藏目标秘密。这样,据我们所知,AdaSteg触发器是文献中第一个多秘密图像隐写术。具体而言,AdaSteg的实现分为两个顺序阶段:自适应块选择阶段和秘密加密阶段。

在这里插入图片描述
图3 提出的AdaSteg系统的框架。该模型由三个模块组成:隐藏-显示模块、块选择模块和检测器

自适应封面块选择阶段的目标是确定具有最佳封面尺度和位置的定制封面块。一个可能的解决方案是贪婪地寻找最佳块;然而,这一过程将带来沉重的计算负担,特别是对于高分辨率图像。深度强化学习(DRL)在目标定位[4]和[5]中取得了成功,其中定位过程被建模为移动或缩放选定块的一系列动作,受此启发,我们提出了一种基于DRL agent的位置和缩放自适应块定位策略。我们的隐写DRL agent旨在决定一组动作,在几个步骤内有效地搜索最佳块。与[4]、[5]中的定位DRL agent不同,我们引入了一个精心设计的隐写质量函数来指导DRLagent的优化,从而在一定的步骤中确定最优的局部块。特别地,提出的质量函数包括一个新的对抗隐写分析术语,它解决了攻击者有意训练隐写分析网络来检测加密块的安全问题。使用附加的隐写术6将用于隐藏的最终坐标秘密地传输给接收者

AdaSteg的第二阶段,秘密加密,被矛盾地实现为生成对抗样本的过程,这通常被视为对学习系统的威胁。具体来说,我们提出将秘密转换为一个加密的噪声的块,并进一步添加到封面上形成容器图像,类似于对抗性例子的生成过程。这种提出的秘密加密方法的灵感来自于对抗样本中存在的非鲁棒特征,这些特征对分类器具有高度预测性,但对人类来说很脆弱[7]。非鲁棒特征的特性与图像隐写术的目标完全吻合,即要求加密后的扰动对人是不可见的,但对揭示网络是可识别的,以便进行秘密揭示。因此,我们在对抗样本中利用非鲁棒特性的这一特性将秘密信息加密到局部图像块中,与现有方法相比,这将大大降低可解释性,因此更加安全。

图1中显示了一个比较所提出的AdaSteg和[3]可视化的示例,其目标是将图1的秘密(secret)隐藏到图1 (cover)的封面图像中。从图1 ©可以观察到,与封面相比,[3]容器的视觉质量下降了,但建议的AdaSteg容器几乎保持相同。此外,在计算了封面和容器之间的残差之后,[3]的残差映射模糊地恢复了秘密,而我们的AdaSteg的残差映射则显示为随机的,这导致了更安全的隐写术。

为了更全面地评价隐写术的性能,我们还设计了一种新的质量评价标准,专门用于图像隐写术的评价。与以往仅基于像素均方误差[3]的单因素准则相比,本文提出的多因素准则同时考虑了图像相似性和图像空间平滑度等多个关键隐写因素。伴随着提出的标准,我们还创建了一个具有挑战性的数据集,专门用于图像隐写术任务。与之前直接使用现有分类数据集进行评估的隐写算法不同,创建的数据集考虑了图像隐写术的特定特征,包括对局部强度变化具有视觉敏感性的彩色图像。据我们所知,这是文献中第一个专门用于图像隐写术任务的数据集。

总之,我们的贡献是一个新的深度自适应图像隐写术(AdaSteg)系统,允许第一个自适应局部图像隐写术和进一步的多图像隐写术,通过强化学习和对抗样本实现。此外,我们提出了第一个局部图像隐写术的质量评估标准,并收集了专门的图像隐写术数据集进行评估。实验结果表明,所提出的AdaSteg在安全性和容量方面都优于现有的技术。

三、系统概述

提出的AdaSteg包括两个阶段。第一阶段的目标是选择最优的封面块,即自适应块选择。这个问题是具有挑战性的,因为将一个给定的秘密图像隐藏到封面图像的不同块中会导致不同的隐写质量,如图4所示。因此,对于局部图像隐写,首先要解决的问题是如何为单个秘密图像选择最优的封面块。最简单可行的解决方案是贪婪地寻找最佳的块大小和位置,但代价是高昂的计算成本,特别是对于高分辨率的封面图像

在这里插入图片描述
图4 不同块隐藏秘密图像的比较结果。容器图像的MSE是在块级别上计算的。第一列的红框表示局部块的位置

为了解决这一挑战,我们提出了一种基于深度强化学习agent的规模和位置自适应块选择方法,该方法能够高效地搜索最优封面块。在我们提出的方法中,我们将自适应块选择任务定义为马尔可夫决策过程(Markov decision process, MDP),考虑到该设置提供了一个形式化框架来建模能够做出一系列决策的agent。以一对秘密和封面作为视觉环境,agent的目标是在每个时间步中决定一组动作,从而在几个步骤中找到最优的局部封面块,以获得更好的隐写质量。在每一个时间步中,agent都有当前块和过去动作的状态表示,同时在训练中获得正或负的奖励。红色虚线框部分表示以一对秘密图像和封面图像为环境,使用强化学习策略网络搜索最优局部块的过程。底部红色部分是强化学习的质量评价函数,包括隐藏损失和检测损失,我们将在下一节中讨论。

一旦通过自适应块选择方法确定了用于隐藏的最佳封面块,下一步就是将秘密安全地嵌入到封面中,称为秘密加密。之前的算法如[1]、[3]用大量的秘密和封面图像离线训练隐藏网络,然后在推理中冻结参数。我们认为,这种利用单一网络处理所有秘密和封面图像的方法是次优的,特别是在推理图像与训练数据非常不同的情况下。图1给出了一个演示这个问题的例子,其中使用单个网络[1]的前面的秘密加密方法公开了秘密的关键可视特征。

提出了一种新的基于对抗样本的秘密加密方法。我们首先将图像隐写术的过程重新表述为生成对抗样本的过程。然后,利用一种流行的生成对抗样本的在线优化方法,将秘密图像转换为加密扰动的块,并进一步添加到封面的局部区域。这样就可以在不泄露秘密信息的情况下对秘密进行加密。

四、通过深度强化搜索进行自适应块选择

我们的自适应块选择方法的总体过程如图5所示。在本节中,我们首先介绍一个隐写术质量函数。然后,我们解释了MDP公式中的三个基本元素,即转换动作、状态和奖励函数。最后,介绍了所提出的深度Q学习算法、策略网络的网络结构以及相应的训练策略。

在这里插入图片描述
图5 基于深度强化学习的自适应块选择算法概述

4.1 隐写术质量函数

质量函数对于DRL agent的训练是至关重要的,它评估当前块在优化中的质量。在典型的DRL应用程序中,质量函数通常是定义良好的,就像棋盘游戏或电脑游戏中的分数一样。此外,在某些环境中,如对象定位[39],IoU得分高意味着该区域的质量高,因此IoU函数可以作为质量函数。但在图像混合、图像隐写等领域,还没有很好的定义质量函数。然而,对于局部隐写术的任务,文献中还没有明确定义的质量函数。我们在这里提出了第一个专门的隐写术质量函数q(·),它是四个项的加权组合:

在这里插入图片描述

具体来说,第一个项Lm(Is,Is’)旨在度量秘密Is与已揭示秘密Is’之间的相似度,定义为像素空间中Is与Is’之间的均方误差。类似地,第二项Lm(Ic,Ic’)度量封面Ic和容器Ic’之间的差异。接收容器作为输入,第三项Lt(Ic’)设计为图像平滑的总变差损失。最后,最后一项Ld(ρ)用来衡量鉴别器(如图5所示的训练过的隐写分析检测器)检测加密局部块的置信度。所提出的隐写分析检测器的架构基于VGG-16,如图6所示,将在4.4节中进一步解释。Ld(ρ)一词引入了对抗强化学习的思想,旨在解决对手训练隐写分析网络检测加密秘密[1]、[3]时的安全问题。λ1, λ2和λ3是不同项之间平衡的权重因子。

为此,我们在式(1)中提出的隐写质量函数可以有效地指导DRLagent搜索最优的局部块。agent的目标是最小化最终质量函数的值,这本质上等同于最大化预期累积的未来报酬

4.2 MDP公式化

了更好地理解块选择的任务,我们在下面描述MDP是如何参数化的。

转换动作总共为DRL agent定义了8个转换动作,即右、左、上、下、更大、更小、更胖和更高。每个动作的详细信息可以在表1中找到。通过这些转换动作,DRL agent可以更改当前选择的局部块的大小和位置。具体来说,所有这些转换都对选定的块进行离散的相对更改,该更改与块大小成正比。以左行动为例。左表示当前选中的块应该向左移动β×w个像素,其中w为当前块的宽度,β表示变化的幅度。根据经验,我们发现β=0.1可以很好地权衡准确性和速度。有了这些预定义的动作序列,DRL agent可以在公式(1)中提出的隐写术质量函数的指导下,在每个时间步中决定一个动作,从而达到最优的局部块。

在这里插入图片描述
表1 建议的转换动作的详细描述

状态。DRL中观察到的状态通常作为策略网络的输入接收,然后策略网络可以生成相应的动作值,指示执行相应动作后的预期累积奖励。在我们提出的方法中,我们将状态变量定义为当前选择的局部块的上下文和一个记忆向量。局部块的上下文是指周围的区域,默认设置为比当前所选块大1.3×。这个扩大的上下文区域被策略网络用来决定潜在的方向,以更好地优化预期奖励。记忆向量的目的是通过捕获搜索过程[39]、[41]中之前执行的最后四个动作,避免在优化中陷入循环圈。这四个动作以32维向量的形式进行编码,假设提出的动作集的大小为8。

奖励函数。奖励函数定义为相邻时间步长的质量函数值之差:

在这里插入图片描述

其中Ra表示执行动作a后的奖励,t和t’分别表示agent在执行选定动作之前和之后的状态。如果q(t) > q(t’),表示执行a后合格函数q(·)的值增加,则可以获得正奖励;否则,agent就会因为消极的奖励而气馁。

4.3 深度Q学习

动作价值函数Q(t,a)本质上是DRL的核心组成部分,它决定了当前状态t下的动作a,同时也影响着预期累积奖励。在传统的Q学习中,动作选择策略是利用Bellman方程迭代优化:

在这里插入图片描述

其中r和maxaQ(t’,a’)表示当前奖励和未来奖励。γ表示折扣系数。

在我们的方法中,我们提出使用一个基于[42]的深度Q学习算法。与传统的Q学习不同,深度Q学习算法利用深度神经网络估计动作价值函数Q(t,a)的值。因此,深度Q学习的效率得到了显著的提高,因为通过深度Q网络的一次前向传递就可以获得可能的动作。此外,该算法使用重放记忆来收集各种经验,然后从这些经验中长期学习。通过这种方式,重放记忆中的转换可以用于模型优化,从而提高数据效率。具体来说,在训练中,我们的算法从回放记忆中随机选择过渡,从而打破不同状态之间的短期相关性。这样可以防止模型参数的发散,使算法在性能上更加稳定。

4.4 网络体系结构

图6显示了所提出的策略网络的网络架构以及相应的VGG-16探测器[43]。VGG-16探测器接收当前状态(图6棕色框)所选块作为输入。每个块区域调整为224×224,穿过整个网络,给予隐藏的置信度。

在这里插入图片描述
图6 所提出的策略网络的网络结构和隐写分析检测器。红色框代表当前时间步选中的局部块,绿色框代表局部块的上下文

该策略网络包括作为特征提取器的VGG-16网络和深度Q网络。具体来说,特征提取器与VGG-16探测器共享参数。使用特征提取器,agent可以获得观察区域(图6,绿色帧)的状态表示,该状态表示比所选块大1.3×。观察到的块的视觉描述符对应于VGG-16的pool5层的特征图。图6中的深度Q网络接收描述符和记忆向量作为输入。它由两个完全连接的层和1024个神经元组成,后面是一个ReLU激活函数。深度Q-网络的输出层对应agent的8种可能的动作。在训练中,一旦agent通过深度Q-网络选择了一个可能的动作,它就可以获得相应的积极或消极奖励。而在推理中,agent不需要学习策略,而是将学习到的策略用于训练,这意味着策略网络将观察到的块和噪声作为输入,直接为agent产生可能的动作。

4.5 训练策略

我们在这里描述了我们如何训练VGG-16探测器和提出的深Q网络的细节。

将VGG-16隐写分析检测器网络训练为二元分类器,以容器图像中受干扰的块为正样本,未受干扰的图像为负样本。我们使用学习率为10-5的SGD优化器用于训练。同时,VGG-16隐写分析检测网络的参数设置为与策略网络中的VGG-16特征提取器共享

在训练策略网络时,agent接收一对秘密和封面图像作为输入。作为起点,块大小设置为128×128,并带有随机偏移量。最大步数设置为50,这足以在经验上得到一个可行的块区域。当特定时间步所选块在图像区域外时,给予-1的负奖励,使agent保持当前状态

为了训练所提出的深度Q -网络,我们使用ϵ贪婪策略,从ϵ=1开始,以0.1的间隔内减少到ϵ=0.1。在最初的几个时间步骤中,由于缺乏经验,我们使用随机动作。在每一个epoch,我们都更多地求助于成熟的策略,以供主体做出决策。这种探索-利用过程有利于优化过程中避开局部极小值。深Q网络由正态分布初始化,我们使用学习率为10-4的SGD优化器进行训练。默认情况下,每个模型训练50个epoch。

Bellman方程,作为经验。然而,连续的经验可能非常相关,导致学习效率低下和不稳定,这是Q学习中常见的问题。这个问题的一个可能的解决方案是收集和存储的经验回放记忆。我们使用这个重放存储器中的随机小批量来训练网络。一次经验重放涉及1000个经验,批次大小设置为100。

考虑到长期的表现,既要考虑到未来的奖励,也要考虑到眼前的奖励。因此,我们建议使用Bellman方程的折现奖励,γ=0.2。这里使用一个小的折现值,因为我们通过实验发现,较大的折现系数会导致较差的收敛。
搜索过程中的中间DRL行为如图7所示,其中橙色框和绿色框分别表示初始ROI和最终ROI。

在这里插入图片描述
图7 中间DRL行为的一个例子。橙色框表示初始ROI,绿色框表示最终ROI

五、通过对抗样本进行加密

在AdaSteg中,发送者的目标是将秘密图像Is隐藏到封面图像Ic的特定局部区域,从而形成尽可能与封面相似的容器Ic’,从而安全地传输信息。采用基于深度强化学习的自适应块选择方法对封面块进行选择。在接收端,对容器进行解码以产生被揭示的秘密Is’,这应该保留秘密Is的外观。所提出的自适应图像隐写术的秘密加密目标可表示为:

在这里插入图片描述

其中,Φ为通过强化学习进行自适应块选择的过程,Φ(Ic)为所选封面块,g为秘密揭示网络。现在,我们引入一个对抗扰动ρ,如[22]所定义:

在这里插入图片描述

引入对抗扰动后,式(4)可改写为:

在这里插入图片描述

这种表述实质上是生成对抗样本的标准过程,但为图像隐写术提供了定制的目标。

为此,我们展示了秘密的加密可以作为生成对抗样本[22]的过程来实现。因此,在线优化生成对抗样本的思想可以很容易地应用于自适应局部图像隐写术中的秘密加密。

5.1 网络体系结构

根据式(6),我们提出了一种基于生成对抗样本的在线优化过程的秘密加密方法。整个网络结构如图8所示,由隐藏网络和揭示网络组成。

在这里插入图片描述
图8 对我们的秘密加密网络架构的概述。隐藏阶段用橙色箭头表示,揭示阶段用蓝色箭头表示

隐藏网络隐藏网络的目的是将一个秘密转化为一个扰动,类似于生成对抗样本的过程。给定一个封面图像Ic和一个秘密图像Is作为输入,隐藏网络生成容器图像Ic’,即生成的对抗样本,是封面和生成的扰动之和,如图8左侧所示。

在以往的图像隐写算法中,容器图像Ic’是使用单个预先训练的隐藏网络生成的,而不改变任何针对不同封面和秘密特征的专门参数。这种方式通常会导致失败,在其他图像生成任务[44]中也会出现这种情况。我们还在图9中演示了使用单一固定网络隐藏[1]的结果,其中秘密可以在残留图像上模糊可见,从而泄露秘密信息。

在这里插入图片描述
图9 单一固定网络与在线固定网络的残差结果比较

受到生成对抗样本[22]的在线方法的启发,我们提出以在线方式优化隐藏网络以产生所需的加密扰动。生成的扰动随后被添加到封面上,从而形成容器。这样,由于我们的隐藏网络中的参数是特定于秘密的,所提出的方法解决了以往工作中一个网络为所有秘密的方式所带来的问题。所提出的秘密加密方法的成功还得益于非鲁棒特征在对抗样本中的有效性,即对分类系统具有高度预测性,但对人眼来说很脆弱的特征[7]。这种非鲁棒特征的性质与图像隐写术的目标很好地匹配,其中加密的扰动应该是人类无法理解的,但对于接收端的秘密揭示,揭示网络应该是可识别的,如图10所示。所提出的秘密加密方法可表示为:

在这里插入图片描述

其中,Φ(Ic)、Is和ρ分别表示通过强化学习选择的封面块、秘密图像和产生的扰动。fθ*是用于在线优化的隐藏网络,也可以认为是隐式隐写先验。Lsteg是用于优化的隐写损失,后面将对其进行定义。

揭示网络。所提出的揭示网络与隐藏网络相结合,旨在解密容器图像中的目标秘密。与隐藏网络因不同的秘密而变化不同,揭示网络在训练后总是固定的,考虑到信息接收方的部署。利用所提出的揭示网络,秘密揭示过程可以建模为:

在这里插入图片描述

其中g为固定的揭示网络,Is’表示接收端揭示的秘密。

损失函数隐写损失Lsteg的目的是使容器类似于封面,并使显示的秘密在视觉上类似于给定的秘密

在这里插入图片描述

其中ɑ为权重因子。g表示接收容器图像Φ(Ic) + ρ作为输入的揭示网络,恢复揭示的秘密图像Is’。在这里,我们使用L1距离来衡量Ic和Ic’之间的相似度,以及Is和Is’之间的相似度,因为我们根据经验发现,L1距离相比L2距离更容易产生更模糊的结果。为了解释这一现象,我们发现L1范数对轮廓的鲁棒性更强,优化效果更好,更接近原始图像,模糊效果更小。此外,L1范数具有产生许多零值系数或非常小的值而很少有大系数的特性,即鼓励线性组合[45]的稀疏性。因此,L1在优化过程中平均效应较小,这是普遍接受的像素级损失的经验观察,如[46],[47],[48]。

5.2 训练策略

隐藏和揭示网络的训练分为两个阶段。在第一阶段,我们使用COCO数据集,根据公式(8)中提到的目标预先训练隐藏和揭示网络。在这个训练过程中,隐藏网络和揭示网络联合优化。第二阶段也可以认为是推理阶段,预训练的揭示网络保持固定,我们只需要在线改变隐藏网络的参数。通过这种方法,根据不同封面和秘密的特点定制隐藏网络的参数,从而提高了隐写的质量。

六、局部图像隐写术的质量评价

以往的图像隐写算法仅使用封面与容器之间的每像素均方误差、秘密与揭示秘密之间的每像素均方误差来评价隐写[1]、[3]的性能。我们认为这个单一的标准对于评价局部图像隐写术的质量是不够全面的。其他一些因素,如图像平滑,也应该在评估中考虑。因此,我们提出了一种新的局部隐写准则Msteg,其定义如下:

在这里插入图片描述

其中Lm(Ic,Ic’)和Lm(Is, Is’)分别用均方误差(MSE)来衡量容器和封面之间的相似度,以及被揭示的秘密和秘密之间的相似度。Ltv(Ic’)表示总变差损失,旨在评价局部块加密后容器图像的空间平滑性。b是偏置项。

为了通过最小二乘拟合确定公式(10)中的权重因子w1、w2和w3,我们进行了一项用户研究,通过3000对从VOC 2007中选取的封面和秘密图像,获得对隐藏质量的感知评分。具体来说,有30名志愿者参与了用户研究。每个参与者每次展示一张256×256的图像,这张图像要么是没有加密的干净的封面图像,要么是用局部图像隐写算法生成的加密容器图像。对于加密的容器图像,加密位置和隐藏-揭示权衡因子(即式(9)中的ɑ)是随机选择的,并且随着容器的不同而不同。然后,参与者被要求点击三个选项中的一个,分别是隐藏的、不隐藏的和不确定的,对应于隐写术得分5分、-5分和0分。为了避免疲劳带来的不准确的标签,我们的项目要求每个参与者在休息前对最多150张图片进行评分。

统计上,每个参与者评价700张图片。每个图像由6-10名参与者打分,我们使用以下规则来确定每个图像的最终隐写评分:如果超过三分之二的参与者对选择达成一致意见,则直接给对应的图像分配相应的评分;否则,我们将计算不同参与者给出的选项的平均分。最后,在本次用户研究中获得的隐写术得分上,用最小二乘法计算公式(10)中的权重因子w1、w2和w3。

除评价标准外,隐写术数据集是评价中需要考虑的另一个关键问题。以往的隐写方法直接使用分类数据集来评价图像隐写[1]、[3]的质量。我们认为这种行为是次优的,因为在图像隐写术任务的特定属性方面缺乏考虑。因此,我们收集了一个新颖且具有挑战性的封面图像数据集,专门用于评估图像隐写算法。与以往隐写术工作中使用的现有数据集不同,我们试图收集对局部区域颜色变化具有视觉敏感性的彩色图像。这种数据收集方式的灵感来自于我们的观察:如果封面图像的一个微小变化就会导致非常不同的视觉效果,对应的图像对于隐写术来说就更具有挑战性,因为隐写术容易被检测的风险

收集到的隐写术数据集总共包含800张图像,涉及绘画、彩色地图和摄影三个图像类别,如图11所示。绘画类型共有296幅彩色颜料作品。对于彩色地图的类别,我们选择了91张用于色觉测试的图像,颜色的微小变化会导致不同的结果。该类型的摄影有403张精选的照片,从色彩丰富的自然场景中捕捉。收集到的隐写术数据集将对外公开。

在这里插入图片描述
图11 来自新数据集的样本图像,包括绘画、摄影和彩色地图

七、实现细节

使用随机块位置,我们从COCO数据集[49]中选择2000对封面图像和秘密图像进行初始的隐藏-揭示网络训练。为了验证隐藏-揭示网络的性能和自定义数据集的适用性,我们首先在公共数据集(VOC2007 [50], ImageNet[51]和Open Images[52])上实验隐写算法,然后在自定义数据集上进行实验。封面图像和秘密图像从以下数据集中随机选择:
(1)秘密图像:VOC2007 (3000);封面图片:VOC2007 (3000);
(2)秘密图像:VOC2007 (3000);封面图片:Open Images(3000张);
(3)秘密图像:VOC2007 (663);封面图片:定制(663);

对于隐藏-揭示模块,我们使用Adam优化器进行隐藏和揭示网络训练。批量大小设置为1,学习率设置为10-4。在固定揭示网络的情况下,用Adam[53]在线优化隐藏网络,迭代2000次。我们的整个算法是基于TensorFlow[54]实现的。

八、结论

本文介绍了一种通过强化学习和对抗样本实现的自适应局部图像隐写系统(AdaSteg)。所提出的方法允许在封面的局部区域内自适应隐藏给定的秘密,从而使隐写术更加安全。此外,该算法使多秘密隐写术成为可能,即一个封面可以隐藏多个秘密图像,从而解决了以往隐写术方法中一个秘密一个封面的困境。此外,我们设计了一个新的标准来综合评价局部隐写的质量,并收集了一个新的数据集专门用于图像隐写任务。实验结果表明,该算法的结果优于现有方法。在我们未来的工作中,我们将进一步扩展所提出的方法到视频和音频隐写术

论文地址:Seek-and-Hide: Adversarial Steganography via Deep Reinforcement Learning

源码地址:AdaSteg

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024.2.14

1.请编程实现二维数组的杨慧三角 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) { int n,i,j;printf("please enter n:");scanf("%d",&n);int arr[n][n];for(i0;i<n;i){for(j0;j<i;j){if(j0 || ij…

【无标题】Matlab 之axes函数——创建笛卡尔坐标区

**基本用法&#xff1a;**axes 在当前图窗中创建默认的笛卡尔坐标区&#xff0c;并将其设置为当前坐标区。 应用场景1&#xff1a;在图窗中放置两个 Axes 对象&#xff0c;并为每个对象添加一个绘图。 要求1&#xff1a;指定第一个 Axes 对象的位置&#xff0c;使其左下角位于…

【AIGC】Stable Diffusion的ControlNet插件

ControlNet 介绍 ControlNet 插件是 Stable Diffusion 中的一个重要组件&#xff0c;用于提供对模型的控制和调整。以下是 ControlNet 插件的主要特点和功能&#xff1a; 模型控制&#xff1a; ControlNet 允许用户对 Stable Diffusion 中的模型进行精细的控制和调整。用户可以…

单片机学习笔记---LCD1602功能函数代码

目录 LCD1602.c 模拟写指令的时序 模拟写数据的时序 初始化 显示字符 显示字符串 显示数字 显示有符号的数字 显示16进制数字 显示二进制数 LCD1602.h main.c 上一篇讲了LCD1602的工作原理&#xff0c;这一节开始代码演示&#xff01; 新创建工程&#xff1a;LCD1…

Linux内核-时间子系统(时钟中断)专题汇总

文章目录 概要一、专题汇总1.1、优秀系列博文1.2、时间子系统1.3、高精度定时器hrtimer1.4、RTC硬件芯片驱动 概要 中断机制是计算机系统的重要组成部分&#xff0c;在Linux中也不例外&#xff0c;中断按照来源分为硬中断和软中断&#xff0c;而硬中断根据硬件范围分为外中断和…

MySQL数据库基础(一):数据库概述

文章目录 数据库概述 一、数据库介绍 二、数据库分类 1、关系型数据库 2、非关系型数据库NoSQL 三、常见数据库介绍 1、关系型数据库 2、非关系型数据库 数据库概述 一、数据库介绍 数据库就是存储数据的仓库&#xff0c;其本质是一个文件系统&#xff0c;按照特定的…

AI算法参数个数本身优化空间

一、背景 AI算法的参数数量并非越多越好&#xff0c;也不是越少越好。参数的数量与模型的复杂度密切相关&#xff1a; 1. 参数多&#xff08;高复杂度模型&#xff09;&#xff1a; - 优点&#xff1a;模型具有更强的表达能力和拟合能力&#xff0c;对于复杂的、非线性的数据分…

Backtrader 文档学习- Plotting -Plotting on the same axis

Backtrader 文档学习- Plotting -Plotting on the same axis 1.概述 在同一轴上绘图&#xff0c;绘图是在同一空间上绘制原始数据和稍微(随机)修改的数据&#xff0c;但不是在同一轴上。 核心代码&#xff0c;data数据正负50点。 # The filter which changes the close pri…

PR:视频编辑播放速度技巧

想要视频片段加速或者减速&#xff0c;可以在片段上右击&#xff0c;选择“速度/持续时间...” 速度&#xff1a;可以更改百分比&#xff0c;如改成200%就是加速一倍&#xff0c;改成50%就是减速一倍。 注&#xff1a;如果源视频是正常速度录制的&#xff0c;比如每秒25帧&…

npm使用国内淘宝镜像(最新地址)

目录 前言 一、命令配置 二、使用cnpm安装 三、常见包地址 四、总结 往期回顾 前言 我们前端程序员在使用国外的镜像源速度很慢并且容易下载失败&#xff0c;有时候需要尝试多次才有可能下载成功&#xff0c;很麻烦&#xff0c;但是可以切换为国内镜像源&#xff0c;下…

Docker 在window 2024版笔记 下载 安装 操作 配置

---Docker 前言--- Docker windows版官方版是一款专业开源的应用容器引擎&#xff0c;可以加快用户构建、共享和运行现代应用程序的速度&#xff0c;支持运行Linux和Windows Docker容器。 Docker 在容器的基础上&#xff0c;进行了进一步的封装&#xff0c;从文件系统、网络互…

嵌入式中I2C 相关的硬件问题汇总及死锁解决办法

本文主要介绍如何解决I2C设备硬件设计上的各种问题&#xff0c;希望对大家有所帮助&#xff01; 关于I2C协议详细的讲解&#xff0c;可以参考之前的推文&#xff1a;全面解析 I2C 通信协议 一般情况下&#xff0c; i2c 设备焊接没什么问题&#xff0c;按照设备手册一步步来&a…

初识Qt | 从安装到编写Hello World程序

文章目录 1.前端开发简单分类2.Qt的简单介绍3.Qt的安装和环境配置4.创建简单的Qt项目 1.前端开发简单分类 前端开发&#xff0c;这里是一个广义的概念&#xff0c;不单指网页开发&#xff0c;它的常见分类 网页开发&#xff1a;前端开发的主要领域&#xff0c;使用HTML、CSS …

qt-C++笔记之捕获鼠标滚轮事件并输出滚轮角度增量

qt-C笔记之捕获鼠标滚轮事件并输出滚轮角度增量 code review! 文章目录 qt-C笔记之捕获鼠标滚轮事件并输出滚轮角度增量1.运行2.main.cpp3.main.pro 1.运行 2.main.cpp #include <QApplication> #include <QWidget> #include <QWheelEvent> #include <…

HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核基础-消息队列queue

目录 一、消息队列基本概念二、消息队列运行机制三、消息队列开发流程四、消息队列使用说明五、消息队列接口六、代码分析&#xff08;待续...&#xff09;坚持就有收获 一、消息队列基本概念 队列又称消息队列&#xff0c;是一种常用于任务间通信的数据结构。队列接收来自任务…

Json-序列化字符串时间格式问题

序列化字符串时间格式问题 一、项目场景二、问题描述三、解决方案 一、项目场景 最近C#中需要将实体进行json序列化&#xff0c;使用了Newtonsoft.Json public static void TestJson(){DataTable dt new DataTable();dt.Columns.Add("Age", Type.GetType("Sys…

【数据库】哪些操作会导致索引失效

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;数据库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 在数据库管理中&#xff0c;索引的有效性对于查询性能至关重要。然而&#xff0c;索引可能会因为各种操…

插值(一)——多项式插值(C++)

插值 插值的作用是可以将原本比较难计算的函数转换为误差在一定范围内的多项式&#xff0c;比如在单片机中直接计算 x 、 log ⁡ 2 x \sqrt{x}、\log_2x x ​、log2​x之类的函数是比较麻烦的&#xff0c;但是使用插值的方法就可以将其转换为误差可控的只有乘法和加减法的多项…

Codeforces Round 926 (Div. 2)

Codeforces Round 926 (Div. 2) Codeforces Round 926 (Div. 2) A. Sasha and the Beautiful Array 题意&#xff1a;略。 思路&#xff1a;从小到大排序&#xff0c;取前后差和。 AC code&#xff1a; void solve() {int ans 0;cin >> n;for (int i 1; i < n…