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

论文阅读 | 基于流模型和可逆噪声层的鲁棒水印框架(AAAI 2023)

  • Flow-based Robust Watermarking with Invertible Noise Layer for Black-box Distortions
  • AAAI, 2023,新加坡国立大学&中国科学技术大学
  • 本论文提出一种基于流的鲁棒数字水印框架,该框架采用了可逆噪声层来抵御黑盒失真。


 一、问题

基于深度神经网络的水印算法已被广泛研究,大多数的算法都使用了一种“编码器-噪声层-解码器”(Encoder-NoiseLayer-Decoder)的框架,但这样的框架可能会产生一个潜在的问题,就是编码器和解码器耦合不够好的问题。而这一问题可能会使编码器嵌入解码无关的信号,从而限制算法在不可见性与鲁棒性上的整体性能

二、所提的方法

1、概述

a.提出了一种基于可逆流模型的鲁棒水印框架

为更好地实现编码器与解码器的耦合,论文提出了一种基于可逆流模型的鲁棒水印框架,有效使用了相同的网络参数同时执行嵌入过程和提取过程。该框架的核心是一系列可逆网络单元,能有效实现输入信号和输出信号的无损转换。这样,网络的前向传输过程就能有效作为编码器实现消息的嵌入过程,而反向传输过程就能作为解码器实现消息的提取过程。从而保证了编码器和解码器的高度耦合。 

b.提出了一个可逆噪声层的结构来应对黑盒失真

可逆噪声层的主体是一个可逆流网络,其目的是使用前向传输过程模拟黑盒失真。模拟完成的可逆噪声层的前向过程能有效的作为黑盒失真层加入到整个框架中进行训练。同时由于可逆性的存在,可逆噪声层的反向过程也能有效的当作一种提取前的去噪过程,有效去除部分噪声的影响并提升了鲁棒性。

图1. 水印训练和测试的框架图。算法的主要架构是基于流的编码器和解码器,由多个可逆神经块组成,可用于前向编码过程和反向解码过程。在编码器和解码器之间,执行包含白盒和黑盒扭曲的噪声层,以将水印图像扭曲为解码器训练的扭曲版本。

2、如何理解“可逆”?

在这篇论文中,可逆性主要体现在所提出的流式编码器/解码器(Flow-based Encoder/Decoder,简称 FED)架构上。FED利用了可逆神经网络(Invertible Neural Networks,简称 INN)的特性来实现编码和解码过程的可逆性。具体来说,可逆性体现在以下几个方面:

a.共享参数的编码器和解码器

  • 在传统的“编码器-噪声层-解码器”(END)架构中,编码器和解码器是分开训练的,可能导致它们之间耦合不紧密。

  • 流式架构通过使用可逆的神经网络块,使得编码器和解码器共享相同的网络参数和结构,这意味着它们在前向编码和反向解码过程中共享相同的网络权重。从而在前向编码和反向解码过程中实现紧密耦合:

b.可逆的神经块

FED由多个可逆的“上-下采样”神经块组成。这些神经块在前向传播时用于嵌入水印信息,在反向传播时用于提取水印信息。每个神经块都设计为可逆的,即它们能够通过相同的网络结构和参数实现前向和反向操作。

c.前向编码和反向解码

在前向编码过程中,可逆神经块接收水印信息和宿主图像作为输入,并输出带水印的图像和冗余信息。在反向解码过程中,使用相同的神经块结构,但信息流的方向相反,从而从失真图像中恢复出水印信息。

(1)在前向编码过程中,我们有图像信息 x_{i}和水印信息 m_{i}作为输入。我们的目标是将水印信息嵌入到图像中,生成新的图像信息x_{i+1}和更新后的水印信息m_{i+1}​。

  1. 上采样操作 U_i:将水印信息m_i上采样到与图像信息x_{i}相同的尺寸。
  2. 下采样操作 D_{i}^{1}D_{i}^{2}:这两个操作将上采样后的图像信息 x_{i+1}进行下采样,得到两个不同的表示,用于更新水印信息。
  3. 前向编码公式如下:

