图像处理之《鲁棒图像隐写术:隐藏频率系数中的信息》论文精读

本文主要是介绍图像处理之《鲁棒图像隐写术:隐藏频率系数中的信息》论文精读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、文章摘要

隐写术是一种将秘密信息隐藏到公共多媒体对象中而不会引起第三方怀疑的技术。然而,大多数现有的工作不能提供良好的抗有损JPEG压缩鲁棒性,同时保持相对较大的嵌入容量。提出了一种基于可逆神经网络的端到端鲁棒隐写系统。该方法将秘密信息直接隐藏到封面图像的离散余弦变换(DCT)系数中,而不是隐藏在空间域中,显著提高了鲁棒性和抗隐写安全性。首先提出了互信息损失来约束INN中的信息流。实现了双向融合模块(TWFM),利用空间域和DCT域特征作为辅助信息,便于信息提取。这两种设计有助于从DCT系数中无损地恢复秘密消息。实验结果表明,该方法的误差率明显低于其他现有的隐藏方法。例如,我们的方法在每像素1比特(bpp)的嵌入负载下实现了0错误率的可靠提取;在质量因子QF = 10的JPEG压缩条件下,该方法的错误率比现有的鲁棒图像隐藏方法低22%左右,对JPEG压缩具有较好的鲁棒性。

在这里插入图片描述
二、提出的方法

2.1 框架概述

传统的神经网络利用两个独立的编码器和解码器对秘密消息M、封面图像C和隐写图像S之间的映射进行建模,可以表示为:(M,C)->S和S->(M,C)。这种单独的编码器-解码器结构将导致不准确的双射映射,并可能将一个映射的误差累积到另一个映射中。在我们提出的方法中,我们试图找到一个可以同时隐藏和提取秘密消息的可逆双射网络,表示为:(M,C) <-> s。在图2中,我们的方法框架由几个部分组成:INN、JPEG压缩层、鉴别器和双向融合模块。我们使用仿射耦合层来构造隐藏和显示块。有12个这样的可逆块用于隐藏和显示INN的过程。这两个过程在训练过程中共享参数,这比传统的编码器-解码器架构更有效地驱动模型。JPEG压缩层是一个模拟器,将不可微的JPEG压缩模拟成可微的近似形式,然后将其引入到端到端网络中,以减轻失真影响,有效地提高鲁棒性。利用对抗性鉴别器区分生成的隐写图像与原始封面图像是否相似,利用对抗性学习提高生成的隐写图像的视觉保真度和隐写安全性。TWFM经过精心设计,充分结合了空间和DCT域的特征来恢复信息。

在这里插入图片描述
图2 提出的隐写体系结构概述

2.2 可逆隐藏/揭示过程

我们表示具有c个通道和h × w大小的封面图像为c ={0,…, 255}c×h×w,其中c = 3,h = 256,w = 256。将秘密消息记为m={0,1}l,长度为1。为了保证INN的两个输入大小相同,我们将秘密消息输入作为一个三维体积来管理,如果有效载荷小于1 bpp,我们将每个具有相同值的比特填充到8×8小块中。已成形的秘密消息表示为M={0,1}c’×h×w,其中c’为通道数。在前向隐藏过程中,对封面图像进行DCT变换,形成与空间图像大小相同的三维DCT系数立方体。然后利用隐藏块将秘密信息M嵌入到封面图像的DCT系数Cdct中。考虑图2中的第i个隐藏块,我们输入Cidct和Mi,输出Ci+1dct和Mi+1,可表示为:
在这里插入图片描述

其中⊙表示阿达玛尔积运算,(·),ρ(·)和η(·)表示任意函数,但不要求可逆。在这里,我们使用5层Denseblock (Wang等人2018)来表示这三个函数,以获得令人满意的图像处理性能。需要注意的是,经过一系列的隐藏块后,模型输出隐写图像的DCT系数Sdct和丢失的信息矩阵L。为了得到相应的隐写图像S,IDCT模块接收频率特征Sdct并将其变换回空间域。

在反向揭示过程中,DCT模块接收到被攻击的隐写图像Sa,并将其转换为DCT特征Sdcta。由于在通信信道上只能传输被攻击的隐写图像,因此我们将被攻击的隐写图像Sa保存在揭示过程的开始。因此,为了替换丢失的信息矩阵L,提炼必要的信息进行揭示,TWFM将被攻击的隐写图像Sa及其频率系数Sdcta合并生成辅助变量矩阵z。下面将介绍TWFM的详细结构。我们注意到,除了信息流动方向相反之外,隐藏块和显示块几乎是相同的。对于第i个揭示块,输入为Si+1dct_a和Zi+1,根据下式得到输出为Si dct _a和Zi:
在这里插入图片描述

其中,⊘表示矩阵的除法运算。最后一个显示块输出恢复的封面图像的DCT系数C’dct和恢复的消息M0。最终,C’dct通过IDCT模块转换为恢复的封面图像C’,M’重新塑造并映射回二进制消息m’。

2.3 双向融合模块(TWFM)

在封面图像中隐藏秘密信息时,高容量嵌入不可避免地会对载体造成损害。此外,为了避免生成的隐写图像的视觉失真,很难将秘密信息完全嵌入到载体中。这样,上述两个信息损失就构成了丢失的信息矩阵L。工作 (Jing等人2021)从高斯分布中随机抽取样本组成辅助变量矩阵Z。然后对每个采样的Z进行训练,以确保INN能够恢复秘密消息。然而,这种方法并没有充分考虑到L包含来自输入特征的有效信息,这些信息应该在揭示过程中尽可能地利用。也就是说,丢弃L将导致秘密消息恢复的准确性降低