这里,⊗表示点积操作,exp 表示指数函数。 

在正向编码过程中使用的加号(+)表示的是将两个信号或特征图进行逐元素相加的操作。这种操作在神经网络中非常常见,尤其是在处理图像数据时。公式中,加号用于将上采样后的水印信息与原始图像信息相结合。原因和作用:

1. 合并信息

加法操作用于合并两个不同的信息源。在正向编码的情况下,这包括:

  • 原始图像信息x_{i}:这是未经修改的输入图像。
  • 上采样的水印信息U_i{(m_i)}:这是将水印信息上采样到与图像相同的尺寸后的结果。

通过将这两个信息源相加,我们可以将水印信息直接嵌入到图像中,而不显著改变图像的视觉特性。

2. 保持图像质量

加法是一种简单且有效的信息融合方法,因为它不会引入额外的复杂性或计算负担在图像处理中,保持原始图像的视觉质量是非常重要的,尤其是在水印或隐写术应用中。加法操作因其简单性,通常不会对图像质量产生负面影响。

3. 可逆性

在可逆神经网络中,加法操作是可逆的,这意味着可以通过反向操作(减法)来恢复原始的图像信息。这种可逆性对于后续的解码过程至关重要,因为它允许从带水印的图像中准确地提取出水印信息。

(2)在反向解码过程中,我们希望从带水印的图像中提取出水印信息。我们使用与前向编码相同的网络块,但是以相反的顺序应用它们。

  1. 反向操作:首先对冗余信息r_{i+1}进行操作,以生成r_{i}
  2. 下采样的逆操作:使用U_i的逆操作从r_{i}中恢复图像信息x_{i}
  3. 反向解码公式如下:

这里,x_{i+1}'是失真图像,r_{i+1}是从x_{i+1}'中提取的冗余信息 

在反向解码过程中使用的负号(-)和指数函数(exp⁡)是可逆神经网络中常见的操作,它们用于确保网络的可逆性和信息的准确恢复。这些操作的具体作用如下:

  1. 负号(-):在反向操作中,负号用于逆转前向过程中某些操作的效果。在许多可逆网络设计中,正向操作和反向操作是对称的,负号确保了这种对称性,使得网络可以准确地反向追踪其操作。例如,如果在前向传播中进行了加法操作x=y+z,那么在反向传播中,我们可能需要执行减法操作z=x-y来恢复 z的值。

  2. 指数函数(exp⁡)指数函数在可逆网络中用于处理乘法或除法操作这是因为乘法和除法操作在数学上不是可逆的,因为它们不保持信息的一一对应关系。通过使用指数和对数函数,我们可以将乘法转换为加法,或将除法转换为减法,从而使得操作可逆例如,如果前向操作是乘法x=yz,那么反向操作可以是z = \exp(\ln(x) - \ln(y))

  • 负号 − 用于逆转D_{i}^{1}操作的效果。
  • 指数函数 exp⁡用于逆转D_{i}^{1}操作的效果,并且通过这种方式,可以将乘法操作转换为加法操作,使得网络可逆。

d.可逆的噪声层

噪声层在训练阶段被引入,用于模拟和扭曲水印图像,使解码器能够从扭曲的图像中提取出水印信息。这种机制通过联合训练编码器、噪声层和解码器来确保水印系统的鲁棒性。

(1)噪声层的类型
  • 白盒噪声层(White-box Noise Layer):直接使用现有的可微噪声层(如JPEGSS用于JPEG压缩)。这些噪声层通过已知的可微操作模拟已知的图像处理过程。
  • 黑盒噪声层(Black-box Noise Layer,即INL):针对未知机制的黑盒失真(如社交媒体中的风格转换),采用可逆神经网络(Invertible Neural Network, INN)来模拟这些失真。INL的前向过程作为训练时的噪声层,后向过程作为提取前的去噪操作,以提升系统对黑盒失真的鲁棒性。
(2)黑盒噪声层(INL)的设计
  • 训练数据:通过将原始图像 I_+经过黑盒失真过程((如风格转换API)),得到失真图像I_-,形成训练数据对 {I_+,I_-}
  • 网络架构:INL由多个可逆噪声块组成,每个噪声块包含三个模块:ϕ、ρ、ω,这些模块是任意的可学习函数。通过前向过程将原始图像扭曲成扭曲图像,后向过程则将扭曲图像恢复到接近原始图像的状态。
  • 训练目标:使得通过INL正向过程 N_{\theta_d}(I_{+}) 处理后的失真图像 I_{+}^{de}尽可能接近于真实失真图像I_-,同时在反向过程N_{\theta_d}^{-1}(I_{-})中,处理后的图像 I_{-}^{de}应尽可能接近原始图像I_+

\mathcal{L}_{\text{dis}}\left(\theta_d\right) = \text{MSE}\left(I_{+}^d, I_{-}\right) + \text{MSE}\left(I_{-}^{de}, I_{+}\right)

  • INL的输入和输出y_{i}^hy_{i}^l分别代表高频和低频组件。y_{i+1}^hy_{i+1}^l是经过处理后的高频和低频组件。

  • 正向过程:公式描述了如何通过正向过程将输入转换为输出,具体公式为如下。其中\phi,\rho, 和\omega是任意函数,通常选择具有良好表示能力的密集块(Dense Block)。 

  • y_{i+1}^{l} = y_{i}^{l} + \varphi_{i}\left(y_{i}^{h}\right):这一步表示低频组件的更新。函数 ϕ 作用于高频组件y_{i}^h,并将结果加到低频组件y_{i}^l上,生成更新后的低频组件y_{i+1}^l

  • y_{i+1}^{h} = y_{i}^{h} \otimes \exp\left(\rho_{i}\left(y_{i+1}^{l}\right)\right) + \omega_{i}\left(y_{i+1}^{l}\right):这一步表示高频组件的更新。ρ函数作用于更新后的低频组件y_{i+1}^l,然后取指数得到一个值,与原始高频组件y_{i}^h逐元素相乘(表示为 \otimes,Hadamard乘积。在矩阵或多维数组的上下文中,逐元素相乘是指两个矩阵或数组相同位置的元素之间的乘法操作。)。ω函数同样作用于y_{i+1}^l,其结果与上述乘积相加,得到最终的高频组件y_{i+1}^h

a. 离散小波变换(Discrete Wavelet Transform,DWT)

离散小波变换是一种用于信号分解的技术,它可以将信号分解成不同尺度(频率)上的组成部分。DWT 利用小波函数来捕捉信号的局部特征,这些小波函数具有不同的尺度和位移版本。

  • 功能DWT 能够将信号分解为低频部分(近似部分)和高频部分(细节部分)。低频部分包含了信号的概貌信息,而高频部分包含了信号的细节信息。
  • 应用:在图像处理中,DWT 常用于图像压缩和降噪,因为它能有效分离图像中的不同特征;在音频处理中,用于分析音频信号中的不同频率成分。
b. 逆离散小波变换(Inverse Discrete Wavelet Transform)

逆离散小波变换是 DWT 的逆过程,它用于从小波系数中重建原始信号。通过 IDWT,可以将 DWT 分解得到的近似系数和细节系数重新合成为原始的信号或图像。

  • 功能IDWT 通过结合低频和高频成分来重建信号。它确保了原始信号可以从其小波系数中准确地恢复。
  • 应用:在图像和信号的重建过程中,IDWT 是必不可少的步骤,特别是在压缩和降噪处理之后,需要恢复原始图像或信号时。

e.冗余信息的生成和利用