自注意机制(Vaswani等人2017)将输入映射到几个不同的patch中,以捕获特征的内部相关性,TWFM旨在有效地提取和融合空间域和频率域特征,以提高秘密消息恢复的准确性。TWFM的体系结构如图3所示。输入是攻击后的隐写图像Sa及其频率特征Sdct_a。注意权重映射通过元素积在空间域和频域为相应的特征分配0 ~ 1之间的权重。它从Sa和Sdct_a中选择有意义的特征,同时抑制一些无关的细节。整个过程可以描述如下:
在这里插入图片描述

其中⊗是元素积运算,σ(·)、δ(·)和fc(·)分别表示softmax函数、concat操作和卷积。注意权重映射W表示从输入特征矩阵中获得的区域信息的重要性,其中需要更多地关注高权重元素。请注意,TWFM是即插即用的,也就是说,它可以与INN进行端到端联合训练
在这里插入图片描述
图3 双向融合模块的架构

2.4 JPEG压缩层的设计

JPEG压缩过程包含一个不可微的步骤:舍入函数是截断梯度传播的分段步骤函数。因此,JPEG不适合直接进行端到端训练优化。为了解决这一问题,我们在工作中采用平滑舍入函数R (x) (Shin and Song 2017)来模拟舍入步骤,可以表示为:
在这里插入图片描述

式中[x]为x的舍入运算,R(x)为量化模拟的舍入DCT系数。模拟的舍入函数R(x)近似连续,说明其导数不为零。通过这种方法,可以将不可微的JPEG压缩以可微的形式进行模拟,从而在训练过程中保持梯度传播

2.5 鉴别器的设计

鉴别器评估封面图像和隐写图像之间的差异,并提供关于生成器性能的反馈,这进一步刺激生成的实例更接近原始类的数据。在我们提出的方法中,鉴别器模块由6组组成。从第1组到第5组,每组由一个卷积层(kernel size = 3,stride = 2,padding = 1)、一个BN层和一个LeakyReLU激活函数组成。组6包含一个全局平均池化(GAP)和一个输出分类概率的线性层。得益于对抗学习的基本原理,生成的隐写图像具有更高的视觉保真度和抗统计检测的隐写安全性。

2.6 损失函数

为了生成高保真的隐写图像,恢复低误差的信息,总体优化目标为:
在这里插入图片描述
其中λc,λr,λd和λm是平衡不同损失项的权重因子。

隐藏损失Lc隐藏损失Lc表示封面图像C和隐写图像S的区别。隐藏损失需要控制在一个合适的水平,以获得良好的隐蔽性。我们用均方误差(MSE)来衡量它们之间的差异,其定义为:
在这里插入图片描述

揭示损失Lr揭示损失Lr表示恢复的消息M’与原始秘密消息M之间的差异,希望低的揭示损失能够获得较高的消息恢复精度,可以表示为:
在这里插入图片描述

鉴别损失Ld利用辨别损失来增强生成的隐写图像的视觉保真度和网络的抗隐写能力,其中交叉熵损失函数描述如下:
在这里插入图片描述
其中yi为原始真实标签(cover为0,stego为1)。pi表示鉴别器的分类概率。

互信息损失Lm互信息反映了两个变量之间的相关性:一个变量中包含的关于另一个变量的信息量。在图2中,前向隐藏过程以秘密消息M为输入,丢失信息矩阵L为输出。理想情况下,当它们之间的互信息接近于0时,可以假设L的分布与输入m的分布无关,此时我们可以丢弃L而不呈现信息丢失以供揭。因此,为了在嵌入中保持有效信息,提出了互信息损失Lm来约束信息流的方向。它可以定义为:
在这里插入图片描述

式中H (M)和H (L)表示信息熵,H (M,L)表示M和L的联合熵,信息熵和联合熵的计算公式为:
在这里插入图片描述

其中N为矩阵中不同像素值的个数,Pi为矩阵中出现值为i的像素的概率。PML(i,j)是同一位置的像素在矩阵M中值为i,在矩阵L中值为j的概率。

三、实现细节

数据集和实现细节。用于训练和测试的数据集是MSCOCO (Lin等人2014)。我们随机选择5000张图片作为训练的封面图片,1000张图片作为测试的封面图片。上面用于训练或测试的封面图像不重叠,并且使用MATLAB的中心裁剪策略以256 × 256的分辨率裁剪。采用标准参数的Adam优化器(Kingma and Ba 2014)对我们的网络进行优化。初始学习率设置为0.0001,批量大小设置为2以适应我们的设备。整个训练过程包括120个阶段。整个框架由PyTorch实现,并在NVIDIA GeForce RTX 2080 Ti上执行。在训练结束时,模型已经充分收敛。权重因子λc、λr、λd、λm分别设为1.0、15.0、3.0、5.0

评价指标。我们从以下几个方面对业绩进行评估。采用峰值信噪比(PSNR) (Welstead 1999)和结构相似性指数(SSIM) (Wang等人2004)作为图像质量评估。使用误码率(BER)来衡量鲁棒性,误码率越低,表示恢复的消息m’更接近原始消息m。由于恢复的消息m’是浮点数,因此我们将m0中大于0.5的位映射为1,其余位映射为0。在隐写安全性方面,检测误差表明隐写分析网络无法区分特定隐写方法产生的封面图像/隐写图像。

四、汇报PPT(作者本人)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

论文地址:Robust Image Steganography: Hiding Messages in Frequency Coefficients

没有公布源码

这篇关于图像处理之《鲁棒图像隐写术:隐藏频率系数中的信息》论文精读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/697849

相关文章

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编