在前向编码过程中生成的冗余信息 Rf 在反向解码过程中并不需要,这表明解码过程是“盲”的,即解码器不需要任何额外信息即可从失真图像中提取出水印信息。

 3、损失函数

a.图像损失

图像损失的目的是确保嵌入的水印对原始图像的影响尽可能小,以实现良好的不可见性。这是通过最小化水印图像I_{\text{em}}和原始宿主图像 I_o之间的均方误差(MSE)来实现的。

\mathcal{L}_{\text{image}}(\theta) = \text{MSE}\left(I_o, I_{\text{em}}\right)

其中,I_{\text{em}}相当于f_{\theta}\left(I_o, M\right),这里f_\theta表示前向编码过程,\theta表示模型参数。 

b.消息损失

消息损失的目的是确保即使在图像受到失真后,也能准确地从失真图像I_d中提取出水印信息。这通过最小化提取出的水印M_{ex}和原始水印 M之间的均方误差来实现。

\mathcal{L}_{\text{message}}(\theta) = \text{MSE}\left(M, M_{\text{ex}}\right)

其中,M_{ex}相当于f_{\theta}^{-1}\left(I_d, R^b\right),这里表示反向解码过程,R^b是一个全零矩阵,大小与M 相同。 

c.总损失

\mathcal{L}_{\text{total}} = \lambda_1 \mathcal{L}_{\text{image}} + \lambda_2 \mathcal{L}_{\text{message}}

这里,λ1和 λ2是权重参数,用于调整两个损失部分的相对重要性。 


 

相关文章:

论文阅读 | 基于流模型和可逆噪声层的鲁棒水印框架(AAAI 2023)

Flow-based Robust Watermarking with Invertible Noise Layer for Black-box DistortionsAAAI, 2023,新加坡国立大学&中国科学技术大学本论文提出一种基于流的鲁棒数字水印框架,该框架采用了可逆噪声层来抵御黑盒失真。 一、问题 基于深度神经网络…...

上线跨境电商商城的步骤

上线一个跨境电商商城涉及多个步骤,从前期准备到上线后的维护。以下是一些关键步骤: 1. 市场调研与规划 目标市场分析:研究目标市场的需求、竞争对手和消费者行为。法律法规:了解并遵守目标市场的法律法规,包括税收、…...

Python基础(七)——PyEcharts数据分析(面向对象版)

四、使用PyEcharts数据分析案例(面向对象版) 【前言:为了巩固之前的Python基础知识(一)到(五),并为后续使用Python作为数据处理的好帮手,我们一起来用面向对象的思想来理…...

滚雪球学SpringCloud[5.1讲]: Spring Cloud Config详解

全文目录: 前言1. Spring Cloud Config的基本概念1.1 微服务配置管理的挑战1.2 Spring Cloud Config的架构 2. 配置服务端与客户端的配置2.1 配置服务端的搭建2.2 配置客户端的搭建2.3 环境隔离配置 3. 配置中心与Git的集成3.1 Git仓库的目录结构设计3.2 配置的版本…...

Unity常用随机数算法

Unity的Random.Range介绍 有两个重载: 如果参数存在至少一个浮点数那么将会触发public static float Range(float minInclusive, float maxInclusive); 返回一个范围内的浮点数(包含首尾) 如果参数都是整形则触发public static int Range(int minInclusive, int maxExclusiv…...

dial unix /var/run/docker.sock: connect: permission denied

要解决 permission denied 错误并授予当前用户 sunyuhua 访问 Docker 的权限,您可以按照以下步骤操作: 1. 检查 Docker 服务是否在运行 首先,确保 Docker 服务已经启动: sudo systemctl start docker sudo systemctl enable do…...

Prompt提示词技巧

文章目录 🍊 探索AI内容创作核心:提示词Prompt1 什么是提示词工程?1.1 提示词的原理1.2 提示词工程师的前景1.3 提示词工程师的门槛是否较低?1.4 提示词的未来展望 2 提示词编写的基本技巧3 常见的提示词框架3.1 CO-STAR框架3.2 BORKE框架3.…...

滑动窗口(6)_找到字符串中所有字母异位词

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 滑动窗口(6)_找到字符串中所有字母异位词 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论&#x1f4…...

【无标题】rocket

rocketMQ集群双主双从同步模式(2m-2s-sync)搭建-CSDN博客 集群架构概念 在部署的时候首先要将nameserver启动起来,之后就是将broker启动起来,broker启动起来会将自己的信息注册到nameserver上面。之后再去创建topic,因为发消息的逻辑和收消…...

Maven国内镜像(四种)

配置Maven使用国内镜像是一个常见的做法&#xff0c;因为这样可以显著提高依赖下载的速度并避免网络不稳定带来的问题 在 settings.xml 文件中&#xff0c;需要添加或修改 <mirrors> 标签来指定国内镜像。 以下是几个可用的镜像 1. 阿里云 <mirrors> <mi…...

Linux环境中如何快速修改 JAR 包中的配置文件

在日常的 Java 开发中&#xff0c;我们时常会遇到需要修改 JAR 包中某个配置文件的情况。比如&#xff0c;某些场景下你可能需要调整 application-dev.yml 文件中的配置信息。但解压整个 JAR 包再重新打包会显得比较繁琐。本文将介绍一种快捷的方法&#xff0c;帮助你快速查找并…...

java高频面试题(2024最新)

HashMap使用哪些方法来解决哈希冲突&#xff1f; 使用链地址法&#xff08;使用散列表&#xff09;来链接拥有相同hash值的数据&#xff1b;使用2次扰动函数&#xff08;hash函数&#xff09;来降低哈希冲突的概率&#xff0c;使得数据分布更平均&#xff1b;引入红黑树进一步…...

WEB 编程:使用富文本编辑器 Quill 配合 WebBroker 后端

使用 Delphi 的 WebBroker 框架写 Web Server&#xff0c;需要一个前端的富文本编辑器。 评估了好几个&#xff0c;最后选择 Quill 这个开源的。 官方地址&#xff1a;Quill - Your powerful rich text editor 把前端代码&#xff0c;存储为一个单独的文本文件&#xff0c;方…...

新书出版,大陆首本NestJS图书《NestJS全栈开发解析:快速上手与实践》

新书全栈实战项目&#xff1a;数字门店管理平台开源啦&#x1f389;&#x1f389;&#x1f389; GitHub地址&#xff08;持续更新NestJS企业级实践&#xff09;&#xff1a;欢迎star⭐️⭐️⭐️ 前端ReactTypeScriptVite 后端NestMySQLRedisDocker 前言 对&#xff0c;你没看…...

面试题:react、vue中的key有什么作用?(key的内部原理)

1.虚拟DOM中key的作用: key是虚拟DOM对象的标识&#xff0c;当数据发生变化时&#xff0c;vue会根据【新数据】生成【新的虚拟DOM】随后Vue进行【新虚拟DOM】与【旧虚拟DOM】的差异比较&#xff0c;比较规则如下: 2.对比规则: (1).旧虚拟DOM中找到了与新虚拟DOM相同的key: …...

基于python+django+vue的外卖管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的外…...

初始分布式系统和Redis特点(

&#xff08;一&#xff09;认识redis Redis是一个开源&#xff08;BSD许可&#xff09;&#xff0c;内存存储的数据结构服务器&#xff0c;可用作数据库&#xff0c;高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合&#xff0c;位图&#xff0c;hyperlog…...

计算机毕业设计 家电销售展示平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

Android RecyclerView 缓存机制深度解析与面试题

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 引言 RecyclerView 是 Android 开发中用于展示列表和网格的强大组件。它通过高效的缓存机制&#xff0c;优化了滑动性能和内存使用。本文将深入…...

管道缺陷检测系统源码分享

管道缺陷检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…...

python定时发送邮件的功能如何实现自动化?

Python定时发送邮件教程&#xff1f;如何用Python发送电子邮件&#xff1f; Python定时发送邮件不仅能够帮助我们自动处理日常的邮件发送任务&#xff0c;还能在特定时间点触发邮件发送&#xff0c;确保信息的及时传达。AokSend将详细探讨如何利用Python实现定时发送邮件的自动…...

工业机器人9公里远距离图传模块,无人机低延迟高清视界,跨过距离限制

在科技日新月异的今天&#xff0c;无线通信技术正以未有的速度发展&#xff0c;其中&#xff0c;图传模块作为连接现实与数字世界的桥梁&#xff0c;正逐步展现出其巨大的潜力和应用价值。今天&#xff0c;我们将聚焦一款引人注目的产品——飞睿智能9公里远距离图传模块&#x…...

IEEE-754 32位十六进制数 转换为十进制浮点数

要将 IEEE-754 32位十六进制数 转换为 十进制浮点数&#xff0c;可以使用LabVIEW中的 Type Cast 函数。以下是一些具体步骤&#xff0c;以及相关实例的整理&#xff1a; 实现步骤&#xff1a; 输入十六进制数&#xff1a;在LabVIEW中&#xff0c;首先需要创建一个输入控制器&am…...

XSS跨站脚本攻击及防护

什么是XSS攻击&#xff1f; XSS(Cross-Site Scripting,跨站脚本攻击)是一种代码注入攻击。攻击者在目标网站上注入恶意代码&#xff0c;当用户(被攻击者)登录网站时就会执行这些恶意代码&#xff0c;通过这些脚本可以读取cookie,session tokens&#xff0c;或者网站其他敏感的网…...

利用ClasserLoader来实现jar包加载并调用里面的方法

1.ClasserLoader介绍&#xff1f; classloader顾名思义&#xff0c;即是类加载。虚拟机把描述类的数据从class字节码文件加载到内存&#xff0c;并对数据进行检验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的Java类型&#xff0c;这就是虚拟机的类加载机制。…...

【VUE】快速上手

一、快速上手 创建HTML文件引入vue.js <script src"https://unpkg.com/vue3/dist/vue.global.js"></script> <script src"https://cdn.bootcdn.net/ajax/libs/vue/3.3.4/vue.global.prod.js"></script>按照vue.js的语法编写代码…...

在 Docker 中部署无头 Chrome:在 Browserless 中运行

什么是 Browserless&#xff1f; Browserless 是一款基于云的浏览器解决方案&#xff0c;旨在实现高效的浏览器自动化、网页抓取和测试。 它利用 Nstbrowser 的指纹库&#xff0c;实现随机指纹切换&#xff0c;确保流畅的数据收集和自动化。得益于其强大的云基础设施&#xf…...

Meta-Learning数学原理

文章目录 什么是元学习元学习的目标元学习的类型数学推导1. 传统机器学习的数学表述2. 元学习的基本思想3. MAML 算法推导3.1 元任务设置3.2 内层优化&#xff1a;任务级别学习3.3 外层优化&#xff1a;元级别学习3.4 元梯度计算3.5 最终更新规则 4. 算法合并5. 理解 MAML 的优…...

【图像匹配】基于SURF算法的图像匹配,matlab实现

博主简介&#xff1a;matlab图像代码项目合作&#xff08;扣扣&#xff1a;3249726188&#xff09; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于基于SURF算法的图像匹配&#xff0c;用matlab实现。 一、案例背景和算法介绍 前…...

RocketMQ实战与集群架构详解

目录 一、MQ简介 MQ的作用主要有以下三个方面 二、RocketMQ产品特点 1、RocketMQ介绍 2、RocketMQ特点 三、RocketMQ实战 1、快速搭建RocketMQ服务 2、快速实现消息收发 1. 命令行快速实现消息收发 2. 搭建Maven客户端项目 3、搭建RocketMQ可视化管理服务 4、升级分…